From 5c85f7cfbdcb762e588814523715387949a4a728 Mon Sep 17 00:00:00 2001 From: thedoctor66 <37449358+thedoctor66@users.noreply.github.com> Date: Thu, 2 Aug 2018 13:01:00 +0200 Subject: [PATCH 01/57] added localized string --- plugin.video.alfa/core/videolibrarytools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/core/videolibrarytools.py b/plugin.video.alfa/core/videolibrarytools.py index c06c5fa3..ac3dc120 100644 --- a/plugin.video.alfa/core/videolibrarytools.py +++ b/plugin.video.alfa/core/videolibrarytools.py @@ -402,7 +402,7 @@ def save_episodes(path, episodelist, serie, silent=False, overwrite=True): for i, e in enumerate(scraper.sort_episode_list(new_episodelist)): if not silent: - p_dialog.update(int(math.ceil((i + 1) * t)), 'Añadiendo episodio...', e.title) + p_dialog.update(int(math.ceil((i + 1) * t)), config.get_localized_string(60064), e.title) season_episode = "%sx%s" % (e.contentSeason, str(e.contentEpisodeNumber).zfill(2)) strm_path = filetools.join(path, "%s.strm" % season_episode) From 8ddfdaad1a31b89a3e9a982f9e42338c4c18a219 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Thu, 2 Aug 2018 10:16:55 -0500 Subject: [PATCH 02/57] Fix languagues --- plugin.video.alfa/resources/language/English/strings.po | 8 -------- plugin.video.alfa/resources/language/Italian/strings.po | 8 -------- .../resources/language/Spanish (Mexico)/strings.po | 8 -------- 3 files changed, 24 deletions(-) diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 40a5bb6d..0e80ca92 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -3857,14 +3857,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr " " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr " " - msgctxt "#70291" msgid "Error, during conversion" msgstr "" diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 8ebb6a0b..bdd6c4f6 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -3841,14 +3841,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configura Downloads" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorretto un errore nella sezione adulti, la password è sta resettata a quella di " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "default, puoi cambiarla di nuovo se vuoi.\n Scrivi 's', se hai capito: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Errore, in conversione" diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index 2f4be12c..9ad733fc 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" From 1c751fc1b7eb286cf7e106c82e42568023ab50d8 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 4 Aug 2018 12:42:12 -0500 Subject: [PATCH 03/57] Actualizados 1 animeflv.me: desactivado, no funciona la web peliculasrey: desactivado, no funciona la web yaske: desactivado, no funciona la web httptools: fix error certificado SSL strings.po: fix languages adnstream: eliminado, no existe server bitvidsx: eliminado, no existe server cloudy: eliminado, no existe server thevideome: fix vshare: update test_video_exists --- plugin.video.alfa/channels/animeflv_me.json | 2 +- plugin.video.alfa/channels/peliculasrey.json | 2 +- plugin.video.alfa/channels/yaske.json | 2 +- plugin.video.alfa/core/httptools.py | 18 ++++++++ .../resources/language/English/strings.po | 2 +- .../resources/language/Italian/strings.po | 4 +- .../language/Spanish (Argentina)/strings.po | 8 ---- .../resources/language/Spanish/strings.po | 8 ---- plugin.video.alfa/servers/adnstream.json | 41 ----------------- plugin.video.alfa/servers/adnstream.py | 30 ------------- plugin.video.alfa/servers/bitvidsx.json | 45 ------------------- plugin.video.alfa/servers/bitvidsx.py | 40 ----------------- plugin.video.alfa/servers/cloudy.json | 42 ----------------- plugin.video.alfa/servers/cloudy.py | 29 ------------ plugin.video.alfa/servers/thevideome.json | 2 +- plugin.video.alfa/servers/thevideome.py | 25 +++++------ plugin.video.alfa/servers/vshare.json | 4 ++ plugin.video.alfa/servers/vshare.py | 11 ++--- 18 files changed, 44 insertions(+), 271 deletions(-) delete mode 100755 plugin.video.alfa/servers/adnstream.json delete mode 100755 plugin.video.alfa/servers/adnstream.py delete mode 100755 plugin.video.alfa/servers/bitvidsx.json delete mode 100755 plugin.video.alfa/servers/bitvidsx.py delete mode 100755 plugin.video.alfa/servers/cloudy.json delete mode 100755 plugin.video.alfa/servers/cloudy.py diff --git a/plugin.video.alfa/channels/animeflv_me.json b/plugin.video.alfa/channels/animeflv_me.json index 65784f01..96f16b74 100755 --- a/plugin.video.alfa/channels/animeflv_me.json +++ b/plugin.video.alfa/channels/animeflv_me.json @@ -1,7 +1,7 @@ { "id": "animeflv_me", "name": "Animeflv.ME", - "active": true, + "active": false, "adult": false, "language": ["cast", "lat"], "thumbnail": "http://i.imgur.com/x9AdvBx.png", diff --git a/plugin.video.alfa/channels/peliculasrey.json b/plugin.video.alfa/channels/peliculasrey.json index 91c439fd..bd922f63 100755 --- a/plugin.video.alfa/channels/peliculasrey.json +++ b/plugin.video.alfa/channels/peliculasrey.json @@ -1,7 +1,7 @@ { "id": "peliculasrey", "name": "peliculasrey", - "active": true, + "active": false, "adult": false, "language": ["cast", "lat"], "thumbnail": "peliculasrey.png", diff --git a/plugin.video.alfa/channels/yaske.json b/plugin.video.alfa/channels/yaske.json index a28e4e4f..8b9ad9d4 100644 --- a/plugin.video.alfa/channels/yaske.json +++ b/plugin.video.alfa/channels/yaske.json @@ -1,7 +1,7 @@ { "id": "yaske", "name": "Yaske", - "active": true, + "active": false, "adult": false, "language": ["cast", "lat"], "banner": "yaske.png", diff --git a/plugin.video.alfa/core/httptools.py b/plugin.video.alfa/core/httptools.py index ba6ddde2..53b71b97 100755 --- a/plugin.video.alfa/core/httptools.py +++ b/plugin.video.alfa/core/httptools.py @@ -3,6 +3,24 @@ # httptools # -------------------------------------------------------------------------------- + +# Fix para error de validación del certificado del tipo: +# [downloadpage] Response code: +# [downloadpage] Response error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661) +# Fix desde la página: https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error +#----------------------------------------------------------------------- +import ssl +try: + _create_unverified_https_context = ssl._create_unverified_context +except AttributeError: + # Legacy Python that doesn't verify HTTPS certificates by default + pass +else: + # Handle target environment that doesn't support HTTPS verification + ssl._create_default_https_context = _create_unverified_https_context +#----------------------------------------------------------------------- + + import inspect import cookielib import gzip diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 0e80ca92..896330e6 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -846,7 +846,7 @@ msgid "Enter URL" msgstr "" msgctxt "#60089" -msgid "Enter the URL [Link to server / download]" +msgid "Enter the URL [Link to server/download]" msgstr "" msgctxt "#60090" diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index bdd6c4f6..4b2dea28 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -834,8 +834,8 @@ msgid "Enter URL" msgstr "Inserisci URL" msgctxt "#60089" -msgid "Enter the URL [Link to server / download]" -msgstr "Inserire l'URL [Link a server / download]" +msgid "Enter the URL [Link to server/download]" +msgstr "Inserire l'URL [Link a server/download]" msgctxt "#60090" msgid "Enter the URL [Direct link to video]." diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index 2f4be12c..9ad733fc 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 2f4be12c..9ad733fc 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" diff --git a/plugin.video.alfa/servers/adnstream.json b/plugin.video.alfa/servers/adnstream.json deleted file mode 100755 index 1f601daa..00000000 --- a/plugin.video.alfa/servers/adnstream.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "active": true, - "find_videos": { - "ignore_urls": [], - "patterns": [ - { - "pattern": "adnstream.com/video/([a-zA-Z]+)", - "url": "http://www.adnstream.com/video/\\1/" - } - ] - }, - "free": true, - "id": "adnstream", - "name": "adnstream", - "settings": [ - { - "default": false, - "enabled": true, - "id": "black_list", - "label": "@60654", - "type": "bool", - "visible": true - }, - { - "default": 0, - "enabled": true, - "id": "favorites_servers_list", - "label": "@60655", - "lvalues": [ - "No", - "1", - "2", - "3", - "4", - "5" - ], - "type": "list", - "visible": false - } - ] -} \ No newline at end of file diff --git a/plugin.video.alfa/servers/adnstream.py b/plugin.video.alfa/servers/adnstream.py deleted file mode 100755 index c45810a0..00000000 --- a/plugin.video.alfa/servers/adnstream.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- - -from core import scrapertools -from platformcode import logger - - -def get_video_url(page_url, premium=False, user="", password="", video_password=""): - logger.info("(page_url='%s')" % page_url) - - # Saca el código del vídeo - if page_url.startswith("http://"): - try: - code = scrapertools.get_match(page_url, "http\://www.adnstream.com/video/([a-zA-Z]+)/") - except: - code = scrapertools.get_match(page_url, "http\://www.adnstream.tv/video/([a-zA-Z]+)/") - else: - code = page_url - - # Lee la playlist - url = "http://www.adnstream.com/get_playlist.php?lista=video¶m=" + code + "&c=463" - data = scrapertools.cache_page(url) - - # Extrae la URL - media_url = scrapertools.get_match(data, "([^<]+)") - video_urls = [[scrapertools.get_filename_from_url(media_url)[-4:] + ' [adnstream]', media_url]] - - for video_url in video_urls: - logger.info("%s - %s" % (video_url[0], video_url[1])) - - return video_urls diff --git a/plugin.video.alfa/servers/bitvidsx.json b/plugin.video.alfa/servers/bitvidsx.json deleted file mode 100755 index ea44abcc..00000000 --- a/plugin.video.alfa/servers/bitvidsx.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "active": true, - "find_videos": { - "ignore_urls": [], - "patterns": [ - { - "pattern": "(http://www.(?:videoweed|bitvid)\\.[a-z]+/file/[a-zA-Z0-9]+)", - "url": "\\1" - }, - { - "pattern": "(http://embed.(?:videoweed|bitvid)\\.[a-z]+/embed.php?v=[a-zA-Z0-9]+)", - "url": "\\1" - } - ] - }, - "free": true, - "id": "bitvidsx", - "name": "bitvidsx", - "settings": [ - { - "default": false, - "enabled": true, - "id": "black_list", - "label": "@60654", - "type": "bool", - "visible": true - }, - { - "default": 0, - "enabled": true, - "id": "favorites_servers_list", - "label": "@60655", - "lvalues": [ - "No", - "1", - "2", - "3", - "4", - "5" - ], - "type": "list", - "visible": false - } - ] -} \ No newline at end of file diff --git a/plugin.video.alfa/servers/bitvidsx.py b/plugin.video.alfa/servers/bitvidsx.py deleted file mode 100755 index 5968a550..00000000 --- a/plugin.video.alfa/servers/bitvidsx.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from core import httptools -from core import scrapertools -from platformcode import logger - - -def test_video_exists(page_url): - logger.info("(page_url='%s')" % page_url) - - data = httptools.downloadpage(page_url).data - - if "This video is not yet ready" in data: - return False, "[Bitvid] El fichero está en proceso todavía o ha sido eliminado" - - return True, "" - - -def get_video_url(page_url, premium=False, user="", password="", video_password=""): - logger.info("(page_url='%s')" % page_url) - data = httptools.downloadpage(page_url).data - - video_urls = [] - videourls = scrapertools.find_multiple_matches(data, 'src\s*:\s*[\'"]([^\'"]+)[\'"]') - if not videourls: - videourls = scrapertools.find_multiple_matches(data, ' Date: Sat, 4 Aug 2018 19:54:21 +0200 Subject: [PATCH 04/57] added localized strings --- plugin.video.alfa/channels/tvmoviedb.json | 104 ++--- plugin.video.alfa/channels/tvmoviedb.py | 141 +++--- plugin.video.alfa/core/trakt_tools.py | 8 +- .../resources/language/English/strings.po | 424 ++++++++++++++++- .../resources/language/Italian/strings.po | 428 +++++++++++++++++- .../language/Spanish (Argentina)/strings.po | 424 ++++++++++++++++- .../language/Spanish (Mexico)/strings.po | 424 ++++++++++++++++- .../resources/language/Spanish/strings.po | 424 ++++++++++++++++- .../servers/debriders/realdebrid.py | 8 +- 9 files changed, 2203 insertions(+), 182 deletions(-) diff --git a/plugin.video.alfa/channels/tvmoviedb.json b/plugin.video.alfa/channels/tvmoviedb.json index f4e6108d..e82411cb 100755 --- a/plugin.video.alfa/channels/tvmoviedb.json +++ b/plugin.video.alfa/channels/tvmoviedb.json @@ -14,56 +14,56 @@ { "id": "tmdb", "type": "list", - "label": "Idioma de búsqueda en TMDB", - "default": 7, + "label": "@70418", + "default": 3, "enabled": true, "visible": true, "lvalues": [ - "Alemán", - "Francés", - "Portugués", - "Italiano", - "Español Latino", - "Catalán", - "Inglés", - "Castellano" + "@70419", + "@70420", + "@70421", + "@70422", + "@70423", + "@70424", + "@70425", + "@70014" ] }, { "id": "tmdb_alternativo", "type": "list", - "label": "Idioma alternativo para TMDB (No sinopsis idioma principal)", + "label": "@70426", "default": 6, "enabled": true, "visible": true, "lvalues": [ - "Alemán", - "Francés", - "Portugués", - "Italiano", - "Español Latino", - "Catalán", - "Inglés", - "Castellano" + "@70419", + "@70420", + "@70421", + "@70422", + "@70423", + "@70424", + "@70425", + "@70014" ] }, { "id": "imdb", "type": "list", - "label": "Idioma de los títulos en IMDB", + "label": "@70427", "color": "0xFFE0F04B", - "default": 7, + "default": 3, "enabled": true, "visible": true, "lvalues": [ - "Alemán", - "Francés", - "Portugués", - "Italiano", - "Español Latino", - "Catalán", - "Inglés", - "Castellano" + "@70419", + "@70420", + "@70421", + "@70422", + "@70423", + "@70424", + "@70425", + "@70014" ] }, { @@ -76,24 +76,24 @@ { "id": "filmaff", "type": "list", - "label": "Sitio Web Filmaffinity", + "label": "@70428", "color": "0xFF25AA48", "default": 5, "enabled": true, "visible": true, "lvalues": [ - "Colombia", - "Chile", - "Argentina", - "México", - "US/UK", - "España" + "@70429", + "@70430", + "@70431", + "@70432", + "@70433", + "@70434" ] }, { "id": "usuariofa", "type": "text", - "label": "Usuario Filmaffinity (Opcional)", + "label": "@70435", "color": "0xFFd50b0b", "default": "", "enabled": true, @@ -102,7 +102,7 @@ { "id": "passfa", "type": "text", - "label": "Contraseña Filmaffinity", + "label": "@70436", "color": "0xFFd50b0b", "default": "", "enabled": "!eq(-1,'')", @@ -112,17 +112,17 @@ { "id": "orderfa", "type": "list", - "label": "Ordenar listas personales de Filmaffinity por:", + "label": "@70437", "color": "0xFF25AA48", "default": 0, "enabled": "!eq(-1,'')", "visible": true, "lvalues": [ - "Posición", - "Título", - "Año", - "Voto", - "Nota media" + "@70438", + "@60230", + "@70042", + "@70439", + "@70440" ] }, { @@ -135,7 +135,7 @@ { "id": "usuariomal", "type": "text", - "label": "Usuario MyAnimeList (Opcional)", + "label": "@70441", "color": "0xFF25AA48", "default": "", "enabled": true, @@ -144,7 +144,7 @@ { "id": "passmal", "type": "text", - "label": "Contraseña MyAnimeList", + "label": "@70442", "color": "0xFF25AA48", "default": "", "enabled": "!eq(-1,'')", @@ -154,7 +154,7 @@ { "id": "adult_mal", "type": "bool", - "label": "Mostrar Hentais en MyAnimeList", + "label": "@70443", "color": "0xFFd50b0b", "default": false, "enabled": true, @@ -163,15 +163,15 @@ { "id": "perfil", "type": "list", - "label": "Perfil de color", + "label": "@60666", "default": 2, "enabled": true, "visible": true, "lvalues": [ - "Perfil 3", - "Perfil 2", - "Perfil 1", - "Ninguno" + "@70444", + "@70445", + "@70446", + "@59992" ] } ] diff --git a/plugin.video.alfa/channels/tvmoviedb.py b/plugin.video.alfa/channels/tvmoviedb.py index 31d71279..1f31d6cd 100644 --- a/plugin.video.alfa/channels/tvmoviedb.py +++ b/plugin.video.alfa/channels/tvmoviedb.py @@ -61,7 +61,7 @@ def mainlist(item): url='&title_type=tv_series,tv_special,mini_series', thumbnail=images_predef + "0/TV%20Series.png")) itemlist.append( - item.clone(title="Trakt.tv", action="trakt", text_color=color2, thumbnail="http://i.imgur.com/5sQjjuk.png")) + item.clone(title=config.get_localized_string(70415), action="trakt", text_color=color2, thumbnail="http://i.imgur.com/5sQjjuk.png")) itemlist.append( item.clone(title=config.get_localized_string(70026), action="mal", text_color=color2, thumbnail="http://i.imgur.com/RhsYWmd.png")) itemlist.append(item.clone(title="", action="")) @@ -255,7 +255,7 @@ def trakt(item): page = "?page=1&limit=20&extended=full" if not item.extra: item.extra = "movie" - itemlist.append(item.clone(title=config.get_localized_string(70137), action="", text_color=color2)) + itemlist.append(item.clone(title="[B][COLOR yellow]%s[/COLOR][/B]" % config.get_localized_string(70416), action="")) itemlist.append(item.clone(title=config.get_localized_string(70049), action="acciones_trakt", url="movies/popular%s" % page)) itemlist.append( item.clone(title=config.get_localized_string(70050), action="acciones_trakt", url="movies/trending%s" % page)) @@ -265,7 +265,7 @@ def trakt(item): if token_auth: itemlist.append(item.clone(title=config.get_localized_string(70052), action="acciones_trakt", url="recommendations/movies?limit=100&extended=full", pagina=0)) - itemlist.append(item.clone(title=config.get_localized_string(30123), action="", text_color=color2)) + itemlist.append(item.clone(title="[B][COLOR yellow]%s[/COLOR][/B]" % config.get_localized_string(70417), action="",)) item.extra = "show" itemlist.append(item.clone(title=config.get_localized_string(70049), action="acciones_trakt", url="shows/popular%s" % page)) itemlist.append(item.clone(title=config.get_localized_string(70050), action="acciones_trakt", url="shows/trending%s" % page)) @@ -275,7 +275,7 @@ def trakt(item): if token_auth: itemlist.append(item.clone(title=config.get_localized_string(70052), action="acciones_trakt", url="recommendations/shows?limit=100&extended=full", pagina=0)) - itemlist.append(item.clone(title=config.get_localized_string(70048), text_color=color2, extra="cuenta")) + itemlist.append(item.clone(title="[B][COLOR red]%s[/COLOR][/B]" % config.get_localized_string(70048), extra="cuenta")) else: item.extra = "movie" # Se comprueba si existe un token guardado y sino se ejecuta el proceso de autentificación @@ -783,7 +783,7 @@ def filtro(item): dict_values = None - list_controls.append({'id': 'years', 'label': 'Año', 'enabled': True, 'color': '0xFFCC2EFA', + list_controls.append({'id': 'years', 'label': config.get_localized_string(60232), 'enabled': True, 'color': '0xFFCC2EFA', 'type': 'list', 'default': -1, 'visible': True}) list_controls[0]['lvalues'] = [] valores['years'] = [] @@ -791,7 +791,7 @@ def filtro(item): for i in range(1900, year + 1): list_controls[0]['lvalues'].append(str(i)) valores['years'].append(str(i)) - list_controls[0]['lvalues'].append('Cualquiera') + list_controls[0]['lvalues'].append(config.get_localized_string(70450)) valores['years'].append('') if "Personalizado" in item.title: @@ -805,7 +805,7 @@ def filtro(item): lista = jsontools.load(httptools.downloadpage(url, cookies=False).data)["genres"] if lista: list_controls.append({'id': 'labelgenre', 'enabled': True, 'type': 'label', 'default': None, - 'label': 'Selecciona uno, ninguno o más de un género', + 'label': config.get_localized_string(70451), 'visible': True, 'color': '0xFFC52020'}) for l in lista: list_controls.append({'id': 'genre' + str(l["id"]), 'label': l["name"], 'enabled': True, @@ -813,11 +813,11 @@ def filtro(item): except: pass - list_controls.append({'id': 'orden', 'label': 'Ordenar por', 'enabled': True, 'color': '0xFF25AA48', + list_controls.append({'id': 'orden', 'label': config.get_localized_string(70455), 'enabled': True, 'color': '0xFF25AA48', 'type': 'list', 'default': -1, 'visible': True}) - orden = ['Popularidad Desc', 'Popularidad Asc', 'Año Desc', 'Año Asc', 'Valoración Desc', 'Valoración Asc'] + orden = [config.get_localized_string(70456), config.get_localized_string(70457), config.get_localized_string(70458), config.get_localized_string(70459), config.get_localized_string(70460), config.get_localized_string(70461)] if item.extra == "movie": - orden.extend(['Título [A-Z]', 'Título [Z-A]']) + orden.extend([config.get_localized_string(70462), config.get_localized_string(70463)]) orden_tmdb = ['popularity.desc', 'popularity.asc', 'release_date.desc', 'release_date.asc', 'vote_average.desc', 'vote_average.asc', 'original_title.asc', 'original_title.desc'] valores['orden'] = [] @@ -828,10 +828,10 @@ def filtro(item): list_controls.append({'id': 'espacio', 'label': '', 'enabled': False, 'type': 'label', 'default': None, 'visible': True}) - list_controls.append({'id': 'save', 'label': 'Establecer como filtro por defecto', 'enabled': True, + list_controls.append({'id': 'save', 'label': config.get_localized_string(70464), 'enabled': True, 'type': 'bool', 'default': False, 'visible': True}) else: - list_controls.append({'id': 'keyword', 'label': 'Palabra Clave', 'enabled': True, + list_controls.append({'id': 'keyword', 'label': config.get_localized_string(70465), 'enabled': True, 'type': 'text', 'default': '', 'visible': True}) item.valores = valores @@ -1005,12 +1005,12 @@ def filtro_imdb(item): if valores_guardados: dict_values = valores_guardados - list_controls.append({'id': 'title', 'label': 'Título', 'enabled': True, + list_controls.append({'id': 'title', 'label': config.get_localized_string(60320), 'enabled': True, 'type': 'text', 'default': '', 'visible': True}) - list_controls.append({'id': 'yearsdesde', 'label': 'Año desde:', 'enabled': True, 'color': '0xFFCC2EFA', + list_controls.append({'id': 'yearsdesde', 'label': config.get_localized_string(70452), 'enabled': True, 'color': '0xFFCC2EFA', 'type': 'list', 'default': -1, 'visible': True}) - list_controls.append({'id': 'yearshasta', 'label': 'Año hasta:', 'enabled': True, 'color': '0xFF2ECCFA', + list_controls.append({'id': 'yearshasta', 'label': config.get_localized_string(70453), 'enabled': True, 'color': '0xFF2ECCFA', 'type': 'list', 'default': -1, 'visible': True}) list_controls[1]['lvalues'] = [] list_controls[2]['lvalues'] = [] @@ -1020,23 +1020,23 @@ def filtro_imdb(item): list_controls[1]['lvalues'].append(str(i)) list_controls[2]['lvalues'].append(str(i)) valores['years'].append(str(i)) - list_controls[1]['lvalues'].append('Cualquiera') - list_controls[2]['lvalues'].append('Cualquiera') + list_controls[1]['lvalues'].append(config.get_localized_string(70450)) + list_controls[2]['lvalues'].append(config.get_localized_string(70450)) valores['years'].append('') try: - generos_spa = {'Action': 'Acción', 'Adventure': 'Aventura', 'Animation': 'Animación', 'Biography': 'Biografía', - 'Comedy': 'Comedia', 'Crime': 'Crimen', 'Documentary': 'Documental', 'Family': 'Familia', - 'Fantasy': 'Fantástico', 'Film-Noir': 'Cine Negro', 'Game-Show': 'Concursos', - 'History': 'Historia', 'Horror': 'Terror', 'Music': 'Música', 'Mistery': 'Intriga', - 'News': 'Noticias', 'Reality-TV': 'Reality', 'Sci-Fi': 'Ciencia Ficción', 'Sport': 'Deportes', - 'Talk-Show': 'Entrevistas', 'War': 'Cine Bélico'} + generos_spa = {'Action': config.get_localized_string(70394), 'Adventure': config.get_localized_string(60267), 'Animation': config.get_localized_string(60268), 'Biography': config.get_localized_string(70403), + 'Comedy': config.get_localized_string(60270), 'Crime': config.get_localized_string(60271), 'Documentary': config.get_localized_string(70396), 'Family': config.get_localized_string(70399), + 'Fantasy': config.get_localized_string(60274), 'Film-Noir': config.get_localized_string(70400), 'Game-Show': config.get_localized_string(70401), + 'History': config.get_localized_string(70405), 'Horror': config.get_localized_string(70013), 'Music': config.get_localized_string(70404), 'Mistery': config.get_localized_string(70402), + 'News': config.get_localized_string(60279), 'Reality-TV': config.get_localized_string(70406), 'Sci-Fi': config.get_localized_string(70397), 'Sport': config.get_localized_string(70395), + 'Talk-Show': config.get_localized_string(70398), 'War': config.get_localized_string(70407)} data = httptools.downloadpage("http://www.imdb.com/search/title", cookies=False).data bloque = scrapertools.find_single_match(data, '

Genres

(.*?)') matches = scrapertools.find_multiple_matches(bloque, ' value="([^"]+)"\s*>\s*([^<]+)<') if matches: list_controls.append({'id': 'labelgenre', 'enabled': True, 'type': 'label', 'visible': True, - 'label': 'Selecciona uno, ninguno o más de un género', 'color': '0xFFC52020'}) + 'label': config.get_localized_string(70451), 'color': '0xFFC52020'}) lista = [] for valor, titulo in matches: titulo = generos_spa.get(titulo, titulo) @@ -1054,10 +1054,10 @@ def filtro_imdb(item): bloque = scrapertools.find_single_match(data, '

Countries

(.*?)Less-Common') matches = scrapertools.find_multiple_matches(bloque, ' value="([^"]+)"\s*>([^<]+)<') if matches: - list_controls.append({'id': 'pais', 'label': 'País', 'enabled': True, 'color': '0xFFFF8000', + list_controls.append({'id': 'pais', 'label': config.get_localized_string(70466), 'enabled': True, 'color': '0xFFFF8000', 'type': 'list', 'default': -1, 'visible': True}) list_controls[-1]['lvalues'] = [] - list_controls[-1]['lvalues'].append('Cualquiera') + list_controls[-1]['lvalues'].append(config.get_localized_string(70450)) valores['pais'] = [] valores['pais'].append('') for valor, titulo in matches: @@ -1067,13 +1067,10 @@ def filtro_imdb(item): except: pass - list_controls.append({'id': 'votos', 'label': 'Número mínimo de votos', 'enabled': True, - 'type': 'text', 'default': '10000', 'visible': True, 'color': '0xFFF4FA58'}) - - list_controls.append({'id': 'orden', 'label': 'Ordenar por', 'enabled': True, 'color': '0xFF25AA48', + list_controls.append({'id': 'orden', 'label': config.get_localized_string(70455), 'enabled': True, 'color': '0xFF25AA48', 'type': 'list', 'default': -1, 'visible': True}) - orden = ['Popularidad Desc', 'Popularidad Asc', 'Año Desc', 'Año Asc', 'Valoración Desc', 'Valoración Asc', - 'Título [A-Z]', 'Título [Z-A]'] + orden = [config.get_localized_string(70456), config.get_localized_string(70457), config.get_localized_string(70458), config.get_localized_string(70459), config.get_localized_string(70460), config.get_localized_string(70461), + config.get_localized_string(70462, config.get_localized_string(70463)] orden_imdb = ['moviemeter,asc', 'moviemeter,desc', 'year,desc', 'year,asc', 'user_rating,desc', 'user_rating,asc', 'alpha,asc', 'alpha,desc'] @@ -1083,7 +1080,7 @@ def filtro_imdb(item): list_controls[-1]['lvalues'].insert(0, tipo_orden) valores['orden'].insert(0, orden_imdb[i]) - list_controls.append({'id': 'save', 'label': 'Establecer como filtro por defecto', 'enabled': True, + list_controls.append({'id': 'save', 'label': config.get_localized_string(70464), 'enabled': True, 'type': 'bool', 'default': False, 'visible': True}) item.valores = valores @@ -1130,12 +1127,12 @@ def indices_imdb(item): itemlist = [] from datetime import datetime if config.get_localized_string(70032) in item.title: - generos_spa = {'Action': 'Accion', 'Adventure': 'Aventura', 'Animation': 'Animacion', 'Biography': 'Biografía', - 'Comedy': 'Comedia', 'Crime': 'Crimen', 'Documentary': 'Documental', 'Family': 'Familia', - 'Fantasy': 'Fantasia', 'Film-Noir': 'Cine Negro', 'Game-Show': 'Concursos', - 'History': 'Historia', 'Horror': 'Terror', 'Music': 'Música', 'Mistery': 'Intriga', - 'News': 'Noticias', 'Reality-TV': 'Reality', 'Sci-Fi': 'Ciencia Ficcion', 'Sport': 'Deportes', - 'Talk-Show': 'Entrevistas', 'War': 'Cine Bélico'} + generos_spa = {'Action': config.get_localized_string(70394), 'Adventure': config.get_localized_string(60267), 'Animation': config.get_localized_string(60268), 'Biography': config.get_localized_string(70403), 'Thriller': config.get_localized_string(70410), + 'Comedy': config.get_localized_string(60270), 'Crime': config.get_localized_string(60271), 'Documentary': config.get_localized_string(70396), 'Family': config.get_localized_string(70399), 'Romance': config.get_localized_string(70409), + 'Fantasy': config.get_localized_string(60274), 'Film-Noir': config.get_localized_string(70400), 'Game-Show': config.get_localized_string(70401), 'Drama': config.get_localized_string(70412), 'Western': config.get_localized_string(70411), + 'History': config.get_localized_string(70405), 'Horror': config.get_localized_string(70013), 'Music': config.get_localized_string(70404), 'Musical': config.get_localized_string(70408),'Mystery': config.get_localized_string(70402), + 'News': config.get_localized_string(60279), 'Reality-TV': config.get_localized_string(70406), 'Sci-Fi': config.get_localized_string(70397), 'Sport': config.get_localized_string(70395), + 'Talk-Show': config.get_localized_string(70398), 'War': config.get_localized_string(70407)} data = httptools.downloadpage("http://www.imdb.com/search/title", cookies=False).data bloque = scrapertools.find_single_match(data, '

Genres

(.*?)') matches = scrapertools.find_multiple_matches(bloque, ' value="([^"]+)"\s*>\s*([^<]+)<') @@ -1616,9 +1613,9 @@ def filtro_fa(item): if valores_guardados: dict_values = valores_guardados - list_controls.append({'id': 'yearsdesde', 'label': 'Año desde:', 'enabled': True, + list_controls.append({'id': 'yearsdesde', 'label': config.get_localized_string(70452), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) - list_controls.append({'id': 'yearshasta', 'label': 'Año hasta:', 'enabled': True, + list_controls.append({'id': 'yearshasta', 'label': config.get_localized_string(70453), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) list_controls[0]['lvalues'] = [] list_controls[1]['lvalues'] = [] @@ -1628,8 +1625,8 @@ def filtro_fa(item): list_controls[0]['lvalues'].append(str(i)) list_controls[1]['lvalues'].append(str(i)) valores['years'].append(str(i)) - list_controls[0]['lvalues'].append('Cualquiera') - list_controls[1]['lvalues'].append('Cualquiera') + list_controls[0]['lvalues'].append(config.get_localized_string(70450)) + list_controls[1]['lvalues'].append(config.get_localized_string(70450)) valores['years'].append('') data = httptools.downloadpage("http://m.filmaffinity.com/%s/topgen.php" % langf).data @@ -1640,7 +1637,7 @@ def filtro_fa(item): bloque = scrapertools.find_single_match(data, 'name="genre">.*?(.*?)') matches = scrapertools.find_multiple_matches(bloque, '') if matches: - list_controls.append({'id': 'genero', 'label': 'Selecciona un género', 'enabled': True, + list_controls.append({'id': 'genero', 'label': config.get_localized_string(70467), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) list_controls[2]['lvalues'] = [] list_controls[2]['lvalues'].append("Todos") @@ -1659,7 +1656,7 @@ def filtro_fa(item): bloque = scrapertools.find_single_match(data, 'name="country">.*?(.*?)') matches = scrapertools.find_multiple_matches(bloque, '') if matches: - list_controls.append({'id': 'pais', 'label': 'País', 'enabled': True, + list_controls.append({'id': 'pais', 'label': config.get_localized_string(70466), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) list_controls[-1]['lvalues'] = [] list_controls[-1]['lvalues'].append('Todos') @@ -1673,7 +1670,7 @@ def filtro_fa(item): list_controls.append({'id': 'espacio', 'label': '', 'enabled': False, 'type': 'label', 'default': None, 'visible': True}) - list_controls.append({'id': 'save', 'label': 'Establecer como filtro por defecto', 'enabled': True, + list_controls.append({'id': 'save', 'label': config.get_localized_string(70464), 'enabled': True, 'type': 'bool', 'default': False, 'visible': True}) item.valores = valores @@ -1863,7 +1860,7 @@ def votar_fa(item): dict_values = None if item.voto: dict_values = {'voto': item.voto} - list_controls.append({'id': 'voto', 'label': 'Indica tu voto:', 'enabled': True, + list_controls.append({'id': 'voto', 'label': config.get_localized_string(70468), 'enabled': True, 'type': 'list', 'default': 0, 'visible': True}) list_controls[0]['lvalues'] = ['No vista'] valores['voto'] = ["-1"] @@ -2184,9 +2181,9 @@ def acciones_trakt(item): elif data and not item.url.endswith("lists"): data = jsontools.load(data) if data and "page=1" in item.url and item.order: - valores = {'rank': 'Por defecto', 'added': 'Añadido', 'title': 'Título', 'released': 'Estreno', - 'runtime': 'Duración', 'popularity': 'Popularidad', 'percentage': 'Valoración', - 'votes': 'Votos', 'asc': 'ascendente', 'desc': 'descendente'} + valores = {'rank': config.get_localized_string(70003), 'added': config.get_localized_string(70469), 'title': config.get_localized_string(60320), 'released': config.get_localized_string(70470), + 'runtime': config.get_localized_string(70471), 'popularity': config.get_localized_string(70472), 'percentage': config.get_localized_string(70473), + 'votes': config.get_localized_string(70474), 'asc': config.get_localized_string(70475), 'desc': config.get_localized_string(70476)} orden = valores[item.order] + " " + valores[item.how] itemlist.append(item.clone(title=config.get_localized_string(70349) % orden, action="order_list", text_color=color4)) @@ -2267,13 +2264,13 @@ def order_list(item): dict_values = {'orderby': valores1.index(item.order), 'orderhow': valores2.index(item.how)} - list_controls.append({'id': 'orderby', 'label': 'Ordenar por:', 'enabled': True, + list_controls.append({'id': 'orderby', 'label': config.get_localized_string(70455), 'enabled': True, 'type': 'list', 'default': 0, 'visible': True}) list_controls.append({'id': 'orderhow', 'label': 'De forma:', 'enabled': True, 'type': 'list', 'default': 0, 'visible': True}) - list_controls[0]['lvalues'] = ['Por defecto', 'Añadido', 'Título', 'Estreno', 'Duración', 'Popularidad', - 'Valoración', 'Votos'] - list_controls[1]['lvalues'] = ['Ascendente', 'Descendente'] + list_controls[0]['lvalues'] = [config.get_localized_string(70003), config.get_localized_string(70469), config.get_localized_string(60230), config.get_localized_string(70470), config.get_localized_string(70471), config.get_localized_string(70472), + config.get_localized_string(70473), config.get_localized_string(70474)] + list_controls[1]['lvalues'] = [config.get_localized_string(70477), config.get_localized_string(70478)] return platformtools.show_channel_settings(list_controls=list_controls, dict_values=dict_values, caption=config.get_localized_string(70320), item=item, callback='order_trakt') @@ -2494,8 +2491,8 @@ def detalles_mal(item): itemlist.append( item.clone(title=config.get_localized_string(70321) % score, action="menu_mal", contentTitle=title_mal)) elif item.login and config.is_xbmc(): - status = {'1': 'Viendo Actualmente', '2': 'Completados', '3': 'En pausa', '4': 'Descartados', - '6': 'Previstos para ver'} + status = {'1': config.get_localized_string(70479), '2': config.get_localized_string(70480), '3': config.get_localized_string(70384), '4': config.get_localized_string(70385), + '6': config.get_localized_string(70481)} estado = scrapertools.find_single_match(data, 'myinfo_updateInfo".*?option selected="selected" value="(\d+)"') try: estado = status[estado] @@ -2995,7 +2992,7 @@ def info_anidb(item, itemlist, url): if abrev != title: title += " [%s]" % abrev estado = estado.replace("complete", config.get_localized_string(70378)).replace("finished", config.get_localized_string(70379)) \ - .replace("stalled", "Pausa").replace("dropped", "Abandonada") + .replace("stalled", config.get_localized_string(70380)).replace("dropped", config.get_localized_string(70381)) title += " [COLOR %s](%s)[/COLOR] %s/%s [%s]" % (color6, estado, epis, epi_total, source) itemlist.append(Item(channel=item.channel, title=title, infoLabels=infoLabels, action="", thumbnail=thumbnail, text_color=color4)) @@ -3012,22 +3009,22 @@ def filtro_mal(item): if valores_guardados: dict_values = valores_guardados - list_controls.append({'id': 'keyword', 'label': 'Palabra Clave', 'enabled': True, + list_controls.append({'id': 'keyword', 'label': config.get_localized_string(70465), 'enabled': True, 'type': 'text', 'default': '', 'visible': True}) - list_controls.append({'id': 'tipo', 'label': 'Tipo', 'enabled': True, + list_controls.append({'id': 'tipo', 'label': config.get_localized_string(70482), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) - list_controls[1]['lvalues'] = ['Especial', 'OVA', 'Película', 'Serie', 'Cualquiera'] + list_controls[1]['lvalues'] = [config.get_localized_string(70483), config.get_localized_string(70484), config.get_localized_string(60244), config.get_localized_string(70136), config.get_localized_string(70450)] valores["tipo"] = ['4', '2', '3', '1', '0'] - list_controls.append({'id': 'valoracion', 'label': 'Valoración', 'enabled': True, + list_controls.append({'id': 'valoracion', 'label': config.get_localized_string(70473), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) - list_controls[2]['lvalues'] = ['(1) Grotesca', '(2) Horrible', '(3) Muy mala', '(4) Mala', - '(5) Regular', '(6) Pasable', '(7) Buena', '(8) Muy buena', - '(9) Genial', '(10) Obra maestra', 'Cualquiera'] + list_controls[2]['lvalues'] = [config.get_localized_string(70486), config.get_localized_string(70487), config.get_localized_string(70488), config.get_localized_string(70489), + config.get_localized_string(70490), config.get_localized_string(70491), config.get_localized_string(70492), config.get_localized_string(70493), + config.get_localized_string(70494), config.get_localized_string(70495), config.get_localized_string(70450)] valores["valoracion"] = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '0'] - list_controls.append({'id': 'estado', 'label': 'Estado', 'enabled': True, + list_controls.append({'id': 'estado', 'label': config.get_localized_string(70485), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) - list_controls[3]['lvalues'] = ['Por estrenar', 'En emisión', 'Terminada', 'Cualquiera'] + list_controls[3]['lvalues'] = ['Por estrenar', config.get_localized_string(60264), config.get_localized_string(70379), config.get_localized_string(70450)] valores["estado"] = ['3', '1', '2', '0'] try: @@ -3037,7 +3034,7 @@ def filtro_mal(item): generos = scrapertools.find_multiple_matches(data, patron) if generos: list_controls.append({'id': 'labelgenre', 'enabled': True, 'type': 'label', 'default': None, - 'label': 'Selecciona uno, ninguno o más de un género', + 'label': config.get_localized_string(70451), 'visible': True, 'color': '0xFFC52020'}) for value, genre in generos: list_controls.append({'id': 'genre' + value, 'label': genre, 'enabled': True, @@ -3047,7 +3044,7 @@ def filtro_mal(item): list_controls.append({'id': 'espacio', 'label': '', 'enabled': False, 'type': 'label', 'default': None, 'visible': True}) - list_controls.append({'id': 'save', 'label': 'Establecer como filtro por defecto', 'enabled': True, + list_controls.append({'id': 'save', 'label': config.get_localized_string(70464), 'enabled': True, 'type': 'bool', 'default': False, 'visible': True}) item.valores = valores @@ -3231,8 +3228,8 @@ def menu_mal(item): data = httptools.downloadpage(item.url).data try: - status = {'1': 'Viendo Actualmente', '2': 'Completados', '3': 'En pausa', '4': 'Descartados', - '6': 'Previstos para ver'} + status = {'1': config.get_localized_string(70479), '2': config.get_localized_string(70480), '3': config.get_localized_string(70384), '4': config.get_localized_string(70385), + '6': config.get_localized_string(70481)} button, estado = scrapertools.find_single_match(data, 'myinfo_updateInfo"(.*?)>.*?option selected="selected" value="(\d+)"') if "disabled" in button: @@ -3250,8 +3247,8 @@ def menu_mal(item): item.lista = True itemlist.append(item.clone(title=config.get_localized_string(70390) % (item.contentTitle, title_estado), action="")) - status = {'1': 'Viendo Actualmente', '2': 'Completados', '3': 'En pausa', '4': 'Descartados', - '6': 'Previstos para ver'} + status = {'1': config.get_localized_string(70479), '2': config.get_localized_string(70480), '3': config.get_localized_string(70384), '4': config.get_localized_string(70385), + '6': config.get_localized_string(70481)} for key, value in status.items(): if not value in title_estado: itemlist.append( diff --git a/plugin.video.alfa/core/trakt_tools.py b/plugin.video.alfa/core/trakt_tools.py index e07c5971..1414a606 100644 --- a/plugin.video.alfa/core/trakt_tools.py +++ b/plugin.video.alfa/core/trakt_tools.py @@ -71,11 +71,11 @@ def token_trakt(item): data = jsontools.load(data) else: import time - dialog_auth = platformtools.dialog_progress("Sincronizar con Trakt. No cierres esta ventana", - "1. Entra en la siguiente url: %s" % item.verify_url, - "2. Ingresa este código en la página y acepta: %s" + dialog_auth = platformtools.dialog_progress(config.get_localized_string(60251), + config.get_localized_string(60252) % item.verify_url, + config.get_localized_string(60253) % item.user_code, - "3. Espera a que se cierre esta ventana") + config.get_localized_string(60254)) # Generalmente cada 5 segundos se intenta comprobar si el usuario ha introducido el código while True: diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 40a5bb6d..67bab068 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -2766,7 +2766,7 @@ msgid "Beginning" msgstr "" msgctxt "#70013" -msgid "Terror" +msgid "Horror" msgstr "" msgctxt "#70014" @@ -3857,14 +3857,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr " " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr " " - msgctxt "#70291" msgid "Error, during conversion" msgstr "" @@ -4277,4 +4269,416 @@ msgstr "" msgctxt "#70392" msgid "Rate with a [COLOR %s]%s[/ COLOR]" -msgstr "" \ No newline at end of file +msgstr "" + +msgctxt "#70393" +msgid "[%s]: Select the correct %s " +msgstr "" + +msgctxt "#70394" +msgid "Action" +msgstr "" + +msgctxt "#70395" +msgid "Sport" +msgstr "" + +msgctxt "#70396" +msgid "Documentary" +msgstr "" + +msgctxt "#70397" +msgid "Science fiction" +msgstr "" + +msgctxt "#70398" +msgid "Talk Show" +msgstr "" + +msgctxt "#70399" +msgid "Family" +msgstr "" + +msgctxt "#70400" +msgid "Film-Noir" +msgstr "" + +msgctxt "#70401" +msgid "Game-Show" +msgstr "" + +msgctxt "#70402" +msgid "Mystery" +msgstr "" + +msgctxt "#70403" +msgid "Biography" +msgstr "" + +msgctxt "#70404" +msgid "Music" +msgstr "" + +msgctxt "#70405" +msgid "History" +msgstr "" + +msgctxt "#70406" +msgid "Reality-TV" +msgstr "" + +msgctxt "#70407" +msgid "War" +msgstr "" + +msgctxt "#70408" +msgid "Musical" +msgstr "" + +msgctxt "#70409" +msgid "Romance" +msgstr "" + +msgctxt "#70410" +msgid "Thriller" +msgstr "Thriller" + +msgctxt "#70411" +msgid "Western" +msgstr "" + +msgctxt "#70412" +msgid "Drama" +msgstr "" + +msgctxt "#70413" +msgid "2. Enter this code on the page and click Allow: %s" +msgstr "" + +msgctxt "#70414" +msgid "Authentication. Do not close this window!!" +msgstr "" + +msgctxt "#70415" +msgid "Trakt.tv" +msgstr "" + +msgctxt "#70416" +msgid "=== Movies ===" +msgstr "" + +msgctxt "#70417" +msgid "=== TV Shows ===" +msgstr "" + +msgctxt "#70418" +msgid "Search language in TMDB" +msgstr "" + +msgctxt "#70419" +msgid "German" +msgstr "" + +msgctxt "#70420" +msgid "French" +msgstr "" + +msgctxt "#70421" +msgid "Portuguese" +msgstr "" + +msgctxt "#70422" +msgid "Italian" +msgstr "" + +msgctxt "#70423" +msgid "Spanish Latin" +msgstr "" + +msgctxt "#70424" +msgid "Catalan" +msgstr "" + +msgctxt "#70425" +msgid "English" +msgstr "" + +msgctxt "#70426" +msgid "Alternative language for TMDB (No main language synopsis)" +msgstr "" + +msgctxt "#70427" +msgid "Language of titles in IMDB" +msgstr "" + +msgctxt "#70428" +msgid "Filmaffinity website" +msgstr "" + +msgctxt "#70429" +msgid "Colombia" +msgstr "" + +msgctxt "#70430" +msgid "Chile" +msgstr "" + +msgctxt "#70431" +msgid "Argentina" +msgstr "" + +msgctxt "#70432" +msgid "Mexico" +msgstr "" + +msgctxt "#70433" +msgid "US/UK" +msgstr "" + +msgctxt "#70434" +msgid "Spain" +msgstr "" + +msgctxt "#70435" +msgid "User Filmaaffinity (Optional)" +msgstr "" + +msgctxt "#70436" +msgid "Password Filmaffinity" +msgstr "" + +msgctxt "#70437" +msgid "Order personal lists of Filmaffinity by:" +msgstr "" + +msgctxt "#70438" +msgid "Position" +msgstr "" + +msgctxt "#70439" +msgid "Vote" +msgstr "" + +msgctxt "#70440" +msgid "Average grade" +msgstr "" + +msgctxt "#70441" +msgid "User MyAnimeList (Optional)" +msgstr "" + +msgctxt "#70442" +msgid "Password MyAnimeList" +msgstr "" + +msgctxt "#70443" +msgid "Show Hentai in MyAnimeList" +msgstr "" + +msgctxt "#70444" +msgid "Profile 3" +msgstr "" + +msgctxt "#70445" +msgid "Profile 2" +msgstr "" + +msgctxt "#70446" +msgid "Profile 1" +msgstr "" + +msgctxt "#70447" +msgid "[%s] The file has been deleted" +msgstr "" + +msgctxt "#70448" +msgid "[%s] The file is still in process" +msgstr "" + +msgctxt "#70449" +msgid "" +msgstr "" + +msgctxt "#70450" +msgid "Anyone" +msgstr "" + +msgctxt "#70451" +msgid "Select one, none or more than one gender" +msgstr "S" + +msgctxt "#70452" +msgid "Year from" +msgstr "" + +msgctxt "#70453" +msgid "Year until" +msgstr "" + +msgctxt "#70454" +msgid "Minimum number of votes" +msgstr "" + +msgctxt "#70455" +msgid "Order by" +msgstr "" + +msgctxt "#70456" +msgid "Popularity Desc" +msgstr "" + +msgctxt "#70457" +msgid "Popularity Asc" +msgstr "" + +msgctxt "#70458" +msgid "Year Desc" +msgstr "" + +msgctxt "#70459" +msgid "Year Asc" +msgstr "" + +msgctxt "#70460" +msgid "Desc Rating" +msgstr "" + +msgctxt "#70461" +msgid "Asc Rating" +msgstr "" + +msgctxt "#70462" +msgid "Title [A-Z]" +msgstr "" + +msgctxt "#70463" +msgid "Title [Z-A]" +msgstr "" + +msgctxt "#70464" +msgid "Set as default filter" +msgstr "" + +msgctxt "#70465" +msgid "Key word" +msgstr "" + +msgctxt "#70466" +msgid "Country" +msgstr "" + +msgctxt "#70467" +msgid "Select a genre" +msgstr "" + +msgctxt "#70468" +msgid "Indicate your vote" +msgstr "" + +msgctxt "#70469" +msgid "Added" +msgstr "" + +msgctxt "#70470" +msgid "Premiere" +msgstr "" + +msgctxt "#70471" +msgid "Duration" +msgstr "" + +msgctxt "#70472" +msgid "Popularity" +msgstr "" + +msgctxt "#70473" +msgid "Rating" +msgstr "" + +msgctxt "#70474" +msgid "Votes" +msgstr "" + +msgctxt "#70475" +msgid "upward" +msgstr "" + +msgctxt "#70476" +msgid "falling" +msgstr "" + +msgctxt "#70477" +msgid "Upward" +msgstr "" + +msgctxt "#70478" +msgid "Falling" +msgstr "" + +msgctxt "#70479" +msgid "Currently watching" +msgstr "" + +msgctxt "#70480" +msgid "Completed" +msgstr "" + +msgctxt "#70481" +msgid "Anticipated to see" +msgstr "" + +msgctxt "#70482" +msgid "Kind" +msgstr "" + +msgctxt "#70483" +msgid "Special" +msgstr "" + +msgctxt "#70484" +msgid "OVA" +msgstr "" + +msgctxt "#70485" +msgid "Status" +msgstr "" + +msgctxt "#70486" +msgid "(1) Grotesque" +msgstr "" + +msgctxt "#70487" +msgid "(2) Horrible" +msgstr "" + +msgctxt "#70488" +msgid "(3) Very bad" +msgstr "" + +msgctxt "#70489" +msgid "(4) Bad" +msgstr "" + +msgctxt "#70490" +msgid "(5) Regular" +msgstr "" + +msgctxt "#70491" +msgid "(6) Pasable" +msgstr "" + +msgctxt "#70492" +msgid "(7) Good" +msgstr "" + +msgctxt "#70493" +msgid "(8) Very good" +msgstr "" + +msgctxt "#70494" +msgid "(9) Genial" +msgstr "" + +msgctxt "#70495" +msgid "(10) Masterpiece" +msgstr "" diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 8ebb6a0b..1d079dbd 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -2754,7 +2754,7 @@ msgid "Beginnin" msgstr "Inizio" msgctxt "#70013" -msgid "Terror" +msgid "Horror" msgstr "Orrore" msgctxt "#70014" @@ -3841,14 +3841,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configura Downloads" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorretto un errore nella sezione adulti, la password è sta resettata a quella di " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "default, puoi cambiarla di nuovo se vuoi.\n Scrivi 's', se hai capito: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Errore, in conversione" @@ -4261,4 +4253,420 @@ msgstr "Aggiungi alla lista %s" msgctxt "#70392" msgid "Rate with a [COLOR %s]%s[/ COLOR]" -msgstr "Dai un punteggio con un [COLOR %s]%s[/COLOR]" \ No newline at end of file +msgstr "Dai un punteggio con un [COLOR %s]%s[/COLOR]" + +msgctxt "#70393" +msgid "[%s]: Select the correct %s " +msgstr "[%s]: Selezona la %s corretta" + +msgctxt "#70394" +msgid "Action" +msgstr "Azione" + +msgctxt "#70395" +msgid "Sport" +msgstr "Sport" + +msgctxt "#70396" +msgid "Documentary" +msgstr "Documentari" + +msgctxt "#70397" +msgid "Science fiction" +msgstr "Fantascienza" + +msgctxt "#70398" +msgid "Talk Show" +msgstr "Talk Show" + +msgctxt "#70399" +msgid "Family" +msgstr "Famiglia" + +msgctxt "#70400" +msgid "Film-Noir" +msgstr "Film Noir" + +msgctxt "#70401" +msgid "Game-Show" +msgstr "Game Show" + +msgctxt "#70402" +msgid "Mystery" +msgstr "Mistero" + +msgctxt "#70403" +msgid "Biography" +msgstr "Biografía" + +msgctxt "#70404" +msgid "Music" +msgstr "Musica" + +msgctxt "#70405" +msgid "History" +msgstr "Storico" + +msgctxt "#70406" +msgid "Reality-TV" +msgstr "Reality Show" + +msgctxt "#70407" +msgid "War" +msgstr "Guerra" + +msgctxt "#70408" +msgid "Musical" +msgstr "Musical" + +msgctxt "#70409" +msgid "Romance" +msgstr "Romantico" + +msgctxt "#70410" +msgid "Thriller" +msgstr "Thriller" + +msgctxt "#70411" +msgid "Western" +msgstr "Western" + +msgctxt "#70412" +msgid "Drama" +msgstr "Drammatico" + +msgctxt "#70413" +msgid "" +msgstr "" + +msgctxt "#70413" +msgid "2. Enter this code on the page and click Allow: %s" +msgstr "2. Inserisci questo codice nella pagina e premi Allow: %s" + +msgctxt "#70414" +msgid "Authentication. Do not close this window!!" +msgstr "Autenticazione. Non chiudere questa finestra!!" + +msgctxt "#70415" +msgid "Trakt.tv" +msgstr "Trakt.tv" + +msgctxt "#70416" +msgid "=== Movies ===" +msgstr "=== Film ===" + +msgctxt "#70417" +msgid "=== TV Shows ===" +msgstr "=== Serie TV ===" + +msgctxt "#70418" +msgid "Search language in TMDB" +msgstr "Ligua di ricerca in TMDB" + +msgctxt "#70419" +msgid "German" +msgstr "Tedesco" + +msgctxt "#70420" +msgid "French" +msgstr "Francese" + +msgctxt "#70421" +msgid "Portuguese" +msgstr "Portoghese" + +msgctxt "#70422" +msgid "Italian" +msgstr "Italiano" + +msgctxt "#70423" +msgid "Spanish Latin" +msgstr "Spagnolo Latino" + +msgctxt "#70424" +msgid "Catalan" +msgstr "Catalano" + +msgctxt "#70425" +msgid "English" +msgstr "Inglese" + +msgctxt "#70426" +msgid "Alternative language for TMDB (No main language synopsis)" +msgstr "Linguaggio alternativo per TMDB (sinossi senza lingua principale)" + +msgctxt "#70427" +msgid "Language of titles in IMDB" +msgstr "Lingua per i titoli in IMDB" + +msgctxt "#70428" +msgid "Filmaffinity website" +msgstr "Sitio Web Filmaffinity" + +msgctxt "#70429" +msgid "Colombia" +msgstr "Colombia" + +msgctxt "#70430" +msgid "Chile" +msgstr "Cile" + +msgctxt "#70431" +msgid "Argentina" +msgstr "Argentina" + +msgctxt "#70432" +msgid "Mexico" +msgstr "Messico" + +msgctxt "#70433" +msgid "US/UK" +msgstr "US/UK" + +msgctxt "#70434" +msgid "Spain" +msgstr "Spagna" + +msgctxt "#70435" +msgid "User Filmaaffinity (Optional)" +msgstr "Username Filmaffinity (Opzionale)" + +msgctxt "#70436" +msgid "Password Filmaffinity" +msgstr "Password Filmaffinity" + +msgctxt "#70437" +msgid "Order personal lists of Filmaffinity by:" +msgstr "Ordina liste personali di Filmaffinity per:" + +msgctxt "#70438" +msgid "Position" +msgstr "Posizione" + +msgctxt "#70439" +msgid "Vote" +msgstr "Voto" + +msgctxt "#70440" +msgid "Average grade" +msgstr "Valutazione media" + +msgctxt "#70441" +msgid "User MyAnimeList (Optional)" +msgstr "Username MyAnimeList (Opzionale)" + +msgctxt "#70442" +msgid "Password MyAnimeList" +msgstr "Password MyAnimeList" + +msgctxt "#70443" +msgid "Show Hentai in MyAnimeList" +msgstr "Mostra Hentai in MyAnimeList" + +msgctxt "#70444" +msgid "Profile 3" +msgstr "Perofilo 3" + +msgctxt "#70445" +msgid "Profile 2" +msgstr "Profilo 2" + +msgctxt "#70446" +msgid "Profile 1" +msgstr "Profilo 1" + +msgctxt "#70447" +msgid "[%s] The file has been deleted" +msgstr "[%s] Il file è stato cancellato" + +msgctxt "#70448" +msgid "[%s] The file is still in process" +msgstr "[%s] Il file è ancora in elaborazione" + +msgctxt "#70449" +msgid "[%s] The file does not exist or has been deleted" +msgstr "[%s] Il file non esiste oppure è stato cancellato" + +msgctxt "#70450" +msgid "Anyone" +msgstr "Qualsiasi" + +msgctxt "#70451" +msgid "Select one, none or more than one gender" +msgstr "Seleziona uno, nessuno o più di un genere" + +msgctxt "#70452" +msgid "Year from" +msgstr "Anno da:" + +msgctxt "#70453" +msgid "Year until" +msgstr "Anno fino a:" + +msgctxt "#70454" +msgid "Minimum number of votes" +msgstr "Numero minimo di voti" + +msgctxt "#70455" +msgid "Order by" +msgstr "Ordina per" + +msgctxt "#70456" +msgid "Popularity Desc" +msgstr "Popolarità Desc" + +msgctxt "#70457" +msgid "Popularity Asc" +msgstr "Popolarità Asc" + +msgctxt "#70458" +msgid "Year Desc" +msgstr "Anno Desc" + +msgctxt "#70459" +msgid "Year Asc" +msgstr "Anno Asc" + +msgctxt "#70460" +msgid "Desc Rating" +msgstr "Rating Desc" + +msgctxt "#70461" +msgid "Asc Rating" +msgstr "Rating Asc" + +msgctxt "#70462" +msgid "Title [A-Z]" +msgstr "Titolo [A-Z]" + +msgctxt "#70463" +msgid "Title [Z-A]" +msgstr "Titolo[Z-A]" + +msgctxt "#70464" +msgid "Set as default filter" +msgstr "Impostare come filtro di default" + +msgctxt "#70465" +msgid "Key word" +msgstr "Parola Chiave" + +msgctxt "#70466" +msgid "Country" +msgstr "Nazione" + +msgctxt "#70467" +msgid "Select a genre" +msgstr "Seleziona un genere" + +msgctxt "#70468" +msgid "Indicate your vote" +msgstr "Indica il tuo voto:" + +msgctxt "#70469" +msgid "Added" +msgstr "Aggiunto" + +msgctxt "#70470" +msgid "Premiere" +msgstr "Premiere" + +msgctxt "#70471" +msgid "Duration" +msgstr "Durata" + +msgctxt "#70472" +msgid "Popularity" +msgstr "Popolarità" + +msgctxt "#70473" +msgid "Rating" +msgstr "Rating" + +msgctxt "#70474" +msgid "Votes" +msgstr "Voti" + +msgctxt "#70475" +msgid "upward" +msgstr "ascendente" + +msgctxt "#70476" +msgid "falling" +msgstr "discendente" + +msgctxt "#70477" +msgid "Upward" +msgstr "Ascendente" + +msgctxt "#70478" +msgid "Falling" +msgstr "Discendente" + +msgctxt "#70479" +msgid "Currently watching" +msgstr "In visione attualmente" + +msgctxt "#70480" +msgid "Completed" +msgstr "Completati" + +msgctxt "#70481" +msgid "Anticipated to see" +msgstr "Da vedersi" + +msgctxt "#70482" +msgid "Kind" +msgstr "Tipo" + +msgctxt "#70483" +msgid "Special" +msgstr "Special" + +msgctxt "#70484" +msgid "OVA" +msgstr "OVA" + +msgctxt "#70485" +msgid "Status" +msgstr "Stato" + +msgctxt "#70486" +msgid "(1) Grotesque" +msgstr "(1) Grottesco" + +msgctxt "#70487" +msgid "(2) Horrible" +msgstr "(2) orribile" + +msgctxt "#70488" +msgid "(3) Very bad" +msgstr "(3) bruttissimo" + +msgctxt "#70489" +msgid "(4) Bad" +msgstr "(4) Brutto" + +msgctxt "#70490" +msgid "(5) Regular" +msgstr "(5) Regulare" + +msgctxt "#70491" +msgid "(6) Pasable" +msgstr "(6) Passabile" + +msgctxt "#70492" +msgid "(7) Good" +msgstr "(7) Buono" + +msgctxt "#70493" +msgid "(8) Very good" +msgstr "(8) Ottimo" + +msgctxt "#70494" +msgid "(9) Genial" +msgstr "(9) Geniale" + +msgctxt "#70495" +msgid "(10) Masterpiece" +msgstr "(10) Capolavoro" diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index 2f4be12c..d848f2e3 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -2766,7 +2766,7 @@ msgid "Beginning" msgstr "Inìcio" msgctxt "#70013" -msgid "Terror" +msgid "Horror" msgstr "Terror" msgctxt "#70014" @@ -3255,7 +3255,7 @@ msgstr "Colores Personalizados" msgctxt "#70137" msgid "Movies" -msgstr "Peliculas" +msgstr "Películas" msgctxt "#70138" msgid "Low Rating" @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" @@ -4266,3 +4258,415 @@ msgstr "Añadir a lista %s" msgctxt "#70392" msgid "Rate with a [COLOR %s]%s[/ COLOR]" msgstr "Puntuar con un [COLOR %s]%s[/COLOR]" + +msgctxt "#70393" +msgid "[%s]: Select the correct %s " +msgstr "[%s]: Selecciona la %s correcta" + +msgctxt "#70394" +msgid "Action" +msgstr "Accion" + +msgctxt "#70395" +msgid "Sport" +msgstr "Deportes" + +msgctxt "#70396" +msgid "Documentary" +msgstr "Documental" + +msgctxt "#70397" +msgid "Science fiction" +msgstr "Ciencia Ficción" + +msgctxt "#70398" +msgid "Talk Show" +msgstr "Entrevistas" + +msgctxt "#70399" +msgid "Family" +msgstr "Familia" + +msgctxt "#70400" +msgid "Film-Noir" +msgstr "Cine Negro" + +msgctxt "#70401" +msgid "Game-Show" +msgstr "Concursos" + +msgctxt "#70402" +msgid "Mystery" +msgstr "Intriga" + +msgctxt "#70403" +msgid "Biography" +msgstr "Biografía" + +msgctxt "#70404" +msgid "Music" +msgstr "Música" + +msgctxt "#70405" +msgid "History" +msgstr "Historia" + +msgctxt "#70406" +msgid "Reality-TV" +msgstr "Reality" + +msgctxt "#70407" +msgid "War" +msgstr "Cine Bélico" + +msgctxt "#70408" +msgid "Musical" +msgstr "Musical" + +msgctxt "#70409" +msgid "Romance" +msgstr "Romance" + +msgctxt "#70410" +msgid "Thriller" +msgstr "Thriller" + +msgctxt "#70411" +msgid "Western" +msgstr "Western" + +msgctxt "#70412" +msgid "Drama" +msgstr "Drama" + +msgctxt "#70413" +msgid "2. Enter this code on the page and click Allow: %s" +msgstr "2. Ingresa este código en la página y presiona Allow: %s" + +msgctxt "#70414" +msgid "Authentication. Do not close this window!!" +msgstr "Autentificación. No cierres esta ventana!!" + +msgctxt "#70415" +msgid "Trakt.tv" +msgstr "Trakt.tv" + +msgctxt "#70416" +msgid "=== Movies ===" +msgstr "=== Peliculas ===" + +msgctxt "#70417" +msgid "=== TV Shows ===" +msgstr "=== Series ===" + +msgctxt "#70418" +msgid "Search language in TMDB" +msgstr "Idioma de búsqueda en TMDB" + +msgctxt "#70419" +msgid "German" +msgstr "Alemán" + +msgctxt "#70420" +msgid "French" +msgstr "Francés" + +msgctxt "#70421" +msgid "Portuguese" +msgstr "Portugués" + +msgctxt "#70422" +msgid "Italian" +msgstr "Italiano" + +msgctxt "#70423" +msgid "Spanish Latin" +msgstr "Español Latino" + +msgctxt "#70424" +msgid "Catalan" +msgstr "Catalán" + +msgctxt "#70425" +msgid "English" +msgstr "Inglés" + +msgctxt "#70426" +msgid "Alternative language for TMDB (No main language synopsis)" +msgstr "Idioma alternativo para TMDB (No sinopsis idioma principal)" + +msgctxt "#70427" +msgid "Language of titles in IMDB" +msgstr "Idioma de los títulos en IMDB" + +msgctxt "#70428" +msgid "Filmaffinity website" +msgstr "Sitio Web Filmaffinity" + +msgctxt "#70429" +msgid "Colombia" +msgstr "Colombia" + +msgctxt "#70430" +msgid "Chile" +msgstr "Chile" + +msgctxt "#70431" +msgid "Argentina" +msgstr "Argentina" + +msgctxt "#70432" +msgid "Mexico" +msgstr "México" + +msgctxt "#70433" +msgid "US/UK" +msgstr "US/UK" + +msgctxt "#70434" +msgid "Spain" +msgstr "España" + +msgctxt "#70435" +msgid "User Filmaaffinity (Optional)" +msgstr "Usuario Filmaffinity (Opcional)" + +msgctxt "#70436" +msgid "Password Filmaffinity" +msgstr "Contraseña Filmaffinity" + +msgctxt "#70437" +msgid "Order personal lists of Filmaffinity by:" +msgstr "Ordenar listas personales de Filmaffinity por:" + +msgctxt "#70438" +msgid "Position" +msgstr "Posición" + +msgctxt "#70439" +msgid "Vote" +msgstr "Voto" + +msgctxt "#70440" +msgid "Average grade" +msgstr "Nota media" + +msgctxt "#70441" +msgid "User MyAnimeList (Optional)" +msgstr "Usuario MyAnimeList (Opcional)" + +msgctxt "#70442" +msgid "Password MyAnimeList" +msgstr "Contraseña MyAnimeList" + +msgctxt "#70443" +msgid "Show Hentai in MyAnimeList" +msgstr "Mostrar Hentais en MyAnimeList" + +msgctxt "#70444" +msgid "Profile 3" +msgstr "Perfil 3" + +msgctxt "#70445" +msgid "Profile 2" +msgstr "Perfil 2" + +msgctxt "#70446" +msgid "Profile 1" +msgstr "Perfil 1" + +msgctxt "#70447" +msgid "[%s] The file has been deleted" +msgstr "[%s] El fichero ha sido borrado" + +msgctxt "#70448" +msgid "[%s] The file is still in process" +msgstr "[%s] El fichero está en proceso todavía" + +msgctxt "#70449" +msgid "[%s] The file does not exist or has been deleted" +msgstr "[%s] El archivo no existe o ha sido borrado" + +msgctxt "#70450" +msgid "Anyone" +msgstr "Cualquiera" + +msgctxt "#70451" +msgid "Select one, none or more than one gender" +msgstr "Selecciona uno, ninguno o más de un género" + +msgctxt "#70452" +msgid "Year from" +msgstr "Año desde:" + +msgctxt "#70453" +msgid "Year until" +msgstr "Año hasta:" + +msgctxt "#70454" +msgid "Minimum number of votes" +msgstr "Número mínimo de votos" + +msgctxt "#70455" +msgid "Order by" +msgstr "Ordenar por" + +msgctxt "#70456" +msgid "Popularity Desc" +msgstr "Popularidad Desc" + +msgctxt "#70457" +msgid "Popularity Asc" +msgstr "Popularidad Asc" + +msgctxt "#70458" +msgid "Year Desc" +msgstr "Año Desc" + +msgctxt "#70459" +msgid "Year Asc" +msgstr "Año Asc" + +msgctxt "#70460" +msgid "Desc Rating" +msgstr "Valoración Desc" + +msgctxt "#70461" +msgid "Asc Rating" +msgstr "Valoración Asc" + +msgctxt "#70462" +msgid "Title [A-Z]" +msgstr "Título [A-Z]" + +msgctxt "#70463" +msgid "Title [Z-A]" +msgstr "Título [Z-A]" + +msgctxt "#70464" +msgid "Set as default filter" +msgstr "Establecer como filtro por defecto" + +msgctxt "#70465" +msgid "Key word" +msgstr "Palabra Clave" + +msgctxt "#70466" +msgid "Country" +msgstr "País" + +msgctxt "#70467" +msgid "Select a genre" +msgstr "Selecciona un género" + +msgctxt "#70468" +msgid "Indicate your vote" +msgstr "Indica tu voto:" + +msgctxt "#70469" +msgid "Added" +msgstr "Añadido" + +msgctxt "#70470" +msgid "Premiere" +msgstr "Estreno" + +msgctxt "#70471" +msgid "Duration" +msgstr "Duración" + +msgctxt "#70472" +msgid "Popularity" +msgstr "Popularidad" + +msgctxt "#70473" +msgid "Rating" +msgstr "Valoración" + +msgctxt "#70474" +msgid "Votes" +msgstr "Votos" + +msgctxt "#70475" +msgid "upward" +msgstr "ascendente" + +msgctxt "#70476" +msgid "falling" +msgstr "descendente" + +msgctxt "#70477" +msgid "Upward" +msgstr "Ascendente" + +msgctxt "#70478" +msgid "Falling" +msgstr "Descendente" + +msgctxt "#70479" +msgid "Currently watching" +msgstr "Viendo Actualmente" + +msgctxt "#70480" +msgid "Completed" +msgstr "Completados" + +msgctxt "#70481" +msgid "Anticipated to see" +msgstr "Previstos para ver" + +msgctxt "#70482" +msgid "Kind" +msgstr "Tipo" + +msgctxt "#70483" +msgid "Special" +msgstr "Especial" + +msgctxt "#70484" +msgid "OVA" +msgstr "OVA" + +msgctxt "#70485" +msgid "Status" +msgstr "Estado" + +msgctxt "#70486" +msgid "(1) Grotesque" +msgstr "(1) Grotesca" + +msgctxt "#70487" +msgid "(2) Horrible" +msgstr "(2) Horrible" + +msgctxt "#70488" +msgid "(3) Very bad" +msgstr "(3) Muy mala" + +msgctxt "#70489" +msgid "(4) Bad" +msgstr "(4) Mala" + +msgctxt "#70490" +msgid "(5) Regular" +msgstr "(5) Regular" + +msgctxt "#70491" +msgid "(6) Pasable" +msgstr "(6) Pasable" + +msgctxt "#70492" +msgid "(7) Good" +msgstr "(7) Buena" + +msgctxt "#70493" +msgid "(8) Very good" +msgstr "(8) Muy buena" + +msgctxt "#70494" +msgid "(9) Genial" +msgstr "(9) Genial" + +msgctxt "#70495" +msgid "(10) Masterpiece" +msgstr "(10) Obra maestra" diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index 2f4be12c..d848f2e3 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -2766,7 +2766,7 @@ msgid "Beginning" msgstr "Inìcio" msgctxt "#70013" -msgid "Terror" +msgid "Horror" msgstr "Terror" msgctxt "#70014" @@ -3255,7 +3255,7 @@ msgstr "Colores Personalizados" msgctxt "#70137" msgid "Movies" -msgstr "Peliculas" +msgstr "Películas" msgctxt "#70138" msgid "Low Rating" @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" @@ -4266,3 +4258,415 @@ msgstr "Añadir a lista %s" msgctxt "#70392" msgid "Rate with a [COLOR %s]%s[/ COLOR]" msgstr "Puntuar con un [COLOR %s]%s[/COLOR]" + +msgctxt "#70393" +msgid "[%s]: Select the correct %s " +msgstr "[%s]: Selecciona la %s correcta" + +msgctxt "#70394" +msgid "Action" +msgstr "Accion" + +msgctxt "#70395" +msgid "Sport" +msgstr "Deportes" + +msgctxt "#70396" +msgid "Documentary" +msgstr "Documental" + +msgctxt "#70397" +msgid "Science fiction" +msgstr "Ciencia Ficción" + +msgctxt "#70398" +msgid "Talk Show" +msgstr "Entrevistas" + +msgctxt "#70399" +msgid "Family" +msgstr "Familia" + +msgctxt "#70400" +msgid "Film-Noir" +msgstr "Cine Negro" + +msgctxt "#70401" +msgid "Game-Show" +msgstr "Concursos" + +msgctxt "#70402" +msgid "Mystery" +msgstr "Intriga" + +msgctxt "#70403" +msgid "Biography" +msgstr "Biografía" + +msgctxt "#70404" +msgid "Music" +msgstr "Música" + +msgctxt "#70405" +msgid "History" +msgstr "Historia" + +msgctxt "#70406" +msgid "Reality-TV" +msgstr "Reality" + +msgctxt "#70407" +msgid "War" +msgstr "Cine Bélico" + +msgctxt "#70408" +msgid "Musical" +msgstr "Musical" + +msgctxt "#70409" +msgid "Romance" +msgstr "Romance" + +msgctxt "#70410" +msgid "Thriller" +msgstr "Thriller" + +msgctxt "#70411" +msgid "Western" +msgstr "Western" + +msgctxt "#70412" +msgid "Drama" +msgstr "Drama" + +msgctxt "#70413" +msgid "2. Enter this code on the page and click Allow: %s" +msgstr "2. Ingresa este código en la página y presiona Allow: %s" + +msgctxt "#70414" +msgid "Authentication. Do not close this window!!" +msgstr "Autentificación. No cierres esta ventana!!" + +msgctxt "#70415" +msgid "Trakt.tv" +msgstr "Trakt.tv" + +msgctxt "#70416" +msgid "=== Movies ===" +msgstr "=== Peliculas ===" + +msgctxt "#70417" +msgid "=== TV Shows ===" +msgstr "=== Series ===" + +msgctxt "#70418" +msgid "Search language in TMDB" +msgstr "Idioma de búsqueda en TMDB" + +msgctxt "#70419" +msgid "German" +msgstr "Alemán" + +msgctxt "#70420" +msgid "French" +msgstr "Francés" + +msgctxt "#70421" +msgid "Portuguese" +msgstr "Portugués" + +msgctxt "#70422" +msgid "Italian" +msgstr "Italiano" + +msgctxt "#70423" +msgid "Spanish Latin" +msgstr "Español Latino" + +msgctxt "#70424" +msgid "Catalan" +msgstr "Catalán" + +msgctxt "#70425" +msgid "English" +msgstr "Inglés" + +msgctxt "#70426" +msgid "Alternative language for TMDB (No main language synopsis)" +msgstr "Idioma alternativo para TMDB (No sinopsis idioma principal)" + +msgctxt "#70427" +msgid "Language of titles in IMDB" +msgstr "Idioma de los títulos en IMDB" + +msgctxt "#70428" +msgid "Filmaffinity website" +msgstr "Sitio Web Filmaffinity" + +msgctxt "#70429" +msgid "Colombia" +msgstr "Colombia" + +msgctxt "#70430" +msgid "Chile" +msgstr "Chile" + +msgctxt "#70431" +msgid "Argentina" +msgstr "Argentina" + +msgctxt "#70432" +msgid "Mexico" +msgstr "México" + +msgctxt "#70433" +msgid "US/UK" +msgstr "US/UK" + +msgctxt "#70434" +msgid "Spain" +msgstr "España" + +msgctxt "#70435" +msgid "User Filmaaffinity (Optional)" +msgstr "Usuario Filmaffinity (Opcional)" + +msgctxt "#70436" +msgid "Password Filmaffinity" +msgstr "Contraseña Filmaffinity" + +msgctxt "#70437" +msgid "Order personal lists of Filmaffinity by:" +msgstr "Ordenar listas personales de Filmaffinity por:" + +msgctxt "#70438" +msgid "Position" +msgstr "Posición" + +msgctxt "#70439" +msgid "Vote" +msgstr "Voto" + +msgctxt "#70440" +msgid "Average grade" +msgstr "Nota media" + +msgctxt "#70441" +msgid "User MyAnimeList (Optional)" +msgstr "Usuario MyAnimeList (Opcional)" + +msgctxt "#70442" +msgid "Password MyAnimeList" +msgstr "Contraseña MyAnimeList" + +msgctxt "#70443" +msgid "Show Hentai in MyAnimeList" +msgstr "Mostrar Hentais en MyAnimeList" + +msgctxt "#70444" +msgid "Profile 3" +msgstr "Perfil 3" + +msgctxt "#70445" +msgid "Profile 2" +msgstr "Perfil 2" + +msgctxt "#70446" +msgid "Profile 1" +msgstr "Perfil 1" + +msgctxt "#70447" +msgid "[%s] The file has been deleted" +msgstr "[%s] El fichero ha sido borrado" + +msgctxt "#70448" +msgid "[%s] The file is still in process" +msgstr "[%s] El fichero está en proceso todavía" + +msgctxt "#70449" +msgid "[%s] The file does not exist or has been deleted" +msgstr "[%s] El archivo no existe o ha sido borrado" + +msgctxt "#70450" +msgid "Anyone" +msgstr "Cualquiera" + +msgctxt "#70451" +msgid "Select one, none or more than one gender" +msgstr "Selecciona uno, ninguno o más de un género" + +msgctxt "#70452" +msgid "Year from" +msgstr "Año desde:" + +msgctxt "#70453" +msgid "Year until" +msgstr "Año hasta:" + +msgctxt "#70454" +msgid "Minimum number of votes" +msgstr "Número mínimo de votos" + +msgctxt "#70455" +msgid "Order by" +msgstr "Ordenar por" + +msgctxt "#70456" +msgid "Popularity Desc" +msgstr "Popularidad Desc" + +msgctxt "#70457" +msgid "Popularity Asc" +msgstr "Popularidad Asc" + +msgctxt "#70458" +msgid "Year Desc" +msgstr "Año Desc" + +msgctxt "#70459" +msgid "Year Asc" +msgstr "Año Asc" + +msgctxt "#70460" +msgid "Desc Rating" +msgstr "Valoración Desc" + +msgctxt "#70461" +msgid "Asc Rating" +msgstr "Valoración Asc" + +msgctxt "#70462" +msgid "Title [A-Z]" +msgstr "Título [A-Z]" + +msgctxt "#70463" +msgid "Title [Z-A]" +msgstr "Título [Z-A]" + +msgctxt "#70464" +msgid "Set as default filter" +msgstr "Establecer como filtro por defecto" + +msgctxt "#70465" +msgid "Key word" +msgstr "Palabra Clave" + +msgctxt "#70466" +msgid "Country" +msgstr "País" + +msgctxt "#70467" +msgid "Select a genre" +msgstr "Selecciona un género" + +msgctxt "#70468" +msgid "Indicate your vote" +msgstr "Indica tu voto:" + +msgctxt "#70469" +msgid "Added" +msgstr "Añadido" + +msgctxt "#70470" +msgid "Premiere" +msgstr "Estreno" + +msgctxt "#70471" +msgid "Duration" +msgstr "Duración" + +msgctxt "#70472" +msgid "Popularity" +msgstr "Popularidad" + +msgctxt "#70473" +msgid "Rating" +msgstr "Valoración" + +msgctxt "#70474" +msgid "Votes" +msgstr "Votos" + +msgctxt "#70475" +msgid "upward" +msgstr "ascendente" + +msgctxt "#70476" +msgid "falling" +msgstr "descendente" + +msgctxt "#70477" +msgid "Upward" +msgstr "Ascendente" + +msgctxt "#70478" +msgid "Falling" +msgstr "Descendente" + +msgctxt "#70479" +msgid "Currently watching" +msgstr "Viendo Actualmente" + +msgctxt "#70480" +msgid "Completed" +msgstr "Completados" + +msgctxt "#70481" +msgid "Anticipated to see" +msgstr "Previstos para ver" + +msgctxt "#70482" +msgid "Kind" +msgstr "Tipo" + +msgctxt "#70483" +msgid "Special" +msgstr "Especial" + +msgctxt "#70484" +msgid "OVA" +msgstr "OVA" + +msgctxt "#70485" +msgid "Status" +msgstr "Estado" + +msgctxt "#70486" +msgid "(1) Grotesque" +msgstr "(1) Grotesca" + +msgctxt "#70487" +msgid "(2) Horrible" +msgstr "(2) Horrible" + +msgctxt "#70488" +msgid "(3) Very bad" +msgstr "(3) Muy mala" + +msgctxt "#70489" +msgid "(4) Bad" +msgstr "(4) Mala" + +msgctxt "#70490" +msgid "(5) Regular" +msgstr "(5) Regular" + +msgctxt "#70491" +msgid "(6) Pasable" +msgstr "(6) Pasable" + +msgctxt "#70492" +msgid "(7) Good" +msgstr "(7) Buena" + +msgctxt "#70493" +msgid "(8) Very good" +msgstr "(8) Muy buena" + +msgctxt "#70494" +msgid "(9) Genial" +msgstr "(9) Genial" + +msgctxt "#70495" +msgid "(10) Masterpiece" +msgstr "(10) Obra maestra" diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 2f4be12c..d848f2e3 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -2766,7 +2766,7 @@ msgid "Beginning" msgstr "Inìcio" msgctxt "#70013" -msgid "Terror" +msgid "Horror" msgstr "Terror" msgctxt "#70014" @@ -3255,7 +3255,7 @@ msgstr "Colores Personalizados" msgctxt "#70137" msgid "Movies" -msgstr "Peliculas" +msgstr "Películas" msgctxt "#70138" msgid "Low Rating" @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\ n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" @@ -4266,3 +4258,415 @@ msgstr "Añadir a lista %s" msgctxt "#70392" msgid "Rate with a [COLOR %s]%s[/ COLOR]" msgstr "Puntuar con un [COLOR %s]%s[/COLOR]" + +msgctxt "#70393" +msgid "[%s]: Select the correct %s " +msgstr "[%s]: Selecciona la %s correcta" + +msgctxt "#70394" +msgid "Action" +msgstr "Accion" + +msgctxt "#70395" +msgid "Sport" +msgstr "Deportes" + +msgctxt "#70396" +msgid "Documentary" +msgstr "Documental" + +msgctxt "#70397" +msgid "Science fiction" +msgstr "Ciencia Ficción" + +msgctxt "#70398" +msgid "Talk Show" +msgstr "Entrevistas" + +msgctxt "#70399" +msgid "Family" +msgstr "Familia" + +msgctxt "#70400" +msgid "Film-Noir" +msgstr "Cine Negro" + +msgctxt "#70401" +msgid "Game-Show" +msgstr "Concursos" + +msgctxt "#70402" +msgid "Mystery" +msgstr "Intriga" + +msgctxt "#70403" +msgid "Biography" +msgstr "Biografía" + +msgctxt "#70404" +msgid "Music" +msgstr "Música" + +msgctxt "#70405" +msgid "History" +msgstr "Historia" + +msgctxt "#70406" +msgid "Reality-TV" +msgstr "Reality" + +msgctxt "#70407" +msgid "War" +msgstr "Cine Bélico" + +msgctxt "#70408" +msgid "Musical" +msgstr "Musical" + +msgctxt "#70409" +msgid "Romance" +msgstr "Romance" + +msgctxt "#70410" +msgid "Thriller" +msgstr "Thriller" + +msgctxt "#70411" +msgid "Western" +msgstr "Western" + +msgctxt "#70412" +msgid "Drama" +msgstr "Drama" + +msgctxt "#70413" +msgid "2. Enter this code on the page and click Allow: %s" +msgstr "2. Ingresa este código en la página y presiona Allow: %s" + +msgctxt "#70414" +msgid "Authentication. Do not close this window!!" +msgstr "Autentificación. No cierres esta ventana!!" + +msgctxt "#70415" +msgid "Trakt.tv" +msgstr "Trakt.tv" + +msgctxt "#70416" +msgid "=== Movies ===" +msgstr "=== Peliculas ===" + +msgctxt "#70417" +msgid "=== TV Shows ===" +msgstr "=== Series ===" + +msgctxt "#70418" +msgid "Search language in TMDB" +msgstr "Idioma de búsqueda en TMDB" + +msgctxt "#70419" +msgid "German" +msgstr "Alemán" + +msgctxt "#70420" +msgid "French" +msgstr "Francés" + +msgctxt "#70421" +msgid "Portuguese" +msgstr "Portugués" + +msgctxt "#70422" +msgid "Italian" +msgstr "Italiano" + +msgctxt "#70423" +msgid "Spanish Latin" +msgstr "Español Latino" + +msgctxt "#70424" +msgid "Catalan" +msgstr "Catalán" + +msgctxt "#70425" +msgid "English" +msgstr "Inglés" + +msgctxt "#70426" +msgid "Alternative language for TMDB (No main language synopsis)" +msgstr "Idioma alternativo para TMDB (No sinopsis idioma principal)" + +msgctxt "#70427" +msgid "Language of titles in IMDB" +msgstr "Idioma de los títulos en IMDB" + +msgctxt "#70428" +msgid "Filmaffinity website" +msgstr "Sitio Web Filmaffinity" + +msgctxt "#70429" +msgid "Colombia" +msgstr "Colombia" + +msgctxt "#70430" +msgid "Chile" +msgstr "Chile" + +msgctxt "#70431" +msgid "Argentina" +msgstr "Argentina" + +msgctxt "#70432" +msgid "Mexico" +msgstr "México" + +msgctxt "#70433" +msgid "US/UK" +msgstr "US/UK" + +msgctxt "#70434" +msgid "Spain" +msgstr "España" + +msgctxt "#70435" +msgid "User Filmaaffinity (Optional)" +msgstr "Usuario Filmaffinity (Opcional)" + +msgctxt "#70436" +msgid "Password Filmaffinity" +msgstr "Contraseña Filmaffinity" + +msgctxt "#70437" +msgid "Order personal lists of Filmaffinity by:" +msgstr "Ordenar listas personales de Filmaffinity por:" + +msgctxt "#70438" +msgid "Position" +msgstr "Posición" + +msgctxt "#70439" +msgid "Vote" +msgstr "Voto" + +msgctxt "#70440" +msgid "Average grade" +msgstr "Nota media" + +msgctxt "#70441" +msgid "User MyAnimeList (Optional)" +msgstr "Usuario MyAnimeList (Opcional)" + +msgctxt "#70442" +msgid "Password MyAnimeList" +msgstr "Contraseña MyAnimeList" + +msgctxt "#70443" +msgid "Show Hentai in MyAnimeList" +msgstr "Mostrar Hentais en MyAnimeList" + +msgctxt "#70444" +msgid "Profile 3" +msgstr "Perfil 3" + +msgctxt "#70445" +msgid "Profile 2" +msgstr "Perfil 2" + +msgctxt "#70446" +msgid "Profile 1" +msgstr "Perfil 1" + +msgctxt "#70447" +msgid "[%s] The file has been deleted" +msgstr "[%s] El fichero ha sido borrado" + +msgctxt "#70448" +msgid "[%s] The file is still in process" +msgstr "[%s] El fichero está en proceso todavía" + +msgctxt "#70449" +msgid "[%s] The file does not exist or has been deleted" +msgstr "[%s] El archivo no existe o ha sido borrado" + +msgctxt "#70450" +msgid "Anyone" +msgstr "Cualquiera" + +msgctxt "#70451" +msgid "Select one, none or more than one gender" +msgstr "Selecciona uno, ninguno o más de un género" + +msgctxt "#70452" +msgid "Year from" +msgstr "Año desde:" + +msgctxt "#70453" +msgid "Year until" +msgstr "Año hasta:" + +msgctxt "#70454" +msgid "Minimum number of votes" +msgstr "Número mínimo de votos" + +msgctxt "#70455" +msgid "Order by" +msgstr "Ordenar por" + +msgctxt "#70456" +msgid "Popularity Desc" +msgstr "Popularidad Desc" + +msgctxt "#70457" +msgid "Popularity Asc" +msgstr "Popularidad Asc" + +msgctxt "#70458" +msgid "Year Desc" +msgstr "Año Desc" + +msgctxt "#70459" +msgid "Year Asc" +msgstr "Año Asc" + +msgctxt "#70460" +msgid "Desc Rating" +msgstr "Valoración Desc" + +msgctxt "#70461" +msgid "Asc Rating" +msgstr "Valoración Asc" + +msgctxt "#70462" +msgid "Title [A-Z]" +msgstr "Título [A-Z]" + +msgctxt "#70463" +msgid "Title [Z-A]" +msgstr "Título [Z-A]" + +msgctxt "#70464" +msgid "Set as default filter" +msgstr "Establecer como filtro por defecto" + +msgctxt "#70465" +msgid "Key word" +msgstr "Palabra Clave" + +msgctxt "#70466" +msgid "Country" +msgstr "País" + +msgctxt "#70467" +msgid "Select a genre" +msgstr "Selecciona un género" + +msgctxt "#70468" +msgid "Indicate your vote" +msgstr "Indica tu voto:" + +msgctxt "#70469" +msgid "Added" +msgstr "Añadido" + +msgctxt "#70470" +msgid "Premiere" +msgstr "Estreno" + +msgctxt "#70471" +msgid "Duration" +msgstr "Duración" + +msgctxt "#70472" +msgid "Popularity" +msgstr "Popularidad" + +msgctxt "#70473" +msgid "Rating" +msgstr "Valoración" + +msgctxt "#70474" +msgid "Votes" +msgstr "Votos" + +msgctxt "#70475" +msgid "upward" +msgstr "ascendente" + +msgctxt "#70476" +msgid "falling" +msgstr "descendente" + +msgctxt "#70477" +msgid "Upward" +msgstr "Ascendente" + +msgctxt "#70478" +msgid "Falling" +msgstr "Descendente" + +msgctxt "#70479" +msgid "Currently watching" +msgstr "Viendo Actualmente" + +msgctxt "#70480" +msgid "Completed" +msgstr "Completados" + +msgctxt "#70481" +msgid "Anticipated to see" +msgstr "Previstos para ver" + +msgctxt "#70482" +msgid "Kind" +msgstr "Tipo" + +msgctxt "#70483" +msgid "Special" +msgstr "Especial" + +msgctxt "#70484" +msgid "OVA" +msgstr "OVA" + +msgctxt "#70485" +msgid "Status" +msgstr "Estado" + +msgctxt "#70486" +msgid "(1) Grotesque" +msgstr "(1) Grotesca" + +msgctxt "#70487" +msgid "(2) Horrible" +msgstr "(2) Horrible" + +msgctxt "#70488" +msgid "(3) Very bad" +msgstr "(3) Muy mala" + +msgctxt "#70489" +msgid "(4) Bad" +msgstr "(4) Mala" + +msgctxt "#70490" +msgid "(5) Regular" +msgstr "(5) Regular" + +msgctxt "#70491" +msgid "(6) Pasable" +msgstr "(6) Pasable" + +msgctxt "#70492" +msgid "(7) Good" +msgstr "(7) Buena" + +msgctxt "#70493" +msgid "(8) Very good" +msgstr "(8) Muy buena" + +msgctxt "#70494" +msgid "(9) Genial" +msgstr "(9) Genial" + +msgctxt "#70495" +msgid "(10) Masterpiece" +msgstr "(10) Obra maestra" diff --git a/plugin.video.alfa/servers/debriders/realdebrid.py b/plugin.video.alfa/servers/debriders/realdebrid.py index 58e9c28c..e621fa16 100755 --- a/plugin.video.alfa/servers/debriders/realdebrid.py +++ b/plugin.video.alfa/servers/debriders/realdebrid.py @@ -94,10 +94,10 @@ def authentication(): device_code = data["device_code"] intervalo = data["interval"] - dialog_auth = platformtools.dialog_progress("Autentificación. No cierres esta ventana!!", - "1. Entra en la siguiente url: %s" % verify_url, - "2. Ingresa este código en la página y presiona Allow: %s" % user_code, - "3. Espera a que se cierre esta ventana") + dialog_auth = platformtools.dialog_progress(config.get_localized_string(70414), + config.get_localized_string(60252) % verify_url, + config.get_localized_string(70413) % user_code, + config.get_localized_string(60254)) # Generalmente cada 5 segundos se intenta comprobar si el usuario ha introducido el código while True: From 10cf8da3f58d5a0ad26296c55b9ed7e8a4e3a5b9 Mon Sep 17 00:00:00 2001 From: thedoctor66 <37449358+thedoctor66@users.noreply.github.com> Date: Sun, 5 Aug 2018 12:21:17 +0200 Subject: [PATCH 05/57] Update tvmoviedb.py --- plugin.video.alfa/channels/tvmoviedb.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin.video.alfa/channels/tvmoviedb.py b/plugin.video.alfa/channels/tvmoviedb.py index 1f31d6cd..0cdac3a7 100644 --- a/plugin.video.alfa/channels/tvmoviedb.py +++ b/plugin.video.alfa/channels/tvmoviedb.py @@ -3246,9 +3246,9 @@ def menu_mal(item): if "lista" in title_estado: item.lista = True - itemlist.append(item.clone(title=config.get_localized_string(70390) % (item.contentTitle, title_estado), action="")) - status = {'1': config.get_localized_string(70479), '2': config.get_localized_string(70480), '3': config.get_localized_string(70384), '4': config.get_localized_string(70385), - '6': config.get_localized_string(70481)} + itemlist.append(item.clone(title="Anime: %s%s" % (item.contentTitle, title_estado), action="")) + status = {'1': config.get_localized_string(70479), '2': config.get_localized_string(70480), '3': config.get_localized_string(70384), '4': config.get_localized_string(70385), + '6': config.get_localized_string(70481)} for key, value in status.items(): if not value in title_estado: itemlist.append( From 1a9f946edfa585df6129a20fd1e1df3880dc6d43 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Sun, 5 Aug 2018 09:08:58 -0500 Subject: [PATCH 06/57] gnula: fix search --- plugin.video.alfa/channels/gnula.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/plugin.video.alfa/channels/gnula.py b/plugin.video.alfa/channels/gnula.py index 1b129595..d61580b3 100755 --- a/plugin.video.alfa/channels/gnula.py +++ b/plugin.video.alfa/channels/gnula.py @@ -35,14 +35,9 @@ def search(item, texto): logger.info() texto = texto.replace(" ", "+") data = httptools.downloadpage(host).data - url_cse = scrapertools.find_single_match(data, '
').replace('name="q"', "") - matches = scrapertools.find_multiple_matches(bloque, 'name="([^"]+).*?value="([^"]+)') - post = "q=" + texto + "&" - for name, value in matches: - post += name + "=" + value + "&" - data = httptools.downloadpage(url_cse + post).data - cse_token = scrapertools.find_single_match(data, "var cse_token='([^']+)'") + cxv = scrapertools.find_single_match(data, 'cx" value="([^"]+)"') + data = httptools.downloadpage("https://cse.google.es/cse.js?hpg=1&cx=%s" %cxv).data + cse_token = scrapertools.find_single_match(data, 'cse_token": "([^"]+)"') item.url = host_search %(texto, cse_token) try: return sub_search(item) @@ -149,7 +144,7 @@ def findvideos(item): cuenta = 0 for datos in bloque: cuenta = cuenta + 1 - patron = '(opción %s.*?)' %cuenta + patron = '((?:opción|opción) %s.*?)' %cuenta scrapedopcion = scrapertools.find_single_match(data, patron) titulo_opcion = "(" + scrapertools.find_single_match(scrapedopcion, "op.*?, (.*)").upper() + ")" if "TRAILER" in titulo_opcion or titulo_opcion == "()": From f1a9a5a14b5453ab87f6b3c9158a8fdbb5285793 Mon Sep 17 00:00:00 2001 From: thedoctor66 <37449358+thedoctor66@users.noreply.github.com> Date: Sun, 5 Aug 2018 16:37:06 +0200 Subject: [PATCH 07/57] Update tvmoviedb.py --- plugin.video.alfa/channels/tvmoviedb.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin.video.alfa/channels/tvmoviedb.py b/plugin.video.alfa/channels/tvmoviedb.py index 0cdac3a7..be04c150 100644 --- a/plugin.video.alfa/channels/tvmoviedb.py +++ b/plugin.video.alfa/channels/tvmoviedb.py @@ -255,7 +255,7 @@ def trakt(item): page = "?page=1&limit=20&extended=full" if not item.extra: item.extra = "movie" - itemlist.append(item.clone(title="[B][COLOR yellow]%s[/COLOR][/B]" % config.get_localized_string(70416), action="")) + itemlist.append(item.clone(title="[COLOR yellow]%s[/COLOR][B]" % config.get_localized_string(70416), action="")) itemlist.append(item.clone(title=config.get_localized_string(70049), action="acciones_trakt", url="movies/popular%s" % page)) itemlist.append( item.clone(title=config.get_localized_string(70050), action="acciones_trakt", url="movies/trending%s" % page)) @@ -265,7 +265,7 @@ def trakt(item): if token_auth: itemlist.append(item.clone(title=config.get_localized_string(70052), action="acciones_trakt", url="recommendations/movies?limit=100&extended=full", pagina=0)) - itemlist.append(item.clone(title="[B][COLOR yellow]%s[/COLOR][/B]" % config.get_localized_string(70417), action="",)) + itemlist.append(item.clone(title="[COLOR yellow]%s[/COLOR][B]" % config.get_localized_string(70417), action="",)) item.extra = "show" itemlist.append(item.clone(title=config.get_localized_string(70049), action="acciones_trakt", url="shows/popular%s" % page)) itemlist.append(item.clone(title=config.get_localized_string(70050), action="acciones_trakt", url="shows/trending%s" % page)) @@ -275,7 +275,7 @@ def trakt(item): if token_auth: itemlist.append(item.clone(title=config.get_localized_string(70052), action="acciones_trakt", url="recommendations/shows?limit=100&extended=full", pagina=0)) - itemlist.append(item.clone(title="[B][COLOR red]%s[/COLOR][/B]" % config.get_localized_string(70048), extra="cuenta")) + itemlist.append(item.clone(title="[COLOR red]%s[/COLOR][B]" % config.get_localized_string(70048), extra="cuenta")) else: item.extra = "movie" # Se comprueba si existe un token guardado y sino se ejecuta el proceso de autentificación From db7a82d99b68a124ed2a0334dd06580374c56c07 Mon Sep 17 00:00:00 2001 From: thedoctor66 <37449358+thedoctor66@users.noreply.github.com> Date: Sun, 5 Aug 2018 17:05:50 +0200 Subject: [PATCH 08/57] Update tvmoviedb.py --- plugin.video.alfa/channels/tvmoviedb.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin.video.alfa/channels/tvmoviedb.py b/plugin.video.alfa/channels/tvmoviedb.py index be04c150..6a4780c6 100644 --- a/plugin.video.alfa/channels/tvmoviedb.py +++ b/plugin.video.alfa/channels/tvmoviedb.py @@ -255,7 +255,7 @@ def trakt(item): page = "?page=1&limit=20&extended=full" if not item.extra: item.extra = "movie" - itemlist.append(item.clone(title="[COLOR yellow]%s[/COLOR][B]" % config.get_localized_string(70416), action="")) + itemlist.append(item.clone(title="[COLOR yellow][B]%s[/B][/COLOR]" % config.get_localized_string(70416), action="")) itemlist.append(item.clone(title=config.get_localized_string(70049), action="acciones_trakt", url="movies/popular%s" % page)) itemlist.append( item.clone(title=config.get_localized_string(70050), action="acciones_trakt", url="movies/trending%s" % page)) @@ -265,7 +265,7 @@ def trakt(item): if token_auth: itemlist.append(item.clone(title=config.get_localized_string(70052), action="acciones_trakt", url="recommendations/movies?limit=100&extended=full", pagina=0)) - itemlist.append(item.clone(title="[COLOR yellow]%s[/COLOR][B]" % config.get_localized_string(70417), action="",)) + itemlist.append(item.clone(title="[COLOR yellow][B]%s[/B][/COLOR]" % config.get_localized_string(70417), action="",)) item.extra = "show" itemlist.append(item.clone(title=config.get_localized_string(70049), action="acciones_trakt", url="shows/popular%s" % page)) itemlist.append(item.clone(title=config.get_localized_string(70050), action="acciones_trakt", url="shows/trending%s" % page)) @@ -275,7 +275,7 @@ def trakt(item): if token_auth: itemlist.append(item.clone(title=config.get_localized_string(70052), action="acciones_trakt", url="recommendations/shows?limit=100&extended=full", pagina=0)) - itemlist.append(item.clone(title="[COLOR red]%s[/COLOR][B]" % config.get_localized_string(70048), extra="cuenta")) + itemlist.append(item.clone(title="[COLOR red][B]%s[/B][/COLOR]" % config.get_localized_string(70048), extra="cuenta")) else: item.extra = "movie" # Se comprueba si existe un token guardado y sino se ejecuta el proceso de autentificación From 03e93549f6e9c6ae226804af6fc68af81c0578c8 Mon Sep 17 00:00:00 2001 From: thedoctor66 <37449358+thedoctor66@users.noreply.github.com> Date: Sun, 5 Aug 2018 17:09:06 +0200 Subject: [PATCH 09/57] Update strings.po --- plugin.video.alfa/resources/language/Italian/strings.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 1d079dbd..1cf7002b 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -3989,7 +3989,7 @@ msgstr "[FA] Aggiungi o rimuovi da un elenco utenti" msgctxt "#70327" msgid "It's part of: %s" -msgstr "E'parte di: %s" +msgstr "Fa parte di: %s" msgctxt "#70328" msgid "%ss similarar" From 35e544cacc7739617d4862380f47ab97701f5d35 Mon Sep 17 00:00:00 2001 From: thedoctor66 <37449358+thedoctor66@users.noreply.github.com> Date: Sun, 5 Aug 2018 17:30:42 +0200 Subject: [PATCH 10/57] Update infoplus.py --- plugin.video.alfa/channels/infoplus.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/infoplus.py b/plugin.video.alfa/channels/infoplus.py index ee738c03..b7a33329 100755 --- a/plugin.video.alfa/channels/infoplus.py +++ b/plugin.video.alfa/channels/infoplus.py @@ -891,7 +891,7 @@ class related(xbmcgui.WindowDialog): self.gt_peli = xbmcgui.ControlTextBox(210, 385, 1100, 60, self.fonts["12"]) self.addControl(self.gt_peli) - self.gt_peli.setText("[COLOR limegreen][B]Género: [/B][/COLOR]") + self.gt_peli.setText("[COLOR limegreen][B]%s[/B][/COLOR]" % config.get_localized_string(70499)) if set_animation: self.gt_peli.setAnimations( [('conditional', 'effect=slide start=0,-7000 delay=5750 time=700 condition=true tween=circle easing=in',), @@ -907,7 +907,7 @@ class related(xbmcgui.WindowDialog): self.pt_peli = xbmcgui.ControlTextBox(210, 410, 307, 60, self.fonts["12"]) self.addControl(self.pt_peli) - self.pt_peli.setText("[COLOR limegreen][B]Productora: [/B][/COLOR]") + self.pt_peli.setText("[COLOR limegreen][B]%s[/B][/COLOR]" % config.get_localized_string(70498)) if set_animation: self.pt_peli.setAnimations( [('conditional', 'effect=slide start=0,-7000 delay=5700 time=700 condition=true tween=circle easing=in',), From 1bd9cb7390188818b69b673d175598816f52f963 Mon Sep 17 00:00:00 2001 From: angedam Date: Sun, 5 Aug 2018 17:39:56 +0200 Subject: [PATCH 11/57] added localized strings --- plugin.video.alfa/channels/infoplus.py | 4 ++-- plugin.video.alfa/core/tmdb.py | 2 +- .../resources/language/English/strings.po | 19 ++++++++++++++++++- .../resources/language/Italian/strings.po | 19 ++++++++++++++++++- .../language/Spanish (Argentina)/strings.po | 17 +++++++++++++++++ .../language/Spanish (Mexico)/strings.po | 17 +++++++++++++++++ .../resources/language/Spanish/strings.po | 17 +++++++++++++++++ 7 files changed, 90 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/channels/infoplus.py b/plugin.video.alfa/channels/infoplus.py index ee738c03..b7a33329 100755 --- a/plugin.video.alfa/channels/infoplus.py +++ b/plugin.video.alfa/channels/infoplus.py @@ -891,7 +891,7 @@ class related(xbmcgui.WindowDialog): self.gt_peli = xbmcgui.ControlTextBox(210, 385, 1100, 60, self.fonts["12"]) self.addControl(self.gt_peli) - self.gt_peli.setText("[COLOR limegreen][B]Género: [/B][/COLOR]") + self.gt_peli.setText("[COLOR limegreen][B]%s[/B][/COLOR]" % config.get_localized_string(70499)) if set_animation: self.gt_peli.setAnimations( [('conditional', 'effect=slide start=0,-7000 delay=5750 time=700 condition=true tween=circle easing=in',), @@ -907,7 +907,7 @@ class related(xbmcgui.WindowDialog): self.pt_peli = xbmcgui.ControlTextBox(210, 410, 307, 60, self.fonts["12"]) self.addControl(self.pt_peli) - self.pt_peli.setText("[COLOR limegreen][B]Productora: [/B][/COLOR]") + self.pt_peli.setText("[COLOR limegreen][B]%s[/B][/COLOR]" % config.get_localized_string(70498)) if set_animation: self.pt_peli.setAnimations( [('conditional', 'effect=slide start=0,-7000 delay=5700 time=700 condition=true tween=circle easing=in',), diff --git a/plugin.video.alfa/core/tmdb.py b/plugin.video.alfa/core/tmdb.py index d1618948..96e9c5a3 100644 --- a/plugin.video.alfa/core/tmdb.py +++ b/plugin.video.alfa/core/tmdb.py @@ -1350,7 +1350,7 @@ class Tmdb(object): if "status_code" in self.temporada[numtemporada]: #Se ha producido un error - msg = "La busqueda de " + buscando + " no dio resultados." + msg = config.get_localized_string(70496) + buscando + config.get_localized_string(70497) msg += "\nError de tmdb: %s %s" % ( self.temporada[numtemporada]["status_code"], self.temporada[numtemporada]["status_message"]) logger.debug(msg) diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 67bab068..64ca2b66 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -1894,7 +1894,7 @@ msgid "Uploading new data" msgstr "" msgctxt "#60470" -msgid "Buscando en Tmdb......." +msgid "Searching in Tmdb......." msgstr "" msgctxt "#60471" @@ -4682,3 +4682,20 @@ msgstr "" msgctxt "#70495" msgid "(10) Masterpiece" msgstr "" + +msgctxt "#70496" +msgid "The search for " +msgstr "" + +msgctxt "#70497" +msgid " did not match." +msgstr "" + +msgctxt "#70498" +msgid "Producer: " +msgstr "" + +msgctxt "#70499" +msgid "Genre: " +msgstr "" + diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 1d079dbd..7be41902 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -3989,7 +3989,7 @@ msgstr "[FA] Aggiungi o rimuovi da un elenco utenti" msgctxt "#70327" msgid "It's part of: %s" -msgstr "E'parte di: %s" +msgstr "Fa parte di: %s" msgctxt "#70328" msgid "%ss similarar" @@ -4670,3 +4670,20 @@ msgstr "(9) Geniale" msgctxt "#70495" msgid "(10) Masterpiece" msgstr "(10) Capolavoro" + +msgctxt "#70496" +msgid "The search for " +msgstr "La ricerca di " + +msgctxt "#70497" +msgid " did not match." +msgstr " non ha dato risultati." + +msgctxt "#70498" +msgid "Producer: " +msgstr "Produzione: " + +msgctxt "#70499" +msgid "Genere: " +msgstr "Género: " + diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index d848f2e3..0c16b349 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -4670,3 +4670,20 @@ msgstr "(9) Genial" msgctxt "#70495" msgid "(10) Masterpiece" msgstr "(10) Obra maestra" + +msgctxt "#70496" +msgid "The search for " +msgstr "La busqueda de " + +msgctxt "#70497" +msgid " did not match." +msgstr " no dio resultados." + +msgctxt "#70498" +msgid "Producer: " +msgstr "Productora: " + +msgctxt "#70499" +msgid "Genre: " +msgstr "Género: " + diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index d848f2e3..0c16b349 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -4670,3 +4670,20 @@ msgstr "(9) Genial" msgctxt "#70495" msgid "(10) Masterpiece" msgstr "(10) Obra maestra" + +msgctxt "#70496" +msgid "The search for " +msgstr "La busqueda de " + +msgctxt "#70497" +msgid " did not match." +msgstr " no dio resultados." + +msgctxt "#70498" +msgid "Producer: " +msgstr "Productora: " + +msgctxt "#70499" +msgid "Genre: " +msgstr "Género: " + diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index d848f2e3..0c16b349 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -4670,3 +4670,20 @@ msgstr "(9) Genial" msgctxt "#70495" msgid "(10) Masterpiece" msgstr "(10) Obra maestra" + +msgctxt "#70496" +msgid "The search for " +msgstr "La busqueda de " + +msgctxt "#70497" +msgid " did not match." +msgstr " no dio resultados." + +msgctxt "#70498" +msgid "Producer: " +msgstr "Productora: " + +msgctxt "#70499" +msgid "Genre: " +msgstr "Género: " + From b3f4316a19afdc3b8aef986111c6be0725a40d14 Mon Sep 17 00:00:00 2001 From: angedam Date: Mon, 6 Aug 2018 21:22:21 +0200 Subject: [PATCH 12/57] added localized strings and update unshortenit.py --- plugin.video.alfa/channels/infoplus.py | 20 +-- plugin.video.alfa/channels/trailertools.py | 50 +++---- plugin.video.alfa/lib/unshortenit.py | 133 +++++++++++++----- .../resources/language/English/strings.po | 68 +++++++++ .../resources/language/Italian/strings.po | 72 +++++++++- .../language/Spanish (Argentina)/strings.po | 68 +++++++++ .../language/Spanish (Mexico)/strings.po | 68 +++++++++ .../resources/language/Spanish/strings.po | 68 +++++++++ 8 files changed, 476 insertions(+), 71 deletions(-) diff --git a/plugin.video.alfa/channels/infoplus.py b/plugin.video.alfa/channels/infoplus.py index b7a33329..0f2f8bfe 100755 --- a/plugin.video.alfa/channels/infoplus.py +++ b/plugin.video.alfa/channels/infoplus.py @@ -37,9 +37,9 @@ ACTION_MOVE_UP = 3 set_animation = False xinfoplus_set = config.get_setting("infoplus_set") -if xinfoplus_set == "Sin animación": +if xinfoplus_set == config.get_localized_string(70129): set_animation = False -if xinfoplus_set == "Con animación": +if xinfoplus_set == config.get_localized_string(70130): set_animation = True def start(item, recomendaciones=[], from_window=False): @@ -400,7 +400,7 @@ class main(xbmcgui.WindowDialog): self.plot.autoScroll(11000, 6000, 30000) except: xbmc.executebuiltin( - 'Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")') + config.get_localized_string(70500)) self.plot.setText(dhe(self.infoLabels.get("plot", ""))) xbmc.sleep(200) @@ -842,7 +842,7 @@ class related(xbmcgui.WindowDialog): self.info_peli.autoScroll(7000, 6000, 30000) except: xbmc.executebuiltin( - 'Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")') + config.get_localized_string(70500)) self.info_peli.setText(self.info) if set_animation: self.info_peli.setAnimations( @@ -859,9 +859,9 @@ class related(xbmcgui.WindowDialog): ('WindowClose', 'effect=zoom end=0% time=1000 condition=true',)]) if self.infoLabels.get("status") == "Ended" and self.item.contentType != "movie": - status = "[COLOR aquamarine][B]Finalizada %s[/B][/COLOR]" + status = config.get_localized_string(70515) elif self.infoLabels.get("status") and self.item.contentType != "movie": - status = "[COLOR aquamarine][B]En emisión %s[/B][/COLOR]" + status = config.get_localized_string(70516) else: status = "[COLOR aquamarine][B]%s[/B][/COLOR]" @@ -1238,7 +1238,7 @@ class Busqueda(xbmcgui.WindowXMLDialog): else: self.getControl(1).setLabel(config.get_localized_string(60494)) - self.getControl(5).setLabel("[COLOR tomato][B]Cerrar[/B][/COLOR]") + self.getControl(5).setLabel(config.get_localized_string(60495)) self.control_list.reset() items = [] for item_l in self.lista: @@ -1577,7 +1577,7 @@ class ActorInfo(xbmcgui.WindowDialog): self.info_actor.autoScroll(7000, 6000, 30000) except: xbmc.executebuiltin( - 'Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")') + config.get_localized_string(70500)) self.info_actor.setText( "[COLOR coral][B]%s[/B][/COLOR]" % actor_tmdb.result.get("biography", config.get_localized_string(60504))) @@ -1601,7 +1601,7 @@ class ActorInfo(xbmcgui.WindowDialog): else: self.titulos.append([entradas["id"], entradas.get("title", entradas.get("original_title", "")), thumb]) - self.dialog.update(40, '[COLOR rosybrown]Obteniendo filmografía...[/COLOR]') + self.dialog.update(40, config.get_localized_string(60505)) self.mas_pelis = 8 self.idps = [] self.botones = [] @@ -1673,7 +1673,7 @@ class ActorInfo(xbmcgui.WindowDialog): self.botones.append(self.btn_right) xbmc.sleep(200) - self.dialog.update(80, '[COLOR plum]Recopilando imágenes...[/COLOR]') + self.dialog.update(80, config.get_localized_string(60506)) self.images = [] for images in actor_tmdb.result.get("images", {}).get("profiles", []): imagen = "https://image.tmdb.org/t/p/original" + images["file_path"] diff --git a/plugin.video.alfa/channels/trailertools.py b/plugin.video.alfa/channels/trailertools.py index e4336ba1..f1221b10 100755 --- a/plugin.video.alfa/channels/trailertools.py +++ b/plugin.video.alfa/channels/trailertools.py @@ -46,7 +46,7 @@ def buscartrailer(item, trailers=[]): item.contentTitle = item.contentTitle.strip() elif keyboard: fulltitle = re.sub('\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.fulltitle.strip()) - item.contentTitle = platformtools.dialog_input(default=fulltitle, heading="Introduce el título a buscar") + item.contentTitle = platformtools.dialog_input(default=fulltitle, heading=config.get_localized_string(70505)) if item.contentTitle is None: item.contentTitle = fulltitle else: @@ -86,21 +86,21 @@ def buscartrailer(item, trailers=[]): title = "[COLOR green]%s[/COLOR]" else: title = "%s" - itemlist.append(item.clone(title=title % "Búsqueda en Youtube", action="youtube_search", + itemlist.append(item.clone(title=title % config.get_localized_string(70507), action="youtube_search", text_color="green")) - itemlist.append(item.clone(title=title % "Búsqueda en Filmaffinity", + itemlist.append(item.clone(title=title % config.get_localized_string(70024), action="filmaffinity_search", text_color="green")) # Si se trata de una serie, no se incluye la opción de buscar en Abandomoviez if not item.show and not item.infoLabels['tvshowtitle']: - itemlist.append(item.clone(title=title % "Búsqueda en Abandomoviez", + itemlist.append(item.clone(title=title % config.get_localized_string(70508), action="abandomoviez_search", text_color="green")) - itemlist.append(item.clone(title=title % "Búsqueda en Jayhap (Youtube, Vimeo & Dailymotion)", + itemlist.append(item.clone(title=title % config.get_localized_string(70509), action="jayhap_search", text_color="green")) if item.contextual: global window_select, result select = Select("DialogSelect.xml", config.get_runtime_path(), item=item, itemlist=itemlist, - caption="Buscando: " + item.contentTitle) + caption=config.get_localized_string(70506) + item.contentTitle) window_select.append(select) select.doModal() @@ -177,11 +177,11 @@ def youtube_search(item): 'Siguiente') if next_page != "": next_page = urlparse.urljoin("https://www.youtube.com", next_page) - itemlist.append(item.clone(title=">> Siguiente", action="youtube_search", extra="youtube", page=next_page, + itemlist.append(item.clone(title=config.get_localized_string(70502), action="youtube_search", extra="youtube", page=next_page, thumbnail="", text_color="")) if not itemlist: - itemlist.append(item.clone(title="La búsqueda no ha dado resultados (%s)" % titulo, + itemlist.append(item.clone(title=config.get_localized_string(70501) % titulo, action="", thumbnail="", text_color="")) if keyboard: @@ -189,7 +189,7 @@ def youtube_search(item): title = "[COLOR green]%s[/COLOR]" else: title = "%s" - itemlist.append(item.clone(title=title % "Búsqueda Manual en Youtube", action="manual_search", + itemlist.append(item.clone(title=title % config.get_localized_string(70510), action="manual_search", text_color="green", thumbnail="", extra="youtube")) return itemlist @@ -232,11 +232,11 @@ def abandomoviez_search(item): next_page = scrapertools.find_single_match(data, 'Siguiente') if next_page != "": next_page = urlparse.urljoin("http://www.abandomoviez.net/%s" % item.prefix, next_page) - itemlist.append(item.clone(title=">> Siguiente", action="abandomoviez_search", page=next_page, thumbnail="", + itemlist.append(item.clone(title=config.get_localized_string(70502), action="abandomoviez_search", page=next_page, thumbnail="", text_color="")) if not itemlist: - itemlist.append(item.clone(title="La búsqueda no ha dado resultados", action="", thumbnail="", + itemlist.append(item.clone(title=config.get_localized_string(70501), action="", thumbnail="", text_color="")) if keyboard: @@ -244,7 +244,7 @@ def abandomoviez_search(item): title = "[COLOR green]%s[/COLOR]" else: title = "%s" - itemlist.append(item.clone(title=title % "Búsqueda Manual en Abandomoviez", + itemlist.append(item.clone(title=title % config.get_localized_string(70511), action="manual_search", thumbnail="", text_color="green", extra="abandomoviez")) return itemlist @@ -256,13 +256,13 @@ def search_links_abando(item): data = scrapertools.downloadpage(item.url) itemlist = [] if "Lo sentimos, no tenemos trailer" in data: - itemlist.append(item.clone(title="No hay ningún vídeo disponible", action="", text_color="")) + itemlist.append(item.clone(title=config.get_localized_string(70503), action="", text_color="")) else: if item.contextual: - progreso = platformtools.dialog_progress("Buscando en abandomoviez", "Cargando trailers...") + progreso = platformtools.dialog_progress(config.get_localized_string(70512), config.get_localized_string(70504)) progreso.update(10) i = 0 - message = "Cargando trailers..." + message = config.get_localized_string(70504) patron = '
(.*?)' matches = scrapertools.find_multiple_matches(data, patron) @@ -304,7 +304,7 @@ def search_links_abando(item): title = "[COLOR green]%s[/COLOR]" else: title = "%s" - itemlist.append(item.clone(title=title % "Búsqueda Manual en Abandomoviez", + itemlist.append(item.clone(title=title % config.get_localized_string(70511), action="manual_search", thumbnail="", text_color="green", extra="abandomoviez")) return itemlist @@ -349,11 +349,11 @@ def filmaffinity_search(item): next_page = scrapertools.find_single_match(data, '>>') if next_page != "": next_page = urlparse.urljoin("http://www.filmaffinity.com/es/", next_page) - itemlist.append(item.clone(title=">> Siguiente", page=next_page, action="filmaffinity_search", thumbnail="", + itemlist.append(item.clone(title=config.get_localized_string(70502), page=next_page, action="filmaffinity_search", thumbnail="", text_color="")) if not itemlist: - itemlist.append(item.clone(title="La búsqueda no ha dado resultados (%s)" % item.contentTitle, + itemlist.append(item.clone(title=config.get_localized_string(70501) % item.contentTitle, action="", thumbnail="", text_color="")) if keyboard: @@ -361,7 +361,7 @@ def filmaffinity_search(item): title = "[COLOR green]%s[/COLOR]" else: title = "%s" - itemlist.append(item.clone(title=title % "Búsqueda Manual en Filmaffinity", + itemlist.append(item.clone(title=title % config.get_localized_string(70513), action="manual_search", text_color="green", thumbnail="", extra="filmaffinity")) return itemlist @@ -373,7 +373,7 @@ def search_links_filmaff(item): itemlist = [] data = scrapertools.downloadpage(item.url) if not ' 5: - raise ValueError("Infinitely looping redirect from URL: '%s'" % - (uri,)) # headers stop t.co from working so omit headers if this is a t.co link if domain == 't.co': r = httptools.downloadpage(uri, timeout=self._timeout) @@ -86,29 +91,28 @@ class UnshortenIt(object): r = httptools.downloadpage(uri, timeout=self._timeout) uri = re.findall(r'.*url\=(.*?)\"\.*', r.data)[0] return uri, r.code - else: - while True: + retries = 0 + while True: + r = httptools.downloadpage( + uri, + timeout=self._timeout, + follow_redirects=False) + if not r.sucess: + return uri, -1 + + if 'location' in r.headers and retries < self._maxretries: r = httptools.downloadpage( - uri, - timeout=self._timeout, - follow_redirects=False, - only_headers=True) - if not r.success: - return uri, -1 - retries = 0 - if 'location' in r.headers and retries < self._maxretries: - r = httptools.downloadpage( - r.headers['location'], - follow_redirects=False, - only_headers=True) - uri = r.url - loop_counter += 1 - retries = retries + 1 - else: - return r.url, r.code + r.headers['location'], + follow_redirects=False) + uri = r.url + retries += 1 + else: + return r.url, r.code + except Exception as e: return uri, str(e) + def _clear_google_outbound_proxy(self, url): ''' So google proxies all their outbound links through a redirect so they can detect outbound links. @@ -117,13 +121,16 @@ class UnshortenIt(object): This is useful for doing things like parsing google search results, or if you're scraping google docs, where google inserts hit-counters on all outbound links. ''' + # This is kind of hacky, because we need to check both the netloc AND # part of the path. We could use urllib.parse.urlsplit, but it's # easier and just as effective to use string checks. if url.startswith("http://www.google.com/url?") or \ url.startswith("https://www.google.com/url?"): + qs = urlparse(url).query query = parse_qs(qs) + if "q" in query: # Google doc outbound links (maybe blogspot, too) return True, query["q"].pop() elif "url" in query: # Outbound links from google searches @@ -132,10 +139,11 @@ class UnshortenIt(object): raise ValueError( "Google outbound proxy URL without a target url ('%s')?" % url) + return False, url def _unshorten_adfly(self, uri): - logger.info() + try: r = httptools.downloadpage( uri, timeout=self._timeout, cookies=False) @@ -144,11 +152,14 @@ class UnshortenIt(object): if len(ysmm) > 0: ysmm = re.sub(r'var ysmm \= \'|\'\;', '', ysmm[0]) + left = '' right = '' + for c in [ysmm[i:i + 2] for i in range(0, len(ysmm), 2)]: left += c[0] right = c[1] + right + # Additional digit arithmetic encoded_uri = list(left + right) numbers = ((i, n) for i, n in enumerate(encoded_uri) if str.isdigit(n)) @@ -156,9 +167,12 @@ class UnshortenIt(object): xor = int(first[1]) ^ int(second[1]) if xor < 10: encoded_uri[first[0]] = str(xor) + decoded_uri = b64decode("".join(encoded_uri).encode())[16:-16].decode() + if re.search(r'go\.php\?u\=', decoded_uri): decoded_uri = b64decode(re.sub(r'(.*?)u=', '', decoded_uri)).decode() + return decoded_uri, r.code else: return uri, 'No ysmm variable found' @@ -170,15 +184,25 @@ class UnshortenIt(object): ''' (Attempt) to decode linkbucks content. HEAVILY based on the OSS jDownloader codebase. This has necessidated a license change. + ''' + if config.is_xbmc(): + import xbmc + r = httptools.downloadpage(uri, timeout=self._timeout) + firstGet = time.time() + baseloc = r.url + if "/notfound/" in r.url or \ "(>Link Not Found<|>The link may have been deleted by the owner|To access the content, you must complete a quick survey\.)" in r.data: return uri, 'Error: Link not found or requires a survey!' + link = None + content = r.data + regexes = [ r"
.*?/a>.*?.*?[^<]+)", content) if not scripts: return uri, "No script bodies found?" + js = False + for script in scripts: # cleanup script = re.sub(r"[\r\n\s]+\/\/\s*[^\r\n]+", "", script) if re.search(r"\s*var\s*f\s*=\s*window\['init'\s*\+\s*'Lb'\s*\+\s*'js'\s*\+\s*''\];[\r\n\s]+", script): js = script + if not js: return uri, "Could not find correct script?" + token = find_in_text(r"Token\s*:\s*'([a-f0-9]{40})'", js) if not token: token = find_in_text(r"\?t=([a-f0-9]{40})", js) + assert token + authKeyMatchStr = r"A(?:'\s*\+\s*')?u(?:'\s*\+\s*')?t(?:'\s*\+\s*')?h(?:'\s*\+\s*')?K(?:'\s*\+\s*')?e(?:'\s*\+\s*')?y" l1 = find_in_text(r"\s*params\['" + authKeyMatchStr + r"'\]\s*=\s*(\d+?);", js) l2 = find_in_text( r"\s*params\['" + authKeyMatchStr + r"'\]\s*=\s?params\['" + authKeyMatchStr + r"'\]\s*\+\s*(\d+?);", js) + if any([not l1, not l2, not token]): return uri, "Missing required tokens?" + authkey = int(l1) + int(l2) + p1_url = urljoin(baseloc, "/director/?t={tok}".format(tok=token)) r2 = httptools.downloadpage(p1_url, timeout=self._timeout) + p1_url = urljoin(baseloc, "/scripts/jquery.js?r={tok}&{key}".format(tok=token, key=l1)) - r2_1 = httptools.downloadpage(p1_url, timeout=self._timeout) + r2 = httptools.downloadpage(p1_url, timeout=self._timeout) + time_left = 5.033 - (time.time() - firstGet) - xbmc.sleep(max(time_left, 0) * 1000) + if config.is_xbmc(): + xbmc.sleep(max(time_left, 0) * 1000) + else: + time.sleep(5 * 1000) + p3_url = urljoin(baseloc, "/intermission/loadTargetUrl?t={tok}&aK={key}&a_b=false".format(tok=token, key=str(authkey))) r3 = httptools.downloadpage(p3_url, timeout=self._timeout) + resp_json = json.loads(r3.data) if "Url" in resp_json: return resp_json['Url'], r3.code + return "Wat", "wat" def inValidate(self, s): @@ -237,23 +281,30 @@ class UnshortenIt(object): # (s == null || s != null && (s.matches("[\r\n\t ]+") || s.equals("") || s.equalsIgnoreCase("about:blank"))) if not s: return True + if re.search("[\r\n\t ]+", s) or s.lower() == "about:blank": return True else: return False + def _unshorten_adfocus(self, uri): orig_uri = uri try: + r = httptools.downloadpage(uri, timeout=self._timeout) html = r.data + adlink = re.findall("click_url =.*;", html) + if len(adlink) > 0: uri = re.sub('^click_url = "|"\;$', '', adlink[0]) if re.search(r'http(s|)\://adfoc\.us/serve/skip/\?id\=', uri): http_header = dict() http_header["Host"] = "adfoc.us" http_header["Referer"] = orig_uri + r = httptools.downloadpage(uri, headers=http_header, timeout=self._timeout) + uri = r.url return uri, r.code else: @@ -283,16 +334,23 @@ class UnshortenIt(object): try: r = httptools.downloadpage(uri, timeout=self._timeout) html = r.data + session_id = re.findall(r'sessionId\:(.*?)\"\,', html) if len(session_id) > 0: session_id = re.sub(r'\s\"', '', session_id[0]) + http_header = dict() http_header["Content-Type"] = "application/x-www-form-urlencoded" http_header["Host"] = "sh.st" http_header["Referer"] = uri http_header["Origin"] = "http://sh.st" http_header["X-Requested-With"] = "XMLHttpRequest" - xbmc.sleep(5 * 1000) + + if config.is_xbmc(): + xbmc.sleep(5 * 1000) + else: + time.sleep(5 * 1000) + payload = {'adSessionId': session_id, 'callback': 'c'} r = httptools.downloadpage( 'http://sh.st/shortest-url/end-adsession?' + @@ -300,6 +358,7 @@ class UnshortenIt(object): headers=http_header, timeout=self._timeout) response = r.data[6:-2].decode('utf-8') + if r.code == 200: resp_uri = json.loads(response)['destinationUrl'] if resp_uri is not None: @@ -325,8 +384,7 @@ class UnshortenIt(object): r = httptools.downloadpage( extracted_uri, timeout=self._timeout, - follow_redirects=False, - only_headers=True) + follow_redirects=False) return r.url, r.code except Exception as e: return uri, str(e) @@ -339,9 +397,12 @@ class UnshortenIt(object): try: r = httptools.downloadpage(uri, timeout=self._timeout, cookies=False) html = r.data + uri = re.findall(r"", html)[0] + from core import scrapertools uri = scrapertools.decodeHtmlentities(uri) + uri = uri.replace("/", "/") \ .replace(":", ":") \ .replace(".", ".") \ @@ -349,6 +410,7 @@ class UnshortenIt(object): .replace("#", "#") \ .replace("?", "?") \ .replace("_", "_") + return uri, r.code except Exception as e: @@ -358,7 +420,9 @@ class UnshortenIt(object): try: r = httptools.downloadpage(uri, timeout=self._timeout, cookies=False) html = r.data - uri = re.findall(r'Click to continue', html)[0] + + uri = re.findall(r']+)>', html)[0] + return uri, r.code except Exception as e: @@ -379,6 +443,7 @@ def unshorten_only(uri, type=None, timeout=10): def unshorten(uri, type=None, timeout=10): unshortener = UnshortenIt() + uri, status = unshortener.unwrap_30x(uri, timeout=timeout) uri, status = unshortener.unshorten(uri, type=type) if status == 200: uri, status = unshortener.unwrap_30x(uri, timeout=timeout) diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 64ca2b66..98965486 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -4699,3 +4699,71 @@ msgctxt "#70499" msgid "Genre: " msgstr "" +msgctxt "#70500" +msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" +msgstr "" + +msgctxt "#70501" +msgid "Search did not match (%s)" +msgstr "" + +msgctxt "#70502" +msgid ">> Next" +msgstr "" + +msgctxt "#70503" +msgid "There is no available video" +msgstr "" + +msgctxt "#70504" +msgid "Loading trailers..." +msgstr "" + +msgctxt "#70505" +msgid "Enter the title to search" +msgstr "" + +msgctxt "#70506" +msgid "Searching: " +msgstr "" + +msgctxt "#70507" +msgid "Search in Youtube" +msgstr "" + +msgctxt "#70508" +msgid "Search in Abandomoviez" +msgstr "" + +msgctxt "#70509" +msgid "Search in Jayhap (Youtube, Vimeo & Dailymotion)" +msgstr "" + +msgctxt "#70510" +msgid "Manual Search in Youtube" +msgstr "" + +msgctxt "#70511" +msgid "Manual Search in Abandomoviez" +msgstr "" + +msgctxt "#70512" +msgid "Searching in abandomoviez" +msgstr "" + +msgctxt "#70513" +msgid "Manual Searching in Filmaffinity" +msgstr "" + +msgctxt "#70514" +msgid "Manual Search in Jayhap" +msgstr "" + +msgctxt "#70515" +msgid "[COLOR aquamarine][B]Completed %s[/B][/COLOR]" +msgstr "" + +msgctxt "#70516" +msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" +msgstr "" + diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 7be41902..2f3fdc71 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -4684,6 +4684,74 @@ msgid "Producer: " msgstr "Produzione: " msgctxt "#70499" -msgid "Genere: " -msgstr "Género: " +msgid "Genre: " +msgstr "Genere: " + +msgctxt "#70500" +msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" +msgstr "Notifica([COLOR red][B]Aggiorna Kodi alla sua ultima versione[/B][/COLOR], [COLOR skyblue]per migliori info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" + +msgctxt "#70501" +msgid "Search did not match (%s)" +msgstr "La ricerca non ha dato risultati (%s)" + +msgctxt "#70502" +msgid ">> Next" +msgstr ">> Successivo" + +msgctxt "#70503" +msgid "There is no available video" +msgstr "Nessun video disponibile" + +msgctxt "#70504" +msgid "Loading trailers..." +msgstr "Caricamento trailers..." + +msgctxt "#70505" +msgid "Enter the title to search" +msgstr "Inserisci il titolo da cercare" + +msgctxt "#70506" +msgid "Searching: " +msgstr "Ricerca: " + +msgctxt "#70507" +msgid "Search in Youtube" +msgstr "Ricerca in Youtube" + +msgctxt "#70508" +msgid "Search in Abandomoviez" +msgstr "Ricerca inAbandomoviez" + +msgctxt "#70509" +msgid "Search in Jayhap (Youtube, Vimeo & Dailymotion)" +msgstr "Ricerca in Jayhap (Youtube, Vimeo & Dailymotion)" + +msgctxt "#70510" +msgid "Manual Search in Youtube" +msgstr "Ricerca Manuale in Youtube" + +msgctxt "#70511" +msgid "Manual Search in Abandomoviez" +msgstr "Ricerca Manuale in Abandomoviez" + +msgctxt "#70512" +msgid "Searching in abandomoviez" +msgstr "Ricerca in abandomoviez" + +msgctxt "#70513" +msgid "Manual Searching in Filmaffinity" +msgstr "Ricerca Manuale in Filmaffinity" + +msgctxt "#70514" +msgid "Manual Search in Jayhap" +msgstr "Ricerca Manuale in Jayhap" + +msgctxt "#70515" +msgid "[COLOR aquamarine][B]Completed %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]Completata %s[/B][/COLOR]" + +msgctxt "#70516" +msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]In Corso %s[/B][/COLOR]" diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index 0c16b349..f80b94d4 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -4687,3 +4687,71 @@ msgctxt "#70499" msgid "Genre: " msgstr "Género: " +msgctxt "#70500" +msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" +msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" + +msgctxt "#70501" +msgid "Search did not match (%s)" +msgstr "La búsqueda no ha dado resultados (%s)" + +msgctxt "#70502" +msgid ">> Next" +msgstr ">> Siguiente" + +msgctxt "#70503" +msgid "There is no available video" +msgstr "No hay ningún vídeo disponible" + +msgctxt "#70504" +msgid "Loading trailers..." +msgstr "Cargando trailers..." + +msgctxt "#70505" +msgid "Enter the title to search" +msgstr "Introduce el título a buscar" + +msgctxt "#70506" +msgid "Searching: " +msgstr "Buscando: " + +msgctxt "#70507" +msgid "Search in Youtube" +msgstr "Búsqueda en Youtube" + +msgctxt "#70508" +msgid "Search in Abandomoviez" +msgstr "Búsqueda en Abandomoviez" + +msgctxt "#70509" +msgid "Search in Jayhap (Youtube, Vimeo & Dailymotion)" +msgstr "Búsqueda en Jayhap (Youtube, Vimeo & Dailymotion)" + +msgctxt "#70510" +msgid "Manual Search in Youtube" +msgstr "Búsqueda Manual en Youtube" + +msgctxt "#70511" +msgid "Manual Search in Abandomoviez" +msgstr "Búsqueda Manual en Abandomoviez" + +msgctxt "#70512" +msgid "Searching in abandomoviez" +msgstr "Buscando en abandomoviez" + +msgctxt "#70513" +msgid "Manual Searching in Filmaffinity" +msgstr "Búsqueda Manual en Filmaffinity" + +msgctxt "#70514" +msgid "Manual Search in Jayhap" +msgstr "Búsqueda Manual en Jayhap" + +msgctxt "#70515" +msgid "[COLOR aquamarine][B]Completed %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]Finalizada %s[/B][/COLOR]" + +msgctxt "#70516" +msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]En emisión %s[/B][/COLOR]" + diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index 0c16b349..f80b94d4 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -4687,3 +4687,71 @@ msgctxt "#70499" msgid "Genre: " msgstr "Género: " +msgctxt "#70500" +msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" +msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" + +msgctxt "#70501" +msgid "Search did not match (%s)" +msgstr "La búsqueda no ha dado resultados (%s)" + +msgctxt "#70502" +msgid ">> Next" +msgstr ">> Siguiente" + +msgctxt "#70503" +msgid "There is no available video" +msgstr "No hay ningún vídeo disponible" + +msgctxt "#70504" +msgid "Loading trailers..." +msgstr "Cargando trailers..." + +msgctxt "#70505" +msgid "Enter the title to search" +msgstr "Introduce el título a buscar" + +msgctxt "#70506" +msgid "Searching: " +msgstr "Buscando: " + +msgctxt "#70507" +msgid "Search in Youtube" +msgstr "Búsqueda en Youtube" + +msgctxt "#70508" +msgid "Search in Abandomoviez" +msgstr "Búsqueda en Abandomoviez" + +msgctxt "#70509" +msgid "Search in Jayhap (Youtube, Vimeo & Dailymotion)" +msgstr "Búsqueda en Jayhap (Youtube, Vimeo & Dailymotion)" + +msgctxt "#70510" +msgid "Manual Search in Youtube" +msgstr "Búsqueda Manual en Youtube" + +msgctxt "#70511" +msgid "Manual Search in Abandomoviez" +msgstr "Búsqueda Manual en Abandomoviez" + +msgctxt "#70512" +msgid "Searching in abandomoviez" +msgstr "Buscando en abandomoviez" + +msgctxt "#70513" +msgid "Manual Searching in Filmaffinity" +msgstr "Búsqueda Manual en Filmaffinity" + +msgctxt "#70514" +msgid "Manual Search in Jayhap" +msgstr "Búsqueda Manual en Jayhap" + +msgctxt "#70515" +msgid "[COLOR aquamarine][B]Completed %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]Finalizada %s[/B][/COLOR]" + +msgctxt "#70516" +msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]En emisión %s[/B][/COLOR]" + diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 0c16b349..f80b94d4 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -4687,3 +4687,71 @@ msgctxt "#70499" msgid "Genre: " msgstr "Género: " +msgctxt "#70500" +msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" +msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")" + +msgctxt "#70501" +msgid "Search did not match (%s)" +msgstr "La búsqueda no ha dado resultados (%s)" + +msgctxt "#70502" +msgid ">> Next" +msgstr ">> Siguiente" + +msgctxt "#70503" +msgid "There is no available video" +msgstr "No hay ningún vídeo disponible" + +msgctxt "#70504" +msgid "Loading trailers..." +msgstr "Cargando trailers..." + +msgctxt "#70505" +msgid "Enter the title to search" +msgstr "Introduce el título a buscar" + +msgctxt "#70506" +msgid "Searching: " +msgstr "Buscando: " + +msgctxt "#70507" +msgid "Search in Youtube" +msgstr "Búsqueda en Youtube" + +msgctxt "#70508" +msgid "Search in Abandomoviez" +msgstr "Búsqueda en Abandomoviez" + +msgctxt "#70509" +msgid "Search in Jayhap (Youtube, Vimeo & Dailymotion)" +msgstr "Búsqueda en Jayhap (Youtube, Vimeo & Dailymotion)" + +msgctxt "#70510" +msgid "Manual Search in Youtube" +msgstr "Búsqueda Manual en Youtube" + +msgctxt "#70511" +msgid "Manual Search in Abandomoviez" +msgstr "Búsqueda Manual en Abandomoviez" + +msgctxt "#70512" +msgid "Searching in abandomoviez" +msgstr "Buscando en abandomoviez" + +msgctxt "#70513" +msgid "Manual Searching in Filmaffinity" +msgstr "Búsqueda Manual en Filmaffinity" + +msgctxt "#70514" +msgid "Manual Search in Jayhap" +msgstr "Búsqueda Manual en Jayhap" + +msgctxt "#70515" +msgid "[COLOR aquamarine][B]Completed %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]Finalizada %s[/B][/COLOR]" + +msgctxt "#70516" +msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" +msgstr "[COLOR aquamarine][B]En emisión %s[/B][/COLOR]" + From b2d3692f7f64899ed5434687b55c4f89f9407990 Mon Sep 17 00:00:00 2001 From: pipcat Date: Tue, 7 Aug 2018 15:57:43 +0200 Subject: [PATCH 13/57] Cambio dominio estrenosgo y server gvideo --- plugin.video.alfa/channels/estrenosgo.py | 4 ++-- plugin.video.alfa/servers/gvideo.py | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/plugin.video.alfa/channels/estrenosgo.py b/plugin.video.alfa/channels/estrenosgo.py index c087cc9c..f5f52bd0 100644 --- a/plugin.video.alfa/channels/estrenosgo.py +++ b/plugin.video.alfa/channels/estrenosgo.py @@ -10,7 +10,7 @@ from core import tmdb from core.item import Item from platformcode import config, logger -HOST = 'http://estrenosli.org/' +HOST = 'http://estrenosby.net/' # 'http://estrenosli.org/' parameters = channeltools.get_channel_parameters('estrenosgo') fanart_host = parameters['fanart'] thumbnail_host = parameters['thumbnail'] @@ -138,7 +138,7 @@ def findvideos(item): list_opciones = [] IDIOMAS = {"banderita1": "Español", "banderita2": "VOSE", "banderita3": "Latino"} - url = "http://estrenosli.org/ver-online-" + item.url + url = HOST + "ver-online-" + item.url data = httptools.downloadpage(url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) diff --git a/plugin.video.alfa/servers/gvideo.py b/plugin.video.alfa/servers/gvideo.py index a987c6c4..8953f2e7 100644 --- a/plugin.video.alfa/servers/gvideo.py +++ b/plugin.video.alfa/servers/gvideo.py @@ -8,6 +8,8 @@ from platformcode import logger def test_video_exists(page_url): + if 'googleusercontent' in page_url: + return True, "" # desactivada verificación pq se encalla! response = httptools.downloadpage(page_url, cookies=False, headers={"Referer": page_url}) if "no+existe" in response.data: @@ -34,13 +36,19 @@ def get_video_url(page_url, user="", password="", video_password=""): response = httptools.downloadpage(page_url, follow_redirects = False, cookies=False, headers={"Referer": page_url}) url=response.headers['location'] - cookies = "" - cookie = response.headers["set-cookie"].split("HttpOnly, ") - for c in cookie: - cookies += c.split(";", 1)[0] + "; " - data = response.data.decode('unicode-escape') - data = urllib.unquote_plus(urllib.unquote_plus(data)) - headers_string = "|Cookie=" + cookies + if "set-cookie" in response.headers: + try: + cookies = "" + cookie = response.headers["set-cookie"].split("HttpOnly, ") + for c in cookie: + cookies += c.split(";", 1)[0] + "; " + data = response.data.decode('unicode-escape') + data = urllib.unquote_plus(urllib.unquote_plus(data)) + headers_string = "|Cookie=" + cookies + except: + headers_string = "" + else: + headers_string = "" quality = scrapertools.find_single_match (url, '.itag=(\d+).') From f44785740e6613506a73992239d37bd46dc4a520 Mon Sep 17 00:00:00 2001 From: angedam Date: Tue, 7 Aug 2018 16:07:47 +0200 Subject: [PATCH 14/57] fix search actor/actress in tmdb.py --- plugin.video.alfa/channels/tvmoviedb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/tvmoviedb.py b/plugin.video.alfa/channels/tvmoviedb.py index 6a4780c6..12e1b19d 100644 --- a/plugin.video.alfa/channels/tvmoviedb.py +++ b/plugin.video.alfa/channels/tvmoviedb.py @@ -450,7 +450,7 @@ def listado_tmdb(item): else: # Si es una búsqueda de personas se incluye en el título y fanart una película por la que es conocido known_for = ob_tmdb.results[i].get("known_for") - type = item.search['type'] + type=item.type if known_for: from random import randint random = randint(0, len(known_for) - 1) From 393a23e11a472163f9be1b4398ab83cf8df97106 Mon Sep 17 00:00:00 2001 From: angedam Date: Tue, 7 Aug 2018 16:44:42 +0200 Subject: [PATCH 15/57] update string.po --- .../resources/language/English/strings.po | 8 ++++++++ .../resources/language/Italian/strings.po | 12 ++++++++++-- .../language/Spanish (Argentina)/strings.po | 14 +++++++++++++- .../resources/language/Spanish (Mexico)/strings.po | 14 +++++++++++++- .../resources/language/Spanish/strings.po | 14 +++++++++++++- 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 98965486..d9b8d81a 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -3857,6 +3857,14 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "" +msgctxt "#70289" +msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " +msgstr " " + +msgctxt "#70290" +msgid "default, you will have to change it again if you want.\nType 's', if you have understood it: " +msgstr "" + msgctxt "#70291" msgid "Error, during conversion" msgstr "" diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 2f3fdc71..a2e331ad 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -3841,6 +3841,14 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configura Downloads" +msgctxt "#70289" +msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " +msgstr "Alfa\nCorretto un errore nella sezione adulti, la password è sta resettata a quella di " + +msgctxt "#70290" +msgid "default, you will have to change it again if you want.\nType 's', if you have understood it: " +msgstr "default, puoi cambiarla di nuovo se vuoi.\nScrivi 's', se hai capito: " + msgctxt "#70291" msgid "Error, during conversion" msgstr "Errore, in conversione" @@ -4257,7 +4265,7 @@ msgstr "Dai un punteggio con un [COLOR %s]%s[/COLOR]" msgctxt "#70393" msgid "[%s]: Select the correct %s " -msgstr "[%s]: Selezona la %s corretta" +msgstr "[%s]: Seleziona la %s corretta" msgctxt "#70394" msgid "Action" @@ -4641,7 +4649,7 @@ msgstr "(2) orribile" msgctxt "#70488" msgid "(3) Very bad" -msgstr "(3) bruttissimo" +msgstr "(3) Bruttissimo" msgctxt "#70489" msgid "(4) Bad" diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index f80b94d4..09e539b3 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -3845,6 +3845,14 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" +msgctxt "#70289" +msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " +msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " + +msgctxt "#70290" +msgid "default, you will have to change it again if you want.\n Type 's', if you have understood it: " +msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " + msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" @@ -3956,7 +3964,7 @@ msgid "Listen to BSO - List of songs" msgstr "Escuchar BSO - Lista de canciones" msgctxt "#70318" -msgid "Manage yor trakt account" +msgid "Manage your trakt account" msgstr "Gestionar con tu cuenta Trakt" msgctxt "#70319" @@ -4679,6 +4687,10 @@ msgctxt "#70497" msgid " did not match." msgstr " no dio resultados." +msgctxt "#70497" +msgid " did not match." +msgstr " no dio resultados." + msgctxt "#70498" msgid "Producer: " msgstr "Productora: " diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index f80b94d4..09e539b3 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -3845,6 +3845,14 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" +msgctxt "#70289" +msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " +msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " + +msgctxt "#70290" +msgid "default, you will have to change it again if you want.\n Type 's', if you have understood it: " +msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " + msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" @@ -3956,7 +3964,7 @@ msgid "Listen to BSO - List of songs" msgstr "Escuchar BSO - Lista de canciones" msgctxt "#70318" -msgid "Manage yor trakt account" +msgid "Manage your trakt account" msgstr "Gestionar con tu cuenta Trakt" msgctxt "#70319" @@ -4679,6 +4687,10 @@ msgctxt "#70497" msgid " did not match." msgstr " no dio resultados." +msgctxt "#70497" +msgid " did not match." +msgstr " no dio resultados." + msgctxt "#70498" msgid "Producer: " msgstr "Productora: " diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index f80b94d4..09e539b3 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -3845,6 +3845,14 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" +msgctxt "#70289" +msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " +msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " + +msgctxt "#70290" +msgid "default, you will have to change it again if you want.\n Type 's', if you have understood it: " +msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " + msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" @@ -3956,7 +3964,7 @@ msgid "Listen to BSO - List of songs" msgstr "Escuchar BSO - Lista de canciones" msgctxt "#70318" -msgid "Manage yor trakt account" +msgid "Manage your trakt account" msgstr "Gestionar con tu cuenta Trakt" msgctxt "#70319" @@ -4679,6 +4687,10 @@ msgctxt "#70497" msgid " did not match." msgstr " no dio resultados." +msgctxt "#70497" +msgid " did not match." +msgstr " no dio resultados." + msgctxt "#70498" msgid "Producer: " msgstr "Productora: " From 82658ea3628a181e0fc1e29719da386d7cbc1278 Mon Sep 17 00:00:00 2001 From: angedam Date: Wed, 8 Aug 2018 15:36:24 +0200 Subject: [PATCH 16/57] update string.po --- plugin.video.alfa/resources/language/English/strings.po | 8 -------- plugin.video.alfa/resources/language/Italian/strings.po | 8 -------- .../resources/language/Spanish (Argentina)/strings.po | 8 -------- .../resources/language/Spanish (Mexico)/strings.po | 8 -------- plugin.video.alfa/resources/language/Spanish/strings.po | 8 -------- 5 files changed, 40 deletions(-) diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index d9b8d81a..98965486 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -3857,14 +3857,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr " " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\nType 's', if you have understood it: " -msgstr "" - msgctxt "#70291" msgid "Error, during conversion" msgstr "" diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index a2e331ad..6fcd18cd 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -3841,14 +3841,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configura Downloads" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorretto un errore nella sezione adulti, la password è sta resettata a quella di " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\nType 's', if you have understood it: " -msgstr "default, puoi cambiarla di nuovo se vuoi.\nScrivi 's', se hai capito: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Errore, in conversione" diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index 09e539b3..0c83f6d3 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index 09e539b3..0c83f6d3 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 09e539b3..0c83f6d3 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -3845,14 +3845,6 @@ msgctxt "#70288" msgid "Configure Downloads" msgstr "Configurar Descargas" -msgctxt "#70289" -msgid "Alfa\nCorrected an error in the adult section, the password has been reset to " -msgstr "Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " - -msgctxt "#70290" -msgid "default, you will have to change it again if you want.\n Type 's', if you have understood it: " -msgstr "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: " - msgctxt "#70291" msgid "Error, during conversion" msgstr "Error, en conversión" From f5c39d38178fa317ecc13caefb409a65c4fbe440 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 8 Aug 2018 08:54:27 -0500 Subject: [PATCH 17/57] config: add get_localized_category mediaserver --- mediaserver/platformcode/config.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mediaserver/platformcode/config.py b/mediaserver/platformcode/config.py index e8b82980..835384da 100644 --- a/mediaserver/platformcode/config.py +++ b/mediaserver/platformcode/config.py @@ -271,6 +271,14 @@ def get_localized_string(code): return dev +def get_localized_category(categ): + categories = {'movie': get_localized_string(30122), 'tvshow': get_localized_string(30123), + 'anime': get_localized_string(30124), 'documentary': get_localized_string(30125), + 'vos': get_localized_string(30136), 'adult': get_localized_string(30126), + 'direct': get_localized_string(30137), 'torrent': get_localized_string(70015)} + return categories[categ] if categ in categories else categ + + def get_videolibrary_path(): value = get_setting("videolibrarypath") if value == "": From b05adcf4de48ee5b2b1312a2f7eb1f56b25b2487 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 8 Aug 2018 09:06:02 -0500 Subject: [PATCH 18/57] submityourflicks: fix --- plugin.video.alfa/channels/submityouflicks.py | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/plugin.video.alfa/channels/submityouflicks.py b/plugin.video.alfa/channels/submityouflicks.py index 7cc69abc..a329f349 100755 --- a/plugin.video.alfa/channels/submityouflicks.py +++ b/plugin.video.alfa/channels/submityouflicks.py @@ -3,6 +3,7 @@ import re import urlparse +from core import httptools from core import scrapertools from core.item import Item from platformcode import logger @@ -16,7 +17,6 @@ def mainlist(item): viewmode="movie")) itemlist.append(Item(channel=item.channel, action="search", title="Buscar", url="http://www.submityourflicks.com/index.php?mode=search&q=%s&submit=Search")) - return itemlist @@ -37,18 +37,6 @@ def search(item, texto): def videos(item): logger.info() itemlist = [] - - ''' -
-
- - - - NEXT") if next_page_url != "": url = urlparse.urljoin(item.url, next_page_url) itemlist.append(Item(channel=item.channel, action="videos", title=">> Página siguiente", url=url, folder=True, viewmode="movie")) - return itemlist def play(item): logger.info() - - data = scrapertools.cache_page(item.url) - - media_url = scrapertools.find_single_match(data, 'file\:\s*"([^"]+)"') + data = httptools.downloadpage(item.url).data + media_url = "https:" + scrapertools.find_single_match(data, 'source src="([^"]+)"') itemlist = [] itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=media_url, - thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False)) - + thumbnail=item.thumbnail, show=item.title, server="directo", folder=False)) return itemlist From 21faec62c9f55bb122f2ad1d8dff10f0b1a092fe Mon Sep 17 00:00:00 2001 From: angedam Date: Wed, 8 Aug 2018 18:19:06 +0200 Subject: [PATCH 19/57] update string.po --- plugin.video.alfa/resources/language/English/strings.po | 2 +- plugin.video.alfa/resources/language/Italian/strings.po | 4 ++-- .../resources/language/Spanish (Argentina)/strings.po | 4 ++-- .../resources/language/Spanish (Mexico)/strings.po | 4 ++-- plugin.video.alfa/resources/language/Spanish/strings.po | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 98965486..086ff5f8 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -1886,7 +1886,7 @@ msgid "To report a problem on'http://alfa-addon.com' you need to:|the version yo msgstr "" msgctxt "#60468" -msgid "You can find our Telegram channel at @StreamOnDemandOfficial\nSe you have doubts you can write to us in the Telegram group: https://bit.ly/2I3kRwF" +msgid "You can find our Telegram channel at @alfa_addon\nIf you have doubts you can write to us in the Telegram group: https://t.me/alfa_addon" msgstr "" msgctxt "#60469" diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 6fcd18cd..fceb4044 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -1874,8 +1874,8 @@ msgid "To report a problem on'http://alfa-addon.com' you need to:|the version yo msgstr "Per segnalare un problema su 'http://alfa-addon.com' è necessario:|la versione che si sta usando di Alpha.|La versione che si sta usando di kodi, mediaserver, ecc.|la versione e il nome del sistema operativo che si sta usando.|Il nome della skin (nel caso in cui si stia usando Kodi) e se l'utilizzo della skin predefinita ha risolto il problema.|La descrizione del problema e tutti i casi di test.Per attivare il log in modalità dettagliata, andare su:|Configurazione.|Preferenze.|Nella scheda Generale - Selezionare l'opzione: Genera log dettagliato Il file di log dettagliato si trova nel seguente percorso: \n\n%s" msgctxt "#60468" -msgid "You can find our Telegram channel at @StreamOnDemandOfficial\nSe you have doubts you can write to us in the Telegram group: https://bit.ly/2I3kRwF" -msgstr "Puoi trovare il nostro canale Telegram in @StreamOnDemandOfficial\nSe hai dubbi puoi scriverci nel gruppo Telegram: https://bit.ly/2I3kRwF" +msgid "You can find our Telegram channel at @alfa_addon\nIf you have doubts you can write to us in the Forum: http://alfa-addon.com" +msgstr "Scopri le novità, i suggerimenti o le opzioni che non conosci su Telegram: @alfa_addon.\nSi tienes problemas o dudas, puedes acudir al Foro: http://alfa-addon.com" msgctxt "#60469" msgid "Uploading new data" diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index 0c83f6d3..80ea8959 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -1882,11 +1882,11 @@ msgid "Yes, the option to display merged or split \nresults by channels can be f msgstr "Sì. La opcion de mostrar los resultados juntos \no divididos por canales se encuentra en \n'setting'>'Ajustes del buscador global'> \n'Otros ajustes'. \n¿Deseas acceder a ahora dichos ajustes?" msgctxt "#60467" -msgid "To report a problem on'http://alfa-addon.com' you need to:|the version you're using of Alpha.|The version you're using of kodi, mediaserver, etc.|the version and name of the operating system you're using.|The name of the skin (in case you're using Kodi) and whether using the default skin has solved the problem.|Description of the problem and any test cases.To activate the log in detailed mode, go to:|Configuration.|Preferences.|In the General tab - Check the option: Generate detailed log. The detailed log file can be found in the following path: \n\n%s" +msgid "To report a problem on'http://alfa-addon.com' you need to:|the version you're using of Alfa.|The version you're using of kodi, mediaserver, etc.|the version and name of the operating system you're using.|The name of the skin (in case you're using Kodi) and whether using the default skin has solved the problem.|Description of the problem and any test cases.To activate the log in detailed mode, go to:|Configuration.|Preferences.|In the General tab - Check the option: Generate detailed log. The detailed log file can be found in the following path: \n\n%s" msgstr "Para reportar un problema en 'http://alfa-addon.com' es necesario:\n - Versión que usas de Alfa.\n - Versión que usas de kodi, mediaserver, etc.\n - Versión y nombre del sistema operativo que usas.\n - Nombre del skin (en el caso que uses Kodi) y si se te ha resuelto el problema al usar el skin por defecto.\n - Descripción del problema y algún caso de prueba.\n - Agregar el log en modo detallado, una vez hecho esto, zipea el log y lo puedes adjuntar en un post.\n\nPara activar el log en modo detallado, ingresar a:\n - Configuración.\n - Preferencias.\n - En la pestaña General - Marcar la opción: Generar log detallado.\n\nEl archivo de log detallado se encuentra en la siguiente ruta: \n\n%s" msgctxt "#60468" -msgid "You can find our Telegram channel at @StreamOnDemandOfficial\nSe you have doubts you can write to us in the Telegram group: https://bit.ly/2I3kRwF" +msgid "You can find our Telegram channel at @alfa_addon\nIf you have doubts you can write to us in the Forum: http://alfa-addon.com" msgstr "Entérate de novedades, consejos u opciones que desconoces en Telegram: @alfa_addon.\nSi tienes problemas o dudas, puedes acudir al Foro: http://alfa-addon.com" msgctxt "#60469" diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index 0c83f6d3..80ea8959 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -1882,11 +1882,11 @@ msgid "Yes, the option to display merged or split \nresults by channels can be f msgstr "Sì. La opcion de mostrar los resultados juntos \no divididos por canales se encuentra en \n'setting'>'Ajustes del buscador global'> \n'Otros ajustes'. \n¿Deseas acceder a ahora dichos ajustes?" msgctxt "#60467" -msgid "To report a problem on'http://alfa-addon.com' you need to:|the version you're using of Alpha.|The version you're using of kodi, mediaserver, etc.|the version and name of the operating system you're using.|The name of the skin (in case you're using Kodi) and whether using the default skin has solved the problem.|Description of the problem and any test cases.To activate the log in detailed mode, go to:|Configuration.|Preferences.|In the General tab - Check the option: Generate detailed log. The detailed log file can be found in the following path: \n\n%s" +msgid "To report a problem on'http://alfa-addon.com' you need to:|the version you're using of Alfa.|The version you're using of kodi, mediaserver, etc.|the version and name of the operating system you're using.|The name of the skin (in case you're using Kodi) and whether using the default skin has solved the problem.|Description of the problem and any test cases.To activate the log in detailed mode, go to:|Configuration.|Preferences.|In the General tab - Check the option: Generate detailed log. The detailed log file can be found in the following path: \n\n%s" msgstr "Para reportar un problema en 'http://alfa-addon.com' es necesario:\n - Versión que usas de Alfa.\n - Versión que usas de kodi, mediaserver, etc.\n - Versión y nombre del sistema operativo que usas.\n - Nombre del skin (en el caso que uses Kodi) y si se te ha resuelto el problema al usar el skin por defecto.\n - Descripción del problema y algún caso de prueba.\n - Agregar el log en modo detallado, una vez hecho esto, zipea el log y lo puedes adjuntar en un post.\n\nPara activar el log en modo detallado, ingresar a:\n - Configuración.\n - Preferencias.\n - En la pestaña General - Marcar la opción: Generar log detallado.\n\nEl archivo de log detallado se encuentra en la siguiente ruta: \n\n%s" msgctxt "#60468" -msgid "You can find our Telegram channel at @StreamOnDemandOfficial\nSe you have doubts you can write to us in the Telegram group: https://bit.ly/2I3kRwF" +msgid "You can find our Telegram channel at @alfa_addon\nIf you have doubts you can write to us in the Forum: http://alfa-addon.com" msgstr "Entérate de novedades, consejos u opciones que desconoces en Telegram: @alfa_addon.\nSi tienes problemas o dudas, puedes acudir al Foro: http://alfa-addon.com" msgctxt "#60469" diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 0c83f6d3..80ea8959 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -1882,11 +1882,11 @@ msgid "Yes, the option to display merged or split \nresults by channels can be f msgstr "Sì. La opcion de mostrar los resultados juntos \no divididos por canales se encuentra en \n'setting'>'Ajustes del buscador global'> \n'Otros ajustes'. \n¿Deseas acceder a ahora dichos ajustes?" msgctxt "#60467" -msgid "To report a problem on'http://alfa-addon.com' you need to:|the version you're using of Alpha.|The version you're using of kodi, mediaserver, etc.|the version and name of the operating system you're using.|The name of the skin (in case you're using Kodi) and whether using the default skin has solved the problem.|Description of the problem and any test cases.To activate the log in detailed mode, go to:|Configuration.|Preferences.|In the General tab - Check the option: Generate detailed log. The detailed log file can be found in the following path: \n\n%s" +msgid "To report a problem on'http://alfa-addon.com' you need to:|the version you're using of Alfa.|The version you're using of kodi, mediaserver, etc.|the version and name of the operating system you're using.|The name of the skin (in case you're using Kodi) and whether using the default skin has solved the problem.|Description of the problem and any test cases.To activate the log in detailed mode, go to:|Configuration.|Preferences.|In the General tab - Check the option: Generate detailed log. The detailed log file can be found in the following path: \n\n%s" msgstr "Para reportar un problema en 'http://alfa-addon.com' es necesario:\n - Versión que usas de Alfa.\n - Versión que usas de kodi, mediaserver, etc.\n - Versión y nombre del sistema operativo que usas.\n - Nombre del skin (en el caso que uses Kodi) y si se te ha resuelto el problema al usar el skin por defecto.\n - Descripción del problema y algún caso de prueba.\n - Agregar el log en modo detallado, una vez hecho esto, zipea el log y lo puedes adjuntar en un post.\n\nPara activar el log en modo detallado, ingresar a:\n - Configuración.\n - Preferencias.\n - En la pestaña General - Marcar la opción: Generar log detallado.\n\nEl archivo de log detallado se encuentra en la siguiente ruta: \n\n%s" msgctxt "#60468" -msgid "You can find our Telegram channel at @StreamOnDemandOfficial\nSe you have doubts you can write to us in the Telegram group: https://bit.ly/2I3kRwF" +msgid "You can find our Telegram channel at @alfa_addon\nIf you have doubts you can write to us in the Forum: http://alfa-addon.com" msgstr "Entérate de novedades, consejos u opciones que desconoces en Telegram: @alfa_addon.\nSi tienes problemas o dudas, puedes acudir al Foro: http://alfa-addon.com" msgctxt "#60469" From 0d1845ff81671820754663ef1b6c1477ae463b61 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 8 Aug 2018 11:35:27 -0500 Subject: [PATCH 20/57] cloudvideo: fix --- plugin.video.alfa/servers/cloudvideo.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/plugin.video.alfa/servers/cloudvideo.py b/plugin.video.alfa/servers/cloudvideo.py index 5ce34553..e8652eeb 100644 --- a/plugin.video.alfa/servers/cloudvideo.py +++ b/plugin.video.alfa/servers/cloudvideo.py @@ -10,27 +10,21 @@ from platformcode import logger def test_video_exists(page_url): logger.info("(page_url='%s')" % page_url) - data = httptools.downloadpage(page_url) - if data.code == 404: return False, "[Cloud] El archivo no existe o ha sido borrado" - return True, "" def get_video_url(page_url, premium=False, user="", password="", video_password=""): logger.info("url=" + page_url) - video_urls = [] data = httptools.downloadpage(page_url).data - data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) enc_data = scrapertools.find_single_match(data, "type='text/javascript'>(.*?)") dec_data = jsunpack.unpack(enc_data) - sources = scrapertools.find_single_match(dec_data, "sources:\[(.*?)]") - patron = "{file:(.*?)}" - matches = re.compile(patron, re.DOTALL).findall(sources) - scrapertools.printMatches(matches) + sources = scrapertools.find_single_match(data, " Date: Wed, 8 Aug 2018 11:42:07 -0500 Subject: [PATCH 21/57] Delete cnubis.json --- plugin.video.alfa/servers/cnubis.json | 41 --------------------------- 1 file changed, 41 deletions(-) delete mode 100755 plugin.video.alfa/servers/cnubis.json diff --git a/plugin.video.alfa/servers/cnubis.json b/plugin.video.alfa/servers/cnubis.json deleted file mode 100755 index 6b7374e0..00000000 --- a/plugin.video.alfa/servers/cnubis.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "active": true, - "find_videos": { - "ignore_urls": [], - "patterns": [ - { - "pattern": "cnubis.com/plugins/mediaplayer/([^/]+/[^.]+.php\\?u\\=[A-Za-z0-9]+)", - "url": "http://cnubis.com/plugins/mediaplayer/\\1" - } - ] - }, - "free": true, - "id": "cnubis", - "name": "cnubis", - "settings": [ - { - "default": false, - "enabled": true, - "id": "black_list", - "label": "@60654", - "type": "bool", - "visible": true - }, - { - "default": 0, - "enabled": true, - "id": "favorites_servers_list", - "label": "@60655", - "lvalues": [ - "No", - "1", - "2", - "3", - "4", - "5" - ], - "type": "list", - "visible": false - } - ] -} \ No newline at end of file From cc17c1f7fcaaded152ad09c8ff4aca28fb39a166 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 8 Aug 2018 11:42:30 -0500 Subject: [PATCH 22/57] Delete cnubis.py --- plugin.video.alfa/servers/cnubis.py | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100755 plugin.video.alfa/servers/cnubis.py diff --git a/plugin.video.alfa/servers/cnubis.py b/plugin.video.alfa/servers/cnubis.py deleted file mode 100755 index 50978ebf..00000000 --- a/plugin.video.alfa/servers/cnubis.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- - -from core import scrapertools -from platformcode import logger - - -def get_video_url(page_url, premium=False, user="", password="", video_password=""): - logger.info("page_url=" + page_url) - video_urls = [] - - data = scrapertools.cache_page(page_url) - media_url = scrapertools.find_single_match(data, 'file: "([^"]+)",.*?type: "([^"]+)"') - logger.info("media_url=" + media_url[0]) - - # URL del vídeo - video_urls.append(["." + media_url[1] + " [cnubis]", media_url[0].replace("https", "http")]) - - for video_url in video_urls: - logger.info("%s - %s" % (video_url[0], video_url[1])) - - return video_urls From fa5bb51759ef78a80bc11b0d874bc6dd168a389d Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Wed, 8 Aug 2018 20:28:19 +0200 Subject: [PATCH 23/57] NewPct1: Agrupa los episodios por Temporadas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit En el método Episodios se agrupan los episodios por Temporadas, siempre que haya más de una Temporada. El 99% de código reside el generictools.post_tmdb_seasons Por diseño de la web, no reperesenta un ahorro de tiempo, solo clarifica el contenido de la pantalla --- plugin.video.alfa/channels/newpct1.json | 4 +- plugin.video.alfa/channels/newpct1.py | 67 ++++++--- plugin.video.alfa/lib/generictools.py | 176 +++++++++++++++++++++++- 3 files changed, 224 insertions(+), 23 deletions(-) diff --git a/plugin.video.alfa/channels/newpct1.json b/plugin.video.alfa/channels/newpct1.json index cff73741..c01d3a25 100644 --- a/plugin.video.alfa/channels/newpct1.json +++ b/plugin.video.alfa/channels/newpct1.json @@ -41,8 +41,8 @@ "visible": true, "lvalues": [ "Torrentrapid", - "Torrentlocura", "Tumejortorrent", + "Torrentlocura", "Tvsinpagar", "Descargas2020", "Mispelisyseries" @@ -52,7 +52,7 @@ "id": "clonenewpct1_channels_list", "type": "text", "label": "Lista de clones de NewPct1 y orden de uso", - "default": "('1', 'torrentrapid', 'http://torrentrapid.com/', 'movie, tvshow, season, episode', 'serie_episodios'), ('1', 'torrentlocura', 'http://torrentlocura.com/', 'movie, tvshow, season, episode', ''), ('1', 'tumejortorrent', 'http://tumejortorrent.com/', 'movie, tvshow, season, episode', ''), ('1', 'tvsinpagar', 'http://www.tvsinpagar.com/', 'tvshow, season, episode', ''), ('1', 'descargas2020', 'http://descargas2020.com/', 'movie, tvshow, season, episode', ''), ('1', 'mispelisyseries', 'http://mispelisyseries.com/', 'movie', 'search, listado_busqueda')", + "default": "('1', 'torrentrapid', 'http://torrentrapid.com/', 'movie, tvshow, season, episode', 'serie_episodios'), ('1', 'tumejortorrent', 'http://tumejortorrent.com/', 'movie, tvshow, season, episode', ''), ('1', 'torrentlocura', 'http://torrentlocura.com/', 'movie, tvshow, season, episode', ''), ('1', 'tvsinpagar', 'http://www.tvsinpagar.com/', 'tvshow, season, episode', ''), ('1', 'descargas2020', 'http://descargas2020.com/', 'movie, tvshow, season, episode', ''), ('1', 'mispelisyseries', 'http://mispelisyseries.com/', 'movie', 'search, listado_busqueda')", "enabled": true, "visible": false }, diff --git a/plugin.video.alfa/channels/newpct1.py b/plugin.video.alfa/channels/newpct1.py index 3da3f9d4..cc34b3d1 100644 --- a/plugin.video.alfa/channels/newpct1.py +++ b/plugin.video.alfa/channels/newpct1.py @@ -373,6 +373,7 @@ def listado(item): elif item.extra == "series" and not "/miniseries" in item.url: item.action = "episodios" item.contentType = "tvshow" + item.season_colapse = True pag = True elif item.extra == "varios" or "/miniseries" in item.url: item.action = "findvideos" @@ -827,7 +828,7 @@ def listado_busqueda(item): title_lista += [scrapedurl_alt] else: title_lista += [scrapedurl] - if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos + if ("juego/" in scrapedurl or "xbox" in scrapedurl.lower()) and not "/serie" in scrapedurl or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos continue cnt_title += 1 # Sería una línea real más para Itemlist @@ -863,7 +864,7 @@ def listado_busqueda(item): item_local.url = url item_local.extra2 = 'serie_episodios' #Creamos acción temporal excluyente para otros clones if item_local.category == 'Mispelisyseries': #Esta web no gestiona bien el cambio de episodio a Serie - pattern = 'class="btn-torrent">.*?window.location.href = "(.*?)";' #Patron para .torrent + pattern = 'class="btn-torrent">.*?window.location.href = "([^"]+)";' #Patron para .torrent #Como no hay datos consistentes, llamamos al método de fail_over para que encuentre un canal que esté activo y pueda gestionar el cambio de episodio por serie item_local, data_serie = generictools.fail_over_newpct1(item_local, pattern) else: @@ -872,7 +873,7 @@ def listado_busqueda(item): except: pass - pattern = 'class="btn-torrent">.*?window.location.href = "(.*?)";' #Patron para .torrent + pattern = 'class="btn-torrent">.*?window.location.href = "([^"]+)";' #Patron para .torrent if not data_serie or (not scrapertools.find_single_match(data_serie, pattern) and not '

( 0 ) Resultados encontrados ' in data and not '

    ' in data): logger.error("ERROR 01: LISTADO_BUSQUEDA: La Web no responde o ha cambiado de URL: " + item_local.url + " / DATA: " + data_serie) #Si no hay datos consistentes, llamamos al método de fail_over para que encuentre un canal que esté activo y pueda gestionar el cambio de episodio por serie @@ -892,7 +893,7 @@ def listado_busqueda(item): item_local.url = item_local.url.replace('/series/', '/series-vo/') #item_local.url = re.sub(r'\/\d+$', '/', item_local.url) #Quitamos el ID de la serie por compatib. if item_local.url: - title_subs += ["Episodio %sx%s" % (scrapertools.find_single_match(url, '\/temp.*?-(\d+)\/cap.*?-(\d+)\/'))] + title_subs += ["Episodio %sx%s" % (scrapertools.find_single_match(url, '\/temp.*?-(\d+)-?\/cap.*?-(\d+(?:-al-\d+)?)-?\/'))] url = item_local.url except: pass @@ -900,8 +901,8 @@ def listado_busqueda(item): if item.extra == "novedades" and "/serie" in url: if not item_local.url or episodio_serie == 0: item_local.url = url - if scrapertools.find_single_match(url, '\/temp.*?-(\d+)\/cap.*?-(\d+)\/'): - title_subs += ["Episodio %sx%s" % (scrapertools.find_single_match(url, '\/temp.*?-(\d+)\/cap.*?-(\d+)\/'))] + if scrapertools.find_single_match(url, '\/temp.*?-(\d+)-?\/cap.*?-(\d+(?:-al-\d+)?)-?\/'): + title_subs += ["Episodio %sx%s" % (scrapertools.find_single_match(url, '\/temp.*?-(\d+)-?\/cap.*?-(\d+(?:-al-\d+)?)-?\/'))] else: title_subs += ["Episodio 1x01"] @@ -909,6 +910,7 @@ def listado_busqueda(item): if (".com/serie" in url or "/serie" in url or "-serie" in url) and not "/miniseries" in url and (not "/capitulo" in url or "pelisyseries.com" in item_local.channel_host): #Series item_local.action = "episodios" item_local.contentType = "tvshow" + item_local.season_colapse = True item_local.extra = "series" elif "varios/" in url or "/miniseries" in url: #Documentales y varios item_local.action = "findvideos" @@ -963,6 +965,7 @@ def listado_busqueda(item): title = re.sub(r' - [t|T]emp\w+.*?\d+', '', title) title = re.sub(r' [t|T]emp.*?\d+[x|X]\d+', '', title) title = re.sub(r' [t|T]emp.*?\d+', '', title) + title = re.sub(r' [c|C]ap.*?\d+ al \d+', '', title) title = re.sub(r' [c|C]ap.*?\d+', '', title) if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] @@ -1531,24 +1534,40 @@ def episodios(item): item, data = generictools.fail_over_newpct1(item, verify_fo) #Limpiamos num. Temporada y Episodio que ha podido quedar por Novedades + season_display = 0 if item.contentSeason: + if item.season_colapse: #Si viene del menú de Temporadas... + season_display = item.contentSeason #... salvamos el num de sesión a pintar + item.from_num_season_colapse = season_display + del item.season_colapse + item.contentType = "tvshow" + if item.from_title_season_colapse: + item.title = item.from_title_season_colapse + del item.from_title_season_colapse + if item.infoLabels['title']: + del item.infoLabels['title'] del item.infoLabels['season'] if item.contentEpisodeNumber: del item.infoLabels['episode'] + if season_display == 0 and item.from_num_season_colapse: + season_display = item.from_num_season_colapse # Obtener la información actualizada de la Serie. TMDB es imprescindible para Videoteca if not item.infoLabels['tmdb_id']: - tmdb.set_infoLabels(item, True) + try: + tmdb.set_infoLabels(item, True) #TMDB de cada Temp + except: + pass modo_ultima_temp_alt = modo_ultima_temp - if item.ow_force == "1": #Si hay un traspaso de canal o url, se actualiza todo + if item.ow_force == "1": #Si hay un traspaso de canal o url, se actualiza todo modo_ultima_temp_alt = False max_temp = 1 if item.infoLabels['number_of_seasons']: max_temp = item.infoLabels['number_of_seasons'] y = [] - if modo_ultima_temp_alt and item.library_playcounts: #Averiguar cuantas temporadas hay en Videoteca + if modo_ultima_temp_alt and item.library_playcounts: #Averiguar cuantas temporadas hay en Videoteca patron = 'season (\d+)' matches = re.compile(patron, re.DOTALL).findall(str(item.library_playcounts)) for x in matches: @@ -1664,9 +1683,7 @@ def episodios(item): estado = True #Buena calidad de datos por defecto if "\d+)?)<.+?]+>(?P.*?)?<\/span>\s*Calidad\s*]+>" \ - "[\[]\s*(?P.*?)?\s*[\]]<\/span>" + pattern = "[^>]+>.*?Temporada\s*(?:]+>\[\s?)?(?P\d+)?.*?Capitulo(?:s)?\s*(?:]+>\[\s?)?(?P\d+)?(?:.*?(?P\d+)?)<.*?]+>(?P.*?)?<\/span>\s*Calidad\s*]+>[\[]\s*(?P.*?)?\s*[\]]<\/span>" if not scrapertools.find_single_match(info, pattern): if "especial" in info.lower(): # Capitulos Especiales pattern = ".*?[^>]+>.*?Temporada.*?\[.*?(?P\d+).*?\].*?Capitulo.*?\[\s*(?P\d+).*?\]?(?:.*?(?P\d+)?)<.+?]+>(?P.*?)?<\/span>\s*Calidad\s*]+>[\[]\s*(?P.*?)?\s*[\]]<\/span>" @@ -1768,11 +1785,19 @@ def episodios(item): break #Sale del bucle actual del FOR de episodios por página #if ('%sx%s' % (str(item_local.contentSeason), str(item_local.contentEpisodeNumber).zfill(2))) in item.library_playcounts: # continue - + + if season_display > 0: + if item_local.contentSeason > season_display: + continue + elif item_local.contentSeason < season_display: + break + if item_local.active: del item_local.active if item_local.contentTitle: del item_local.infoLabels['title'] + if item_local.season_colapse: + del item_local.season_colapse item_local.context = "['buscar_trailer']" item_local.action = "findvideos" item_local.contentType = "episode" @@ -1780,19 +1805,25 @@ def episodios(item): itemlist.append(item_local.clone()) + #logger.debug(item_local) + data = '' if len(itemlist) > 1: itemlist = sorted(itemlist, key=lambda it: (int(it.contentSeason), int(it.contentEpisodeNumber))) #clasificamos + + if item.season_colapse and not item.add_videolibrary: #Si viene de listado, mostramos solo Temporadas + item, itemlist = generictools.post_tmdb_seasons(item, itemlist) - # Pasada por TMDB y clasificación de lista por temporada y episodio - tmdb.set_infoLabels(itemlist, True) + if not item.season_colapse: #Si no es pantalla de Temporadas, pintamos todo + # Pasada por TMDB y clasificación de lista por temporada y episodio + tmdb.set_infoLabels(itemlist, True) + + #Llamamos al método para el maquillaje de los títulos obtenidos desde TMDB + item, itemlist = generictools.post_tmdb_episodios(item, itemlist) #logger.debug(item) - #Llamamos al método para el maquillaje de los títulos obtenidos desde TMDB - item, itemlist = generictools.post_tmdb_episodios(item, itemlist) - return itemlist diff --git a/plugin.video.alfa/lib/generictools.py b/plugin.video.alfa/lib/generictools.py index 0148dfa0..8f1c130e 100644 --- a/plugin.video.alfa/lib/generictools.py +++ b/plugin.video.alfa/lib/generictools.py @@ -75,6 +75,9 @@ def update_title(item): else: item.add_videolibrary = True #Estamos Añadiendo a la Videoteca. Indicador para control de uso de los Canales if item.add_videolibrary: + if item.season_colapse: del item.season_colapse + if item.from_num_season_colapse: del item.from_num_season_colapse + if item.from_title_season_colapse: del item.from_title_season_colapse if item.contentType == "movie": if item.from_title_tmdb: #Si se salvó el título del contenido devuelto por TMDB, se restaura. item.title = item.from_title_tmdb @@ -169,11 +172,11 @@ def update_title(item): if new_item.infoLabels['rating']: #Actualizamos en Rating en el título try: rating_old = '' - if new_item.infoLabels['rating'] and new_item.infoLabels['rating'] != '0.0': + if new_item.infoLabels['rating'] and new_item.infoLabels['rating'] != 0.0: rating_old = float(new_item.infoLabels['rating']) rating_old = round(rating_old, 1) rating_new = '' - if item.infoLabels['rating'] and item.infoLabels['rating'] != '0.0': + if item.infoLabels['rating'] and item.infoLabels['rating'] != 0.0: rating_new = float(item.infoLabels['rating']) rating_new = round(rating_new, 1) item.title = item.title.replace("[" + str(rating_old) + "]", "[" + str(rating_new) + "]") @@ -290,6 +293,8 @@ def post_tmdb_listado(item, itemlist): if item_local.infoLabels['rating'] and item_local.infoLabels['rating'] != 0.0: rating = float(item_local.infoLabels['rating']) rating = round(rating, 1) + if rating == 0.0: + rating = '' except: pass @@ -396,6 +401,160 @@ def post_tmdb_listado(item, itemlist): return (item, itemlist) +def post_tmdb_seasons(item, itemlist): + logger.info() + + """ + + Pasada para gestión del menú de Temporadas de una Serie + + La clave de activación de este método es la variable item.season_colapse que pone el canal en el Item de Listado. + Esta variable tendrá que desaparecer cuando se aña a la Videoteca para que se analicen los episodios de la forma tradicional + + Repasa todos los episodios producidos en itemlist por "episodios" del canal para extraer las temporadas. Pone un título para Todas la Temps. + Crea un menú con las diferentes temporadas, así como con los títulos de Actualización de Título y de Añadir a Videoteca + Si ha habido un Fail-over o una Intervención Judicial, también lo anuncia + + La llamada al método desde Episodios, antes de pasar Itemlist pot TMDB, es: + + from lib import generictools + item, itemlist = generictools.post_tmdb_seasons(item, itemlist) + + Si solo hay una temporada, devuelte el itemlist original para que se pinten los episodios de la forma tradicional + + """ + #logger.debug(item) + + season = 0 + itemlist_temporadas = [] + itemlist_fo = [] + + #Restauramos valores si ha habido fail-over + channel_alt = '' + if item.channel == channel_py: + if item.channel_alt: + channel_alt = item.category + item.category = item.channel_alt.capitalize() + del item.channel_alt + else: + if item.channel_alt: + channel_alt = item.channel + item.channel = item.channel_alt + item.category = item.channel_alt.capitalize() + del item.channel_alt + if item.url_alt: + item.url = item.url_alt + del item.url_alt + + # Primero creamos un título para TODAS las Temporadas + # Pasada por TMDB a Serie, para datos adicionales + try: + tmdb.set_infoLabels(item, True) #TMDB de cada Temp + except: + pass + + item_season = item.clone() + if item_season.season_colapse: #Quitamos el indicador de listado por Temporadas + del item_season.season_colapse + title = '** Todas las Temporadas' #Agregamos título de TODAS las Temporadas (modo tradicional) + if item_season.infoLabels['number_of_episodes']: #Ponemos el núm de episodios de la Serie + title += ' [%s epi]' % str(item_season.infoLabels['number_of_episodes']) + + rating = '' #Ponemos el rating, si es diferente del de la Serie + if item_season.infoLabels['rating'] and item_season.infoLabels['rating'] != 0.0: + try: + rating = float(item_season.infoLabels['rating']) + rating = round(rating, 1) + except: + pass + if rating and rating == 0.0: + rating = '' + + if not config.get_setting("unify"): #Si Titulos Inteligentes NO seleccionados: + title = '%s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (title, str(item_season.infoLabels['year']), rating, item_season.quality, str(item_season.language)) + else: #Lo arreglamos un poco para Unify + title = title.replace('[', '-').replace(']', '-').replace('.', ',').strip() + title = title.replace("--", "").replace("[]", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + + itemlist_temporadas.append(item_season.clone(title=title, from_title_season_colapse=item.title)) + + #Repasamos todos los episodios para detectar las diferentes temporadas + for item_local in itemlist: + if item_local.contentSeason != season: + season = item_local.contentSeason #Si se detecta una temporada distinta se prepara un título + item_season = item.clone() + item_season.contentSeason = item_local.contentSeason #Se pone el núm de Temporada para obtener mejores datos de TMDB + item_season.title = 'Temporada %s' % item_season.contentSeason + itemlist_temporadas.append(item_season.clone(from_title_season_colapse=item.title)) + + #Si hay más de una temporada se sigue, si no se devuelve el Itemlist original + if len(itemlist_temporadas) > 2: + for item_local in itemlist_temporadas: + if "** Todas las Temporadas" in item_local.title: #Si es el título de TODAS las Temporadas, lo ignoramos + continue + + # Pasada por TMDB a las Temporada + try: + tmdb.set_infoLabels(item_local, True) #TMDB de cada Temp + except: + pass + + if item_local.infoLabels['temporada_air_date']: #Fecha de emisión de la Temp + item_local.title += ' [%s]' % str(scrapertools.find_single_match(str(item_local.infoLabels['temporada_air_date']), r'\/(\d{4})')) + + #rating = '' #Ponemos el rating, si es diferente del de la Serie + #if item_local.infoLabels['rating'] and item_local.infoLabels['rating'] != 0.0: + # try: + # rating = float(item_local.infoLabels['rating']) + # rating = round(rating, 1) + # except: + # pass + #if rating and rating > 0.0: + # item_local.title += ' [%s]' % str(rating) + + if item_local.infoLabels['temporada_num_episodios']: #Núm. de episodios de la Temp + item_local.title += ' [%s epi]' % str(item_local.infoLabels['temporada_num_episodios']) + + if not config.get_setting("unify"): #Si Titulos Inteligentes NO seleccionados: + item_local.title = '%s [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.quality, str(item_local.language)) + else: #Lo arreglamos un poco para Unify + item_local.title = item_local.title.replace('[', '-').replace(']', '-').replace('.', ',').strip() + item_local.title = item_local.title.replace("--", "").replace("[]", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + + #logger.debug(item_local) + + else: #Si hay más de una temporada se sigue, si no se devuelve el Itemlist original + if item.season_colapse: + del item.season_colapse + return (item, itemlist) + + #Permitimos la actualización de los títulos, bien para uso inmediato, o para añadir a la videoteca + itemlist_temporadas.append(item.clone(title="** [COLOR yelow]Actualizar Títulos - vista previa videoteca[/COLOR] **", action="actualizar_titulos", tmdb_stat=False, from_action=item.action, from_title_tmdb=item.title, from_update=True)) + + #Es un canal estándar, sólo una linea de Añadir a Videoteca + title = '' + if item.infoLabels['status'] and item.infoLabels['status'].lower() == "ended": + title += ' [TERMINADA]' + itemlist_temporadas.append(item_season.clone(title="[COLOR yellow]Añadir esta serie a videoteca-[/COLOR]" + title, action="add_serie_to_library", extra="episodios", add_menu=True)) + + #Si intervención judicial, alerto!!! + if item.intervencion: + for clone_inter, autoridad in item.intervencion: + thumb_intervenido = get_thumb(autoridad) + itemlist_fo.append(item.clone(action='', title="[COLOR yellow]" + clone_inter.capitalize() + ': [/COLOR]' + intervenido_judicial + '. Reportar el problema en el foro', thumbnail=thumb_intervenido)) + del item.intervencion + + #Si ha habido fail-over, lo comento + if channel_alt: + itemlist_fo.append(item.clone(action='', title="[COLOR yellow]" + channel_alt.capitalize() + '[/COLOR] [ALT ] en uso')) + itemlist_fo.append(item.clone(action='', title="[COLOR yellow]" + item.category.capitalize() + '[/COLOR] inaccesible')) + + if len(itemlist_fo) > 0: + itemlist_temporadas = itemlist_fo + itemlist_temporadas + + return (item, itemlist_temporadas) + + def post_tmdb_episodios(item, itemlist): logger.info() itemlist_fo = [] @@ -463,6 +622,8 @@ def post_tmdb_episodios(item, itemlist): del item.title_from_channel if item.ow_force: del item.ow_force + if item.season_colapse: + del item.season_colapse for item_local in itemlist: #Recorremos el Itemlist generado por el canal if item_local.add_videolibrary: @@ -491,6 +652,8 @@ def post_tmdb_episodios(item, itemlist): del item_local.intervencion if item_local.ow_force: del item_local.ow_force + if item_local.season_colapse: + del item_local.season_colapse #logger.debug(item_local) #Ajustamos el nombre de la categoría si es un clone de NewPct1 @@ -548,6 +711,8 @@ def post_tmdb_episodios(item, itemlist): if item_local.infoLabels['rating'] and item_local.infoLabels['rating'] != 0.0: rating = float(item_local.infoLabels['rating']) rating = round(rating, 1) + if rating == 0.0: + rating = '' except: pass @@ -733,7 +898,10 @@ def post_tmdb_findvideos(item, itemlist): # tmdb.set_infoLabels(item, True) #elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": # tmdb.set_infoLabels(item, True) - tmdb.set_infoLabels(item, True) + try: + tmdb.set_infoLabels(item, True) #TMDB de cada Temp + except: + pass #Restauramos la información de max num. de episodios por temporada despues de TMDB try: if item.infoLabels['temporada_num_episodios']: @@ -762,6 +930,8 @@ def post_tmdb_findvideos(item, itemlist): if item.infoLabels['rating'] and item.infoLabels['rating'] != 0.0: rating = float(item.infoLabels['rating']) rating = round(rating, 1) + if rating == 0.0: + rating = '' except: pass From a2396123c87af7ffc0c391aa16fc18b230f8da00 Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Wed, 8 Aug 2018 20:29:34 +0200 Subject: [PATCH 24/57] =?UTF-8?q?Elementum:=20Soporta=20el=20marcado=20aut?= =?UTF-8?q?om=C3=A1tico=20de=20v=C3=ADdeos=20vistos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.video.alfa/platformcode/platformtools.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin.video.alfa/platformcode/platformtools.py b/plugin.video.alfa/platformcode/platformtools.py index 77a0fc61..8724e32c 100644 --- a/plugin.video.alfa/platformcode/platformtools.py +++ b/plugin.video.alfa/platformcode/platformtools.py @@ -1047,14 +1047,14 @@ def play_torrent(item, xlistitem, mediaurl): # Plugins externos if seleccion > 1: mediaurl = urllib.quote_plus(item.url) - if "quasar" in torrent_options[seleccion][1] and item.infoLabels['tmdb_id']: #Llamada con más parámetros para completar el título - if item.contentType == 'episode': + if ("quasar" in torrent_options[seleccion][1] or "elementum" in torrent_options[seleccion][1]) and item.infoLabels['tmdb_id']: #Llamada con más parámetros para completar el título + if item.contentType == 'episode' and "elementum" not in torrent_options[seleccion][1]: mediaurl += "&episode=%s&library=&season=%s&show=%s&tmdb=%s&type=episode" % (item.infoLabels['episode'], item.infoLabels['season'], item.infoLabels['tmdb_id'], item.infoLabels['tmdb_id']) - else: + elif item.contentType == 'movie': mediaurl += "&library=&tmdb=%s&type=movie" % (item.infoLabels['tmdb_id']) xbmc.executebuiltin("PlayMedia(" + torrent_options[seleccion][1] % mediaurl + ")") - if "quasar" in torrent_options[seleccion][1]: #Seleccionamos que clientes torrent soportamos + if "quasar" in torrent_options[seleccion][1] or "elementum" in torrent_options[seleccion][1]: #Seleccionamos que clientes torrent soportamos if item.strm_path: #Sólo si es de Videoteca import time time_limit = time.time() + 150 #Marcamos el timepo máx. de buffering From 86e85362c811efd83dcf00a8d716ca1026e7cd0a Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 8 Aug 2018 15:41:07 -0300 Subject: [PATCH 25/57] correcciones e info para los canales --- .../channels/asialiveaction.json | 3 +- plugin.video.alfa/channels/asialiveaction.py | 265 ++++++++++-------- plugin.video.alfa/channels/locopelis.py | 63 ++--- plugin.video.alfa/channels/pelisr.py | 35 ++- plugin.video.alfa/channels/serieslan.py | 121 ++++---- plugin.video.alfa/channels/vepelis.py | 63 +++-- plugin.video.alfa/channelselector.py | 41 ++- 7 files changed, 344 insertions(+), 247 deletions(-) mode change 100755 => 100644 plugin.video.alfa/channels/vepelis.py diff --git a/plugin.video.alfa/channels/asialiveaction.json b/plugin.video.alfa/channels/asialiveaction.json index 051d2359..23ed268c 100644 --- a/plugin.video.alfa/channels/asialiveaction.json +++ b/plugin.video.alfa/channels/asialiveaction.json @@ -8,6 +8,7 @@ "banner": "https://imgur.com/B1IOAu4.png", "categories": [ "movie", - "tvshow" + "tvshow", + "vos" ] } diff --git a/plugin.video.alfa/channels/asialiveaction.py b/plugin.video.alfa/channels/asialiveaction.py index 1913d9ed..e995972f 100644 --- a/plugin.video.alfa/channels/asialiveaction.py +++ b/plugin.video.alfa/channels/asialiveaction.py @@ -6,6 +6,7 @@ import urlparse from core import httptools from core import scrapertools from core import servertools +from core import tmdb from core.item import Item from platformcode import config, logger @@ -17,15 +18,21 @@ def mainlist(item): itemlist = list() - itemlist.append(Item(channel=item.channel, action="estrenos", title="Estrenos", url=host)) itemlist.append(Item(channel=item.channel, action="lista", title="Peliculas", - url=urlparse.urljoin(host, "p/peliculas.html"))) + url=urlparse.urljoin(host, "p/peliculas.html"), type='pl', first=0)) + itemlist.append(Item(channel=item.channel, action="lista", title="Series", - url=urlparse.urljoin(host, "p/series.html"))) - itemlist.append(Item(channel=item.channel, action="category", title="Orden Alfabético", url=host)) - itemlist.append(Item(channel=item.channel, action="category", title="Géneros", url=host)) - itemlist.append(Item(channel=item.channel, action="category", title="Año de Estreno", url=host)) - #itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=urlparse.urljoin(host, "/search?q="))) + url=urlparse.urljoin(host, "p/series.html"), type='sr', first=0)) + + itemlist.append(Item(channel=item.channel, action="category", title="Géneros", url=host, cat='genre')) + + itemlist.append(Item(channel=item.channel, action="category", title="Calidad", url=host, cat='quality')) + + itemlist.append(Item(channel=item.channel, action="category", title="Orden Alfabético", url=host, cat='abc')) + + itemlist.append(Item(channel=item.channel, action="category", title="Año de Estreno", url=host, cat='year')) + + itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host+"/search?q=")) return itemlist @@ -34,155 +41,175 @@ def category(item): itemlist = list() data = httptools.downloadpage(host).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) - patron_generos = "

    "+item.title+"<\/h2>
    ') + elif item.cat == 'genre': + data = scrapertools.find_single_match(data, 'Géneros.*?') + elif item.cat == 'year': + data = scrapertools.find_single_match(data, 'Año.*?') + elif item.cat == 'quality': + data = scrapertools.find_single_match(data, 'Calidad.*?') + + patron = "
  • ([^<]+)" + + matches = re.compile(patron, re.DOTALL).findall(data) + for scrapedtitle, scrapedurl in matches: if scrapedtitle != 'Próximas Películas': - itemlist.append(item.clone(action='lista', title=scrapedtitle, url=host+scrapedurl)) + itemlist.append(item.clone(action='lista', title=scrapedtitle, url=host+scrapedurl, type='cat', first=0)) + return itemlist +def search_results(item): + logger.info() + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + + patron = '([^<]+).*?class="poster-bg" src="([^"]+)"/>.*?

    .*?' + patron +=">(\d{4}).*?

    ([^<]+) 0: - itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]", url=item.url, - action="add_serie_to_library", extra="episodios", show=item.show)) + itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]", + url=item.url, action="add_serie_to_library", extra="episodios", + contentSerieName=item.contentSerieName)) return itemlist -def bitly(item): - logger.info() - itemlist = list() - data = httptools.downloadpage(item.url).data - data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) - patron = '.*?
    .*?") + + patron = '.*?
    (\d{4})
    ' + patron += '
    (.*?)
    ([^<]+)
    ' + matches = scrapertools.find_multiple_matches(data, patron) - for scrapedtype,scrapedquality,scrapedthumbnail,scrapedtitle,scrapedyear,scrapedurl in matches: + + first = int(item.first) + last = first + 19 + if last > len(matches): + last = len(matches) + next = False + + + for scrapedtype, scrapedyear, scrapedthumbnail, scrapedquality, scrapedtitle ,scrapedurl in matches[first:last]: patron_quality="(.+?)" quality = scrapertools.find_multiple_matches(scrapedquality, patron_quality) qual="" + for calidad in quality: qual=qual+"["+calidad+"] " + title="%s [%s] %s" % (scrapedtitle,scrapedyear,qual) - if item.title =="Series": - itemlist.append(item.clone(title=title, url=host+scrapedurl, extra=scrapedtitle, plot=scrapedtitle, - show=scrapedtitle, thumbnail=scrapedthumbnail, contentType="serie", action="capitulos")) - elif scrapedtype != 'serie': - itemlist.append( - item.clone(title=title, url=host+scrapedurl, action="findvideos", extra=scrapedtype, plot=scrapedtitle, - show=scrapedtitle, thumbnail=scrapedthumbnail, contentType="movie", context=["buscar_trailer"])) + new_item= Item(channel=item.channel, title=title, url=host+scrapedurl, thumbnail=scrapedthumbnail, + type=scrapedtype, infoLabels={'year':scrapedyear}) + if scrapedtype.strip() == 'sr': + new_item.contentSerieName = scrapedtitle + new_item.action = 'episodios' + else: + new_item.contentTitle = scrapedtitle + new_item.action = 'findvideos' - # Paginacion - patron_genero = '

    ([^"]+)<\/h1>' - genero = scrapertools.find_single_match(data, patron_genero) - if genero == "Romance" or genero == "Drama": - patron = "') + g_url = '%s%s' % ('https://drive.google.com', video_id) + g_url = g_url.replace('&', '&') + g_data = httptools.downloadpage(g_url, follow_redirects=False, only_headers=True).headers + url = g_data['location'] + dl_links.append(Item(channel=item.channel, title='%s', url=url, action='play', infoLabels=item.infoLabels)) + + if item.type == 'pl': + new_url = scrapertools.find_single_match(data, '
    .*?", "", data) - data = data.decode('cp1252') realplot = '' - patron = '.*?<\/a>' + patron = ' ", "", data) - data = data.decode('cp1252') - data = scrapertools.find_single_match(data, '<\/form><\/table><\/div>.*?<\/ul>') - - patron = '
  • (.*?)<\/a><\/li>' + patron = '
  • ([^<]+)<\/a><\/li>' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: @@ -356,36 +351,40 @@ def findvideos(item): logger.info() itemlist = [] - new_url = get_link(get_source(item.url)) - new_url = get_link(get_source(new_url)) - video_id = scrapertools.find_single_match(new_url, 'http.*?h=(\w+)') - new_url = '%s%s' % (host, 'playeropstream/api.php') - post = {'h': video_id} - post = urllib.urlencode(post) - data = httptools.downloadpage(new_url, post=post).data - json_data = jsontools.load(data) - url = json_data['url'] - server = servertools.get_server_from_url(url) - title = '%s [%s]' % (server, item.language) - itemlist.append(Item(channel=item.channel, title=title, url=url, action='play', language=item.language, - server=server, infoLabels=item.infoLabels)) + try: + new_url = get_link(get_source(item.url)) + new_url = get_link(get_source(new_url)) + video_id = scrapertools.find_single_match(new_url, 'http.*?h=(\w+)') + new_url = '%s%s' % (host, 'playeropstream/api.php') + post = {'h': video_id} + post = urllib.urlencode(post) + data = httptools.downloadpage(new_url, post=post).data + json_data = jsontools.load(data) + url = json_data['url'] + server = servertools.get_server_from_url(url) + title = '%s [%s]' % (server, item.language) + itemlist.append(Item(channel=item.channel, title=title, url=url, action='play', language=item.language, + server=server, infoLabels=item.infoLabels)) - # Requerido para FilterTools + # Requerido para FilterTools - itemlist = filtertools.get_links(itemlist, item, list_language) + itemlist = filtertools.get_links(itemlist, item, list_language) - # Requerido para AutoPlay + # Requerido para AutoPlay - autoplay.start(itemlist, item) + autoplay.start(itemlist, item) + + if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': + itemlist.append(Item(channel=item.channel, + title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', + url=item.url, + action="add_pelicula_to_library", + extra="findvideos", + contentTitle=item.contentTitle + )) + except: + pass - if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': - itemlist.append(Item(channel=item.channel, - title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', - url=item.url, - action="add_pelicula_to_library", - extra="findvideos", - contentTitle=item.contentTitle - )) return itemlist diff --git a/plugin.video.alfa/channels/pelisr.py b/plugin.video.alfa/channels/pelisr.py index c7679eb0..cdcdacb3 100644 --- a/plugin.video.alfa/channels/pelisr.py +++ b/plugin.video.alfa/channels/pelisr.py @@ -72,7 +72,7 @@ def menu_movies(item): def get_source(url): logger.info() data = httptools.downloadpage(url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + data = re.sub(r'\n|\r|\t| |
    |\s{2,}', "", data) return data @@ -93,9 +93,9 @@ def section(item): duplicados=[] data = get_source(host+'/'+item.type) if 'Genero' in item.title: - patron = '
  • (.*?)/i>' + patron = '
  • (.*?) (.*?)<') - title = scrapertools.find_single_match(scrapedtitle,'(.*?) ([^<]+)<') + title = scrapertools.find_single_match(scrapedtitle,'([^<]+)
  • .*?([^<]+)
    (.*?).*?' - patron += '.*?<\/h3>(.*?)<\/span><\/div>' + patron = '