174 lines
9.6 KiB
Python
174 lines
9.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from core.tmdb import Tmdb
|
|
from platformcode import logger
|
|
|
|
|
|
class InfoWindow(object):
|
|
otmdb = None
|
|
item_title = ""
|
|
item_serie = ""
|
|
item_temporada = 0
|
|
item_episodio = 0
|
|
result = {}
|
|
|
|
@staticmethod
|
|
def get_language(lng):
|
|
# Cambiamos el formato del Idioma
|
|
languages = {
|
|
'aa': 'Afar', 'ab': 'Abkhazian', 'af': 'Afrikaans', 'ak': 'Akan', 'sq': 'Albanian', 'am': 'Amharic',
|
|
'ar': 'Arabic', 'an': 'Aragonese', 'as': 'Assamese', 'av': 'Avaric', 'ae': 'Avestan',
|
|
'ay': 'Aymara', 'az': 'Azerbaijani', 'ba': 'Bashkir', 'bm': 'Bambara', 'eu': 'Basque',
|
|
'be': 'Belarusian', 'bn': 'Bengali', 'bh': 'Bihari languages', 'bi': 'Bislama',
|
|
'bo': 'Tibetan', 'bs': 'Bosnian', 'br': 'Breton', 'bg': 'Bulgarian', 'my': 'Burmese',
|
|
'ca': 'Catalan; Valencian', 'cs': 'Czech', 'ch': 'Chamorro', 'ce': 'Chechen', 'zh': 'Chinese',
|
|
'cu': 'Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic',
|
|
'cv': 'Chuvash', 'kw': 'Cornish', 'co': 'Corsican', 'cr': 'Cree', 'cy': 'Welsh',
|
|
'da': 'Danish', 'de': 'German', 'dv': 'Divehi; Dhivehi; Maldivian', 'nl': 'Dutch; Flemish',
|
|
'dz': 'Dzongkha', 'en': 'English', 'eo': 'Esperanto',
|
|
'et': 'Estonian', 'ee': 'Ewe', 'fo': 'Faroese', 'fa': 'Persian', 'fj': 'Fijian',
|
|
'fi': 'Finnish', 'fr': 'French', 'fy': 'Western Frisian', 'ff': 'Fulah',
|
|
'Ga': 'Georgian', 'gd': 'Gaelic; Scottish Gaelic', 'ga': 'Irish', 'gl': 'Galician',
|
|
'gv': 'Manx', 'el': 'Greek, Modern (1453-)', 'gn': 'Guarani', 'gu': 'Gujarati',
|
|
'ht': 'Haitian; Haitian Creole', 'ha': 'Hausa', 'he': 'Hebrew', 'hz': 'Herero', 'hi': 'Hindi',
|
|
'ho': 'Hiri Motu', 'hr': 'Croatian', 'hu': 'Hungarian', 'hy': 'Armenian', 'ig': 'Igbo',
|
|
'is': 'Icelandic', 'io': 'Ido', 'ii': 'Sichuan Yi; Nuosu', 'iu': 'Inuktitut',
|
|
'ie': 'Interlingue; Occidental', 'ia': 'Interlingua (International Auxiliary Language Association)',
|
|
'id': 'Indonesian', 'ik': 'Inupiaq', 'it': 'Italian', 'jv': 'Javanese',
|
|
'ja': 'Japanese', 'kl': 'Kalaallisut; Greenlandic', 'kn': 'Kannada', 'ks': 'Kashmiri',
|
|
'ka': 'Georgian', 'kr': 'Kanuri', 'kk': 'Kazakh', 'km': 'Central Khmer', 'ki': 'Kikuyu; Gikuyu',
|
|
'rw': 'Kinyarwanda', 'ky': 'Kirghiz; Kyrgyz', 'kv': 'Komi', 'kg': 'Kongo', 'ko': 'Korean',
|
|
'kj': 'Kuanyama; Kwanyama', 'ku': 'Kurdish', 'lo': 'Lao', 'la': 'Latin', 'lv': 'Latvian',
|
|
'li': 'Limburgan; Limburger; Limburgish', 'ln': 'Lingala', 'lt': 'Lithuanian',
|
|
'lb': 'Luxembourgish; Letzeburgesch', 'lu': 'Luba-Katanga', 'lg': 'Ganda', 'mk': 'Macedonian',
|
|
'mh': 'Marshallese', 'ml': 'Malayalam', 'mi': 'Maori', 'mr': 'Marathi', 'ms': 'Malay', 'Mi': 'Micmac',
|
|
'mg': 'Malagasy', 'mt': 'Maltese', 'mn': 'Mongolian', 'na': 'Nauru',
|
|
'nv': 'Navajo; Navaho', 'nr': 'Ndebele, South; South Ndebele', 'nd': 'Ndebele, North; North Ndebele',
|
|
'ng': 'Ndonga', 'ne': 'Nepali', 'nn': 'Norwegian Nynorsk; Nynorsk, Norwegian',
|
|
'nb': 'Bokmål, Norwegian; Norwegian Bokmål', 'no': 'Norwegian', 'oc': 'Occitan (post 1500)',
|
|
'oj': 'Ojibwa', 'or': 'Oriya', 'om': 'Oromo', 'os': 'Ossetian; Ossetic', 'pa': 'Panjabi; Punjabi',
|
|
'pi': 'Pali', 'pl': 'Polish', 'pt': 'Portuguese', 'ps': 'Pushto; Pashto', 'qu': 'Quechua',
|
|
'ro': 'Romanian; Moldavian; Moldovan', 'rn': 'Rundi', 'ru': 'Russian', 'sg': 'Sango', 'rm': 'Romansh',
|
|
'sa': 'Sanskrit', 'si': 'Sinhala; Sinhalese', 'sk': 'Slovak', 'sl': 'Slovenian', 'se': 'Northern Sami',
|
|
'sm': 'Samoan', 'sn': 'Shona', 'sd': 'Sindhi', 'so': 'Somali', 'st': 'Sotho, Southern', 'es': 'Spanish',
|
|
'sc': 'Sardinian', 'sr': 'Serbian', 'ss': 'Swati', 'su': 'Sundanese', 'sw': 'Swahili', 'sv': 'Swedish',
|
|
'ty': 'Tahitian', 'ta': 'Tamil', 'tt': 'Tatar', 'te': 'Telugu', 'tg': 'Tajik', 'tl': 'Tagalog',
|
|
'th': 'Thai', 'ti': 'Tigrinya', 'to': 'Tonga (Tonga Islands)', 'tn': 'Tswana', 'ts': 'Tsonga',
|
|
'tk': 'Turkmen', 'tr': 'Turkish', 'tw': 'Twi', 'ug': 'Uighur; Uyghur', 'uk': 'Ukrainian',
|
|
'ur': 'Urdu', 'uz': 'Uzbek', 've': 'Venda', 'vi': 'Vietnamese', 'vo': 'Volapük',
|
|
'wa': 'Walloon', 'wo': 'Wolof', 'xh': 'Xhosa', 'yi': 'Yiddish', 'yo': 'Yoruba', 'za': 'Zhuang; Chuang',
|
|
'zu': 'Zulu'}
|
|
|
|
return languages.get(lng, lng)
|
|
|
|
def get_scraper_data(self, data_in):
|
|
self.otmdb = None
|
|
# logger.debug(str(data_in))
|
|
|
|
if self.listData:
|
|
# Datos comunes a todos los listados
|
|
infoLabels = self.scraper().get_infoLabels(origen=data_in)
|
|
|
|
if "original_language" in infoLabels:
|
|
infoLabels["language"] = self.get_language(infoLabels["original_language"])
|
|
if "vote_average" in data_in and "vote_count" in data_in:
|
|
infoLabels["puntuacion"] = str(data_in["vote_average"]) + "/10 (" + str(data_in["vote_count"]) + ")"
|
|
|
|
self.result = infoLabels
|
|
|
|
def start(self, handler, data, caption="Información del vídeo", item=None, scraper=Tmdb):
|
|
# Capturamos los parametros
|
|
self.caption = caption
|
|
self.item = item
|
|
self.indexList = -1
|
|
self.listData = []
|
|
self.handler = handler
|
|
self.scraper = scraper
|
|
|
|
logger.debug(data)
|
|
if type(data) == list:
|
|
self.listData = data
|
|
self.indexList = 0
|
|
data = self.listData[self.indexList]
|
|
|
|
self.get_scraper_data(data)
|
|
|
|
ID = self.update_window()
|
|
|
|
return self.onClick(ID)
|
|
|
|
def update_window(self):
|
|
JsonData = {}
|
|
JsonData["action"] = "OpenInfo"
|
|
JsonData["data"] = {}
|
|
JsonData["data"]["buttons"] = len(self.listData) > 0
|
|
JsonData["data"]["previous"] = self.indexList > 0
|
|
JsonData["data"]["next"] = self.indexList + 1 < len(self.listData)
|
|
JsonData["data"]["count"] = "(%s/%s)" % (self.indexList + 1, len(self.listData))
|
|
JsonData["data"]["title"] = self.caption
|
|
JsonData["data"]["fanart"] = self.result.get("fanart", "")
|
|
JsonData["data"]["thumbnail"] = self.result.get("thumbnail", "")
|
|
|
|
JsonData["data"]["lines"] = []
|
|
|
|
if self.result.get("mediatype", "movie") == "movie":
|
|
JsonData["data"]["lines"].append({"title": "Título:", "text": self.result.get("title", "N/A")})
|
|
JsonData["data"]["lines"].append(
|
|
{"title": "Título Original:", "text": self.result.get("originaltitle", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Idioma Original:", "text": self.result.get("language", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Puntuación:", "text": self.result.get("puntuacion", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Lanzamiento:", "text": self.result.get("release_date", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Generos:", "text": self.result.get("genre", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "", "text": ""})
|
|
|
|
|
|
else:
|
|
JsonData["data"]["lines"].append({"title": "Serie:", "text": self.result.get("title", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Idioma Original:", "text": self.result.get("language", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Puntuación:", "text": self.result.get("puntuacion", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Generos:", "text": self.result.get("genre", "N/A")})
|
|
|
|
if self.result.get("season"):
|
|
JsonData["data"]["lines"].append(
|
|
{"title": "Titulo temporada:", "text": self.result.get("temporada_nombre", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Temporada:",
|
|
"text": self.result.get("season", "N/A") + " de " + self.result.get(
|
|
"seasons", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "", "text": ""})
|
|
|
|
if self.result.get("episode"):
|
|
JsonData["data"]["lines"].append({"title": "Titulo:", "text": self.result.get("episode_title", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Episodio:",
|
|
"text": self.result.get("episode", "N/A") + " de " + self.result.get(
|
|
"episodes", "N/A")})
|
|
JsonData["data"]["lines"].append({"title": "Emisión:", "text": self.result.get("date", "N/A")})
|
|
|
|
if self.result.get("plot"):
|
|
JsonData["data"]["lines"].append({"title": "Sinopsis:", "text": self.result["plot"]})
|
|
else:
|
|
JsonData["data"]["lines"].append({"title": "", "text": ""})
|
|
|
|
ID = self.handler.send_message(JsonData)
|
|
return ID
|
|
|
|
def onClick(self, ID):
|
|
while True:
|
|
response = self.handler.get_data(ID)
|
|
|
|
if response == "ok":
|
|
return self.listData[self.indexList]
|
|
|
|
elif response == "close":
|
|
return None
|
|
|
|
elif response == "next" and self.indexList < len(self.listData) - 1:
|
|
self.indexList += 1
|
|
self.get_scraper_data(self.listData[self.indexList])
|
|
ID = self.update_window()
|
|
|
|
|
|
elif response == "previous" and self.indexList > 0:
|
|
self.indexList -= 1
|
|
self.get_scraper_data(self.listData[self.indexList])
|
|
ID = self.update_window()
|