Мы в твиттере Мы в телеграме!

Провеббер » DataLife Engine » DLE модули » Текстовый рейтинг с Кинопоиска и IMDB

Набор в команду! Ведется набор в команду, для наполнения сайта новым, интересным контентом. Если у тебя есть предложения, свободное время, ты обладаешь интересным контентом, и хочешь поделиться с другими?
Обращайся к нам в ЛС группы Вконтакте.

Текстовый рейтинг с Кинопоиска и IMDB

Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Текстовый рейтинг с Кинопоиска и IMDB.

Текстовый рейтинг с Кинопоиска и IMDB


За основу был взят модуль MSW с сайта 0-web.ru. Публикуется с его разрешения.

Начнем с того, что я не программист и многих вещей не знаю (не понимаю), но очень люблю ковырять чужой код, чтобы для себя слепить что-нибудь интересное.
Модуль выводит текстовые средние значения рейтинга и голосов с Кинопоиска и IMDB. Данные не кешируются! Я не знаю как работать с кешем DLE, если кто-то допишет этот функционал, то мы все будем только рады :)

Автор модуля: MSW | 0-web.ru
Автор незначительной модификации: Quest | iTelepat.ru
Проверено на: Dle 9.3

Установка:

Создайте доп. поле к новостям с фильмами:
Название поля: kp
Описание поля: ID фильма на КиноПоиске
Категория: /*выбрать категории с фильмами*/
Тип поля: одна строка
Значение по умолчанию:

Создайте файл kinopoisk.php с таким содержимым:
<?                                                

if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
}

    $kinopoisk = xfieldsdataload($row['xfields']);
    $kinopoisk['kp'] = preg_replace('#<(.+?)>#', '', $kinopoisk['kp']);
    
    $kinopoisk = $kinopoisk['kp'];
    
    $rating = file_get_contents("http://rating.kinopoisk.ru/{$kinopoisk}.xml");

    preg_match("/kp_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $kp);
    $kino_rating = $kp[2];
    $kino_votes = ($kino_rating) ? $kp[1] : "";
    $kino_votes = $kino_votes;

    preg_match("/imdb_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $imdb);
    $imdb_rating = $imdb[2];
    $imdb_votes = ($imdb_rating) ? $imdb[1] : "";
    $imdb_votes = $imdb_votes;

    if     ($imdb_rating =='') {

        $kino_rate = round(($kino_rating), 1);
        $sum_vote = number_format($kino_votes);
        
    } elseif ($kino_rating =='') {
    
        $kino_rate = round(($imdb_rating), 1);
        $sum_vote = number_format($imdb_votes);
        
    } else {

        $kino_rate = round(($kino_rating+$imdb_rating)/2, 1);
        $sum_vote = number_format(($kino_votes+$imdb_votes)/2);
        
    };

$tpl->set('{kinopoisk}', $kino_rate);
$tpl->set('{kinopoisk_vote}', $sum_vote);

?>


И поместите его к себе в /engine/modules

В файле show.full.php добавьте:
require_once ROOT_DIR.'/engine/modules/kinopoisk.php';


После:
$tpl->set( '[/full-link]', "</a>" );


Используйте в своем fullstory.tpl:
{kinopoisk} - цифровой рейтинг
{kinopoisk_vote} - количество голосов


Дополнительные ссылки на скачивание ТОЛЬКО для зарегистрированных


+7
Просмотры: 9 978 :: Комментарии (14) :: :: Нужна помощь? Задайте вопрос на форуме ::
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1rashpil

  • 21 сентября 2013 17:21
  • Регистрация: 25.12.2009
  • Был(а) онлайн: 4.04.2016
  • Комментариев: 123
  • 0
Интересно, что будет с сайтом, на котором стоит этот модуль, в те редкие моменты, когда кинопоиск падает?)

#2maestro202

  • 21 сентября 2013 21:25
  • Регистрация: 29.11.2009
  • Был(а) онлайн: 5.01.2020
  • Комментариев: 5
  • 0
Также интересует ответ на выше заданный вопрос. Так, как не раз замечал, что кинопоиск лежит...

#3rashpil

  • 21 сентября 2013 22:32
  • Регистрация: 25.12.2009
  • Был(а) онлайн: 4.04.2016
  • Комментариев: 123
  • +1
maestro202, Да сайт вместе с ним лежать будет, вот что будет :)

#4dimster

  • 21 сентября 2013 22:59
  • Регистрация: 6.01.2012
  • Был(а) онлайн: 10.09.2017
  • Комментариев: 188
  • 0
rashpil,
всё так серьезно?)а обойти это не как?

--------------------

#5Quest1984

  • 22 сентября 2013 06:37
  • Регистрация: 23.09.2010
  • Был(а) онлайн: 18.04.2020
  • Комментариев: 84
  • 0
Будет, будет сайт лежать. Нужно кеширование дописывать, я через костыль сделал. Но местные программеры меня заклюют :) Вот новый код для kinopoisk.php
<?

if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}

$cacheid = $row['id'];

$all = unserialize(dle_cache( "kino_rating"."_".$cacheid, $config['skin'] ));
$kino_rating = $all[0];
$kino_votes = $all[1];
$imdb_rating = $all[2];
$imdb_votes = $all[3];

if ($all =='') {

$all = array();

$kinopoisk = xfieldsdataload($row['xfields']);
$kinopoisk['kp'] = preg_replace('#<(.+?)>#', '', $kinopoisk['kp']);

$kinopoisk = $kinopoisk['kp'];

$rating = file_get_contents("http://rating.kinopoisk.ru/{$kinopoisk}.xml");

preg_match("/kp_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $kp);
$kino_rating = $kp[2];
$kino_votes = ($kino_rating) ? $kp[1] : "";
$kino_votes = $kino_votes;

preg_match("/imdb_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $imdb);
$imdb_rating = $imdb[2];
$imdb_votes = ($imdb_rating) ? $imdb[1] : "";
$imdb_votes = $imdb_votes;

$all = array( $kino_rating, $kino_votes, $imdb_rating, $imdb_votes);

create_cache( "kino_rating"."_".$cacheid, serialize($all), $config['skin'] );

}

if ($imdb_rating =='' or $imdb_rating =='0') {

$kino_rate = round(($kino_rating), 1);
$sum_vote = number_format($kino_votes);

} elseif ($kino_rating =='0' or $kino_rating =='') {

$kino_rate = round(($imdb_rating), 1);
$sum_vote = number_format($imdb_votes);

} else {

$kino_rate = round(($kino_rating+$imdb_rating)/2, 1);
$sum_vote = number_format(($kino_votes+$imdb_votes)/2);

};

$tpl->set('{kinopoisk}', $kino_rate);
$tpl->set('{kinopoisk_vote}', $sum_vote);

?>

--------------------

#6Quest1984

  • 22 сентября 2013 07:08
  • Регистрация: 23.09.2010
  • Был(а) онлайн: 18.04.2020
  • Комментариев: 84
  • 0
Еще надо прикрутить таймаут для file_get_contents, вроде так:

<?

if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}

$cacheid = $row['id'];

$all = unserialize(dle_cache( "kino_rating"."_".$cacheid, $config['skin'] ));
$kino_rating = $all[0];
$kino_votes = $all[1];
$imdb_rating = $all[2];
$imdb_votes = $all[3];

$timeout = stream_context_create( array (
'http' => array(
'timeout' => 1
)
)
);

if ($all =='') {

$all = array();

$kinopoisk = xfieldsdataload($row['xfields']);
$kinopoisk['kp'] = preg_replace('#<(.+?)>#', '', $kinopoisk['kp']);

$kinopoisk = $kinopoisk['kp'];

$rating = file_get_contents("http://rating.kinopoisk.ru/{$kinopoisk}.xml", 0, $timeout);

preg_match("/kp_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $kp);
$kino_rating = $kp[2];
$kino_votes = ($kino_rating) ? $kp[1] : "";
$kino_votes = $kino_votes;

preg_match("/imdb_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $imdb);
$imdb_rating = $imdb[2];
$imdb_votes = ($imdb_rating) ? $imdb[1] : "";
$imdb_votes = $imdb_votes;

$all = array( $kino_rating, $kino_votes, $imdb_rating, $imdb_votes);

create_cache( "kino_rating"."_".$cacheid, serialize($all), $config['skin'] );

}

if ($imdb_rating =='' or $imdb_rating =='0') {

$kino_rate = round(($kino_rating), 1);
$sum_vote = number_format($kino_votes);

} elseif ($kino_rating =='0' or $kino_rating =='') {

$kino_rate = round(($imdb_rating), 1);
$sum_vote = number_format($imdb_votes);

} else {

$kino_rate = round(($kino_rating+$imdb_rating)/2, 1);
$sum_vote = number_format(($kino_votes+$imdb_votes)/2);

};

$tpl->set('{kinopoisk}', $kino_rate);
$tpl->set('{kinopoisk_vote}', $sum_vote);

?>

--------------------

#7mulya

  • 24 сентября 2013 19:53
  • Регистрация: 18.03.2011
  • Был(а) онлайн: 19.08.2019
  • Комментариев: 12
  • 0
кто небуть проверял ??

#8Quest1984

  • 1 октября 2013 13:29
  • Регистрация: 23.09.2010
  • Был(а) онлайн: 18.04.2020
  • Комментариев: 84
  • 0
mulya, в моем последнем комментарии правильный вариант. Протестировано и проверено. Все кешируется - нареканий нет.

--------------------

#9dimon212909

  • 2 октября 2013 03:22
  • Регистрация: 2.10.2013
  • Был(а) онлайн: 25.11.2013
  • Комментариев: 6
  • 0
Оооо, вот это подарок)))

file_get_contents

#10Quest1984

  • 2 октября 2013 05:47
  • Регистрация: 23.09.2010
  • Был(а) онлайн: 18.04.2020
  • Комментариев: 84
  • +4
Меня начинает бесить потихоньку местный контингент комментаторов. Почему? Одни, как и я, плохо разбираются в программировании, но пытаются что-то понять (узнать новое, посмотреть на свои ошибки и т.д.), вторые же пытаются всячески высмеять первых. Это сайт для задрочества новичков?
Можно просто указать на ошибки, к чему они могут привести и т.п. Помочь в чем-то, подсказать... Нет же, мы все такие умные, что пишем ахинею, которая укладывается в составлении 3-х слов в предложение! Вы для этого специально сторожите новости на сайте, чтобы подколоть, унизить, ткнуть носом? Я вас не понимаю.

--------------------

#11icesewer

  • 29 декабря 2013 17:26
  • Регистрация: 2.03.2013
  • Был(а) онлайн: 26.07.2015
  • Комментариев: 2
  • 0
Всё сделал по инструкции, в fullstory воткнул код:
{kinopoisk}{kinopoisk_vote}

И вместе рейтинга показывает лишь "0" и всё) в чем проблема?

#12Quest1984

  • 30 декабря 2013 11:40
  • Регистрация: 23.09.2010
  • Был(а) онлайн: 18.04.2020
  • Комментариев: 84
  • 0
icesewer,
Код взяли из моего последнего комментария?

--------------------

#13tukunf

  • 26 января 2014 22:31
  • Регистрация: 26.01.2014
  • Был(а) онлайн: 29.01.2014
  • Комментариев: 1
  • 0
А если кинопоиск вообще не нужен, нужен только IMDB, что нужно прописывать?

#14tor4una

  • 17 апреля 2020 18:55
  • Регистрация: 22.08.2019
  • Был(а) онлайн: 7.11.2020
  • Комментариев: 1
  • 0
Quest1984,

А вот так не хочешь?????

if(file_exists($rating)) {
$refresh= time() - @filemtime($rating);
if($refresh < 86400) {
readfile($rating);
exit;
}
}

drink

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Архив новостей
Ноябрь 2024 (9)
Октябрь 2024 (169)
Сентябрь 2024 (13)
Август 2024 (60)
Июль 2024 (12)
Июнь 2024 (30)

Последние комментарии: