96 lines
4.0 KiB
Python
96 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
||
#
|
||
# Russian metadata plugin for Plex, which uses http://www.kinopoisk.ru/ to get the tag data.
|
||
# Плагин для обновления информации о фильмах использующий КиноПоиск (http://www.kinopoisk.ru/).
|
||
# Copyright (C) 2012 Yevgeny Nyden
|
||
#
|
||
# This program is free software; you can redistribute it and/or
|
||
# modify it under the terms of the GNU General Public License
|
||
# as published by the Free Software Foundation; either version 2
|
||
# of the License, or (at your option) any later version.
|
||
#
|
||
# This program is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with this program; if not, write to the Free Software
|
||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
#
|
||
# @author zhenya (Yevgeny Nyden)
|
||
# @version 1.52
|
||
# @revision 148
|
||
|
||
import common
|
||
import pageparser
|
||
import LOGGER
|
||
import pluginsettings as S
|
||
from translit import provide_unicode
|
||
|
||
|
||
IS_DEBUG = True # TODO - DON'T FORGET TO SET IT TO FALSE FOR A DISTRO.
|
||
|
||
# Plugin preferences.
|
||
# When changing default values here, also update the DefaultPrefs.json file.
|
||
PREFS = common.Preferences(
|
||
('kinopoisk_pref_max_posters', S.KINOPOISK_PREF_DEFAULT_MAX_POSTERS),
|
||
('kinopoisk_pref_max_art', S.KINOPOISK_PREF_DEFAULT_MAX_ART),
|
||
('kinopoisk_pref_get_all_actors', S.KINOPOISK_PREF_DEFAULT_GET_ALL_ACTORS),
|
||
('kinopoisk_pref_imdb_support', S.KINOPOISK_PREF_DEFAULT_IMDB_SUPPORT),
|
||
(None, None),
|
||
('kinopoisk_pref_imdb_rating', S.KINOPOISK_PREF_DEFAULT_IMDB_RATING),
|
||
('kinopoisk_pref_kp_rating', S.KINOPOISK_PREF_DEFAULT_KP_RATING))
|
||
|
||
|
||
def Start():
|
||
LOGGER.Info('***** START ***** %s' % common.USER_AGENT)
|
||
PREFS.readPluginPreferences()
|
||
|
||
|
||
def ValidatePrefs():
|
||
LOGGER.Info('***** updating preferences...')
|
||
PREFS.readPluginPreferences()
|
||
|
||
|
||
class KinoPoiskRuAgent():
|
||
name = 'KinoPoiskRu'
|
||
primary_provider = True
|
||
fallback_agent = False
|
||
accepts_from = ['com.plexapp.agents.localmedia']
|
||
contributes_to = None
|
||
parser = pageparser.PageParser(
|
||
LOGGER, common.HttpUtils(S.ENCODING_KINOPOISK_PAGE, pageparser.USER_AGENT), IS_DEBUG)
|
||
|
||
|
||
# #############################################################################
|
||
############################# S E A R C H ####################################
|
||
##############################################################################
|
||
def search(self, results, media, lang, manual=False):
|
||
""" Searches for matches on KinoPoisk using the title and year
|
||
passed via the media object. All matches are saved in a list of results
|
||
as MetadataSearchResult objects. For each results, we determine a
|
||
page id, title, year, and the score (how good we think the match
|
||
is on the scale of 1 - 100).
|
||
"""
|
||
LOGGER.Debug('SEARCH START <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')
|
||
try:
|
||
mediaName = media['name'].decode('utf-8')
|
||
except:
|
||
mediaName = media['name']
|
||
mediaYear = media['year']
|
||
LOGGER.Debug('searching for name="%s", year="%s"...' %
|
||
(mediaName, str(mediaYear)))
|
||
|
||
# Look for matches on KinoPisk (result is returned as an array of tuples [kinoPoiskId, title, year, score]).
|
||
titleResults = KinoPoiskRuAgent.parser.fetchAndParseSearchResults(mediaName, mediaYear)
|
||
for titleResult in titleResults:
|
||
results.append((titleResult[0], titleResult[1], titleResult[2], lang, titleResult[3]))
|
||
|
||
# Sort results according to their score (Сортируем результаты).
|
||
LOGGER.Debug('SEARCH END <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')
|
||
return results
|
||
|
||
#k=KinoPoiskRuAgent()
|
||
|
||
#print str(k.search([],{'name':'Django Unchained','year':'2012'},'English')) |