Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Авто рейтинг с кинопоиска

Тема в разделе "Вопросы- ответы", создана пользователем sergid, 4 янв 2019.

04.01.19 в 19:15
16.05.19 в 18:58
36
2.310
0
  1. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Всем привет мастера и любители. Буквально вчера встал скрипт, перестал выводится рейтинг кинопоиска. На самом деле довольно красивый вывод, и не сложный скрипт. Но я лично не силён в этом. Думаю и проблема не сложна. Сам кинопоиск ссылки на вывод не менял, ну буквально на пяти сайтах он не работает. Выложу сам JS и вывод. Стили также кину кому пригодится.


    СКРИПТ и СТИЛИ ПРИКРЕПИЛ.

    ВЫВОД: <div class="kinopoisk" data-movie="[xfvalue_kp]" data-order='["imdb", "kinopoisk"]'></div>
     

    Вложения:

    Последнее редактирование: 4 янв 2019
  2. PunPun

    PunPun VIP Кинотрафик v2

    Сообщения:
    7.403
    Симпатии:
    3.664
    Лучших ответов:
    32
    Я не думаю что тут нужен этот код
    Код:
    $(document).ready(function(){
        $(".tabsms").lightTabs();
        var urlll = $(".ms-content").first().attr("data-show_player");
        var ifrm = '<iframe src=\"' + urlll + '\" frameborder=\"0\" scrolling=\"no\" width=\"607\" height=\"360\" allowfullscreen=\"\"></iframe>';
        $(".ms-content").first().html(ifrm);
    });
    
     
  3. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Так проблема в нём что ли)
     
  4. PunPun

    PunPun VIP Кинотрафик v2

    Сообщения:
    7.403
    Симпатии:
    3.664
    Лучших ответов:
    32
    А что если у кого-то так стиль будет называться? Этот код не нужен для работы этого скрипта, его бы удалить.
     
  5. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Удалил. Просто проблема не в этом. Скрипт не работает, загадочная проблема. Спецу уже одному отписался, жду ответа.
     
  6. PunPun

    PunPun VIP Кинотрафик v2

    Сообщения:
    7.403
    Симпатии:
    3.664
    Лучших ответов:
    32
    Important EOL Notice: As of Thursday, Jan. 3, 2019, the weather.yahooapis.com and query.yahooapis.com for Yahoo Weather API will be retired.
    Weather - Yahoo Developer Network
    А в скрипте запрос идет на https://query.yahooapis.com/v1/public/yql а этот сервис Yahoo закрыл.
     
  7. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    То есть он через него брал с кино поиска данные?
     
  8. PunPun

    PunPun VIP Кинотрафик v2

    Сообщения:
    7.403
    Симпатии:
    3.664
    Лучших ответов:
    32
    Он преобразовывал xml в json, вроде так.
     
  9. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Так они вообще закрылись, или сменили адрес? Может возможно поменять на другой урл?
     
  10. PunPun

    PunPun VIP Кинотрафик v2

    Сообщения:
    7.403
    Симпатии:
    3.664
    Лучших ответов:
    32
    Я все выше написал.
     
  11. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Ещё последний вопросик. Я так понимаю там был скрипт, который преобразовывал код. Вы знаете что это за скрипт, преобразовывает xml в json
     
  12. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Кстати вот более понятный код по пунктам.

    Код:
    ;(function( $ ) {
    
        /**
         * Установки по умолчанию
         *
         * @type {Object}
         */
        var settings = {
            "movie"  : false,
            "url"    : "https://rating.kinopoisk.ru",
            "range"  : 10,
            "fix"    : 1,
            "order"  : ["kinopoisk", "imdb"],
            "kinopoisk_template": '<div>' +
                    '<span class="kp_description">Рейтинг <a href="https://kinopoisk.ru" target="new">Кинопоиска</a>:</span>' +
                    '<span class="kp_rating" title="Проголосовало $vote">$rating</span>' +
                    '<span class="kp_stars">$stars</span></div>',
            "imdb_template": '<div>' +
                    '<span class="kp_description">Рейтинг <a href="http://imdb.com" target="new">IMDB</a>:</span>' +
                    '<span class="kp_rating" title="Проголосовало $vote">$rating</span>' +
                    '<span class="kp_stars">$stars</span></div>',
            "cache_time" : 86400000,
            "no_data": "Нет данных",
            "show_zero_rating": true
        };
    
        /**
         * Методы плагина
         *
         * @type {Object}
         */
        var methods = {
    
            /**
             * Инициализация плагина
             *
             * @param options {String[]} Массив с параметрами плагина
             *
             * @return {*}
             */
            init : function(options) {
                return this.each(function() {
                    var $this = $(this);
                    // Атрибуты data перекрывают settings, а options перекрывает data
                    var params = $.extend({}, settings, $this.data(), options);
                    // Если вместо идентификатора передали ссылку
                    for (var i in params) {
                        if (i == 'movie') {
                            var movie = params[i].toString().split('/');
                            if (movie.length > 1) {
                                params[i] = movie[4];
                            } else {
                                params[i] = movie[0];
                            }
                        }
                    }
                    $this.data({'params': params}); // Записываем параметры элемента
                    $this.kinopoisk('getRating');
                });
            },
            /**
             * Получение рейтинга с сайта kinopoisk.ru
             *
             * @return {*}
             */
            getRating: function() {
                var el = $(this);
                var params = el.data('params');
                if (!params.movie) {
                    throw 'Не указан идентификатор фильма на кинопоиске (data-movie).';
                }
                // Проверяем кеш
                var movie_xml = methods._getCache(el, params.movie);
                if (movie_xml) {
                    return methods._showRating(el, movie_xml);
                } else {
                    $.ajax(
                        {
                            type: 'GET',
                            url: 'http://query.yahooapis.com/v1/public/yql?q='
                                    + encodeURIComponent('select * from xml where url="' + params.url + '/' + params.movie
                                    + '.xml"') + '&format=xml&callback=?',
                            dataType: 'json',
                            success: function(data) {
                                movie_xml = methods._setCache(el, params.movie, data.results[0]); // Кешируем данные
                                return methods._showRating(el, movie_xml);
                            },
                            error: function(data) {
                                console.log(data);
                                $.error(data.responseText);
                            }
                        }
                    );
                }
            },
            /**
             * Получение значения из кеша.
             *
             * @param el    {Object}  jQuery объект текущего элемента
             * @param movie {Integer} Идентификатор фильма
             *
             * @return {*}
             * @private
             */
            _getCache: function(el, movie) {
                var params = el.data('params');
                var timestamp = new Date().getTime();
                var cache = localStorage.getItem("movie_" + movie);
                if (!cache) {
                    return false;
                } else {
                    var xml_doc      = $.parseXML(cache);
                    var $xml         = $(xml_doc);
                    if ((timestamp - $xml.find("cache_time").text()) > params.cache_time) {
                        // Если кеш истёк, чистим его
                        localStorage.removeItem("movie_" + movie);
                        return false;
                    }
                }
                return cache;
            },
            /**
             * Установка кеша
             *
             * @param el    {Object}  Объект jQuery
             * @param movie {Integer} Идентификатор фильма
             * @param data  {String}  XML с ответом сервера kinopoisk
             *
             * @return {String}
             * @private
             */
            _setCache: function(el, movie, data) {
                var params = el.data('params');
                var timestamp = new Date().getTime();
                var cache = localStorage.getItem("movie_" + movie);
                var movie_xml = "<result>" + data +  "<cache_time>" + timestamp + "</cache_time></result>";
                if (!cache) {
                    localStorage.setItem("movie_" + movie, movie_xml);
                } else {
                    var xml_doc      = $.parseXML(cache);
                    var $xml         = $(xml_doc);
                    if ((timestamp - $xml.find("cache_time").text()) > params.cache_time) {
                        // Если разница во времени более суток, то обновляем кеш
                        localStorage.setItem("movie_" + movie, movie_xml);
                    } else {
                        movie_xml = cache;
                    }
                }
                return movie_xml;
            },
            /**
             * Показ рейтинга
             *
             * @param el {Object}   jQuery объект
             * @param data {String} XML с ответом сервера kinopoisk
             *
             * @private
             */
            _showRating: function(el, data) {
                var params = el.data('params');
                if (!data) {
                    throw 'Проверьте правильность url "' + params.url + '"';
                }
                var xml_doc      = $.parseXML(data);
                var $xml         = $(xml_doc);
                var $kp_rating   = $xml.find("kp_rating");
                var $imdb_rating = $xml.find("imdb_rating");
                // Если был указан левый movie_id
                if ($kp_rating.text() == 0 && $kp_rating.attr("num_vote") == 0) {
                    if (!params.no_data) {
                        return el;
                    } else {
                        return el.html('<span class="kp_container">' + params.no_data + '</span>');
                    }
    
                }
                // Округление рейтинга
                $kp_rating.text(methods.__roundRating($kp_rating, params.fix));
                $imdb_rating.text(methods.__roundRating($imdb_rating, params.fix));
                // Получение звёзд
                $kp_rating.stars   = methods._getStar($kp_rating.text(), params.range);
                $imdb_rating.stars = methods._getStar($imdb_rating.text(), params.range);
                var kp_tpl = methods._getTemplate(params.kinopoisk_template, $kp_rating);
                var imdb_tpl = methods._getTemplate(params.imdb_template, $imdb_rating);
                if (params.show_zero_rating == false) {
                    if ($kp_rating.text() == 0) {
                        kp_tpl = "";
                    }
                    if ($imdb_rating.text() == 0) {
                        imdb_tpl = "";
                    }
                }
                var ratings = {
                    "kinopoisk": kp_tpl,
                    "imdb": imdb_tpl
                };
                var text = "";
                for (var i in params.order) if (params.order.hasOwnProperty(i)) {
                    if (typeof ratings[params.order[i]] != 'undefined') {
                        text += ratings[params.order[i]];
                    }
                }
                return el.hide().html('<span class="kp_container">' + text + '</span>').fadeIn();
            },
            /**
             * Округление рейтинга
             *
             * @param rating {Object} Объект рейтинга
             * @param fix    {int}    Количество знаков после запятой
             * @private
             */
            __roundRating: function(rating, fix) {
                return Math.round(parseFloat(rating.text()) * Math.pow(10, fix)) / Math.pow(10, fix);
            },
            /**
             * Шаблон отображения
             *
             * @param template  {String} Шаблон
             * @param $rating   {Object} Объект рейтинга
             *
             * @return {String}
             * @private
             */
            _getTemplate: function(template, $rating) {
                return template
                    .replace("$rating", $rating.text())
                    .replace("$vote", $rating.attr("num_vote"))
                    .replace("$stars", $rating.stars);
            },
            /**
             * Отображение звёзд
             *
             * @param rating {FLoat}   Рейтинг
             * @param range  {Integer} Диапазон звёздности
             *
             * @return {String}
             * @private
             */
            _getStar: function(rating, range) {
                var star = "";
                var round_rating = Math.round(rating * range / 10);
                for (var i = 1; i <= range; i++) {
                    if (i <= round_rating) {
                        star += "<span>&#9733;</span>";
                    } else {
                        star += "<span>&#9734;</span>";
                    }
                }
                return star;
            }
        };
    
        $.fn.kinopoisk = function(method) {
            try {
                if (methods[method]) {
                    if (method.charAt(0) == "_") {
                        throw "Нельзя вызывать приватный метод";
                    }
                    return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
                } else if (typeof method === 'object' || ! method) {
                    return methods.init.apply(this, arguments);
                } else {
                    throw 'Метод ' +  method + ' не найден';
                }
            } catch(e) {
                $.error(e);
            }
        };
    
    })(jQuery);
    
    $(document).ready(function() {
        $(".kinopoisk").kinopoisk();
    });
    
     
  13. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
     

    Вложения:

  14. ProfitGet

    ProfitGet PRO Users

    Сообщения:
    1.511
    Симпатии:
    126
    Лучших ответов:
    1
    А аналоги есть? Удобный сервис был. Или только php юзать?
     
  15. igrovik

    igrovik Местный

    Сообщения:
    1.007
    Симпатии:
    292
    Лучших ответов:
    8
    Чем не устраивает прямая ссылка получения рейтинга ? КиноПоиск — Все фильмы планеты
    Конечно нужно разбирать либо с помощью js либо через php.
     
  16. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Нашли аналоги?
     
  17. ProfitGet

    ProfitGet PRO Users

    Сообщения:
    1.511
    Симпатии:
    126
    Лучших ответов:
    1
    Мне для других целей, рейтинг кинопоиска не интересует. Прогер настраивал давно, что-то говорил про CORS-запросы, типо без php никак, но потом сообразил как-то через сервис яхо тащить инфу... Вот теперь думаю, что делать :)
    Яхо то закрылась совсем...
     
  18. TopicStarter Overlay
    sergid

    sergid Забанен

    Сообщения:
    157
    Симпатии:
    6
    Лучших ответов:
    0
    Там вывод красивый, звёздами. Блин у меня нет примера сейчас показать, как он работал.
     
  19. XemorDio

    XemorDio Бывалый

    Сообщения:
    114
    Симпатии:
    1
    Лучших ответов:
    0
    Ребят, у кого-нибудь рейтинг работает? Я гляжу уже на несколько сайтах тупо не работает, и у меня тоже..
     
  20. hent4iboys

    hent4iboys Забанен

    Сообщения:
    694
    Симпатии:
    92
    Лучших ответов:
    2
    ты тему вообще читал?-_-
     
Похожие темы
  1. Sistemos
    Ответов:
    32
    Просмотров:
    7.933
  2. never3d22
    Ответов:
    6
    Просмотров:
    3.001
  3. Webster
    Ответов:
    5
    Просмотров:
    3.099
  4. zis-test
    Ответов:
    1
    Просмотров:
    386
Загрузка...