prowebber.ru - Тут есть все для настоящих вебмастеров

Чтение RSS Мы в твиттере
«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

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

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


Данный материал предоставлен сайтом ProWebber.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
У нас вы можете скачать бесплатно Текстовый рейтинг с Кинопоиска и 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
Просмотры: 6874 VIP ProWebber | Комментарии (13)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1rashpil

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

0

#2maestro202

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

0

#3rashpil

  • 21 сентября 2013 22:32
  • Регистрация: 25.12.2009
  • ICQ: --
  • Комментариев: 125
maestro202, Да сайт вместе с ним лежать будет, вот что будет :)

+1

#4dimster

  • 21 сентября 2013 22:59
  • Регистрация: 6.01.2012
  • ICQ: --
  • Комментариев: 190
rashpil,
всё так серьезно?)а обойти это не как?

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

0

#5Quest1984

  • 22 сентября 2013 06:37
  • Регистрация: 23.09.2010
  • ICQ: 4054645
  • Комментариев: 85
Будет, будет сайт лежать. Нужно кеширование дописывать, я через костыль сделал. Но местные программеры меня заклюют :) Вот новый код для 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);

?>

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

0

#6Quest1984

  • 22 сентября 2013 07:08
  • Регистрация: 23.09.2010
  • ICQ: 4054645
  • Комментариев: 85
Еще надо прикрутить таймаут для 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);

?>

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

0

#7mulya

  • 24 сентября 2013 19:53
  • Регистрация: 18.03.2011
  • ICQ: --
  • Комментариев: 12
кто небуть проверял ??

0

#8Quest1984

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

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

0

#9dimon212909

  • 2 октября 2013 03:22
  • Регистрация: 2.10.2013
  • ICQ: --
  • Комментариев: 6
Оооо, вот это подарок)))

file_get_contents

0

#10Quest1984

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

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

+4

#11icesewer

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

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

0

#12Quest1984

  • 30 декабря 2013 11:40
  • Регистрация: 23.09.2010
  • ICQ: 4054645
  • Комментариев: 85
icesewer,
Код взяли из моего последнего комментария?

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

0

#13tukunf

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

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

Max-energy.top - Заработок на электросчетчиках;)

Skripters.info - все для вебмастера. Только эксклюзивный контент.

Создание шаблонов DLE, быстро и недорого! 3wave.com.ua

Бро лей на лучшую партнёрку

Почти бесплатный VDS хостинг!

http://autozoom93.ru

Строительство каркасных домов

autozoom93.ru


Продвижение сайта недорого

Создание сайтов. Создание и продвижение сайтов

cosmovit.com


Убрать всплывающие окна

Изготовление и установка окон из ПВХ. Производитель окон и дверей

всплывающие-окна.рф


Поддержи сайт
Скрипты, cms, шаблоны, статьи по раскрутке

Опросы

Как часто вы бываете на сайте?

Захожу 1-2 раза в день
1-2 часа в сутки
Более 2 часов
Почти целый день тут smile

Архив новостей
Ноябрь 2016 (7)
Октябрь 2016 (10)
Сентябрь 2016 (8)
Август 2016 (11)
Июль 2016 (14)
Июнь 2016 (17)

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

Искать людей

Ваши переписки