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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] =?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 4c4be527261bc09a5dded45fde9dc27c075ff9ac Mon Sep 17 00:00:00 2001 From: Intel1 Date: Wed, 8 Aug 2018 14:33:38 -0500 Subject: [PATCH 25/54] gnula fix search --- plugin.video.alfa/channels/gnula.json | 3 ++- plugin.video.alfa/channels/gnula.py | 23 +++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/channels/gnula.json b/plugin.video.alfa/channels/gnula.json index a7051218..b7172590 100755 --- a/plugin.video.alfa/channels/gnula.json +++ b/plugin.video.alfa/channels/gnula.json @@ -7,7 +7,8 @@ "thumbnail": "gnula.png", "banner": "gnula.png", "categories": [ - "movie" + "movie", + "vos" ], "settings": [ { diff --git a/plugin.video.alfa/channels/gnula.py b/plugin.video.alfa/channels/gnula.py index d61580b3..ff3534cd 100755 --- a/plugin.video.alfa/channels/gnula.py +++ b/plugin.video.alfa/channels/gnula.py @@ -17,13 +17,13 @@ def mainlist(item): itemlist = [] itemlist.append(Item(channel=item.channel, title="Estrenos", action="peliculas", url= host +"peliculas-online/lista-de-peliculas-online-parte-1/", viewmode="movie", - thumbnail=get_thumb('premieres', auto=True),)) + thumbnail=get_thumb('premieres', auto=True), first=0)) itemlist.append( Item(channel=item.channel, title="Generos", action="generos", url= host + "generos/lista-de-generos/", thumbnail=get_thumb('genres', auto=True),)) itemlist.append(Item(channel=item.channel, title="Recomendadas", action="peliculas", url= host + "peliculas-online/lista-de-peliculas-recomendadas/", viewmode="movie", - thumbnail=get_thumb('recomended', auto=True),)) + thumbnail=get_thumb('recomended', auto=True), first=0)) itemlist.append(Item(channel = item.channel, action = "")) itemlist.append( Item(channel=item.channel, title="Buscar", action="search", url = host_search, @@ -94,7 +94,8 @@ def generos(item): action = 'peliculas', title = title, url = url, - viewmode = "movie")) + viewmode = "movie", + first=0)) itemlist = sorted(itemlist, key=lambda item: item.title) return itemlist @@ -102,11 +103,18 @@ def generos(item): def peliculas(item): logger.info() itemlist = [] + next = True data = httptools.downloadpage(item.url).data patron = '([^<]+) len(matches): + last = len(matches) + next = False + + for scrapedurl, scrapedtitle, scrapedthumbnail, resto in matches[first:last]: language = [] plot = scrapertools.htmlclean(resto).strip() languages = scrapertools.find_multiple_matches(plot, r'\((V.)\)') @@ -127,6 +135,13 @@ def peliculas(item): language=language, quality=quality )) + #paginacion + + url_next_page = item.url + first = last + if next: + itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='peliculas', first=first)) + return itemlist From 3ca1973d22bf22918c1a3e8c082142d9ec465304 Mon Sep 17 00:00:00 2001 From: Alfa <30527549+alfa-addon@users.noreply.github.com> Date: Wed, 8 Aug 2018 16:02:47 -0500 Subject: [PATCH 26/54] v2.6.2 --- plugin.video.alfa/addon.xml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index da32f019..5c238b13 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -19,11 +19,12 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Canales agregados y arreglos[/B][/COLOR] - ¤ dospelis ¤ goodpelis - ¤ pelisr ¤ sonpelis - ¤ jawcloud ¤ estream - ¤ pelisplusco ¤ hdfull - ¤ cinemahd + ¤ asialiveaction ¤ peliculasyseries + ¤ locopelis ¤ serieslan + ¤ pelisr ¤ gnula + ¤ thevideome ¤ submityourflicks + ¤ estrenosgo ¤ gvideo + ¤ cloudvideo ¤ arreglos internos From cb09c2fe8922d5318252b807d6f588b61f251631 Mon Sep 17 00:00:00 2001 From: Alfa <30527549+alfa-addon@users.noreply.github.com> Date: Wed, 8 Aug 2018 16:30:50 -0500 Subject: [PATCH 27/54] rapidvideo: fix --- plugin.video.alfa/servers/rapidvideo.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugin.video.alfa/servers/rapidvideo.py b/plugin.video.alfa/servers/rapidvideo.py index 91832210..062e3752 100755 --- a/plugin.video.alfa/servers/rapidvideo.py +++ b/plugin.video.alfa/servers/rapidvideo.py @@ -35,6 +35,9 @@ 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 + if "Please click on this button to open this video" in data: + post = "confirm.x=77&confirm.y=76&block=1" + data = httptools.downloadpage(page_url, post=post).data patron = 'https://www.rapidvideo.com/e/[^"]+' match = scrapertools.find_multiple_matches(data, patron) if match: From 0447e8676b2a2a4b0a66c4036389bf435acdcb6b Mon Sep 17 00:00:00 2001 From: Alfa <30527549+alfa-addon@users.noreply.github.com> Date: Wed, 8 Aug 2018 16:31:41 -0500 Subject: [PATCH 28/54] v2.6.3 --- plugin.video.alfa/addon.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 5c238b13..3d594812 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + From 16293d252ed33ae409f4f3353a8018a8c3856ea2 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Wed, 8 Aug 2018 17:14:56 -0500 Subject: [PATCH 29/54] rapidvideo: fix --- plugin.video.alfa/servers/rapidvideo.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/servers/rapidvideo.py b/plugin.video.alfa/servers/rapidvideo.py index 062e3752..d6705262 100755 --- a/plugin.video.alfa/servers/rapidvideo.py +++ b/plugin.video.alfa/servers/rapidvideo.py @@ -35,8 +35,8 @@ 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 + post = "confirm.x=77&confirm.y=76&block=1" if "Please click on this button to open this video" in data: - post = "confirm.x=77&confirm.y=76&block=1" data = httptools.downloadpage(page_url, post=post).data patron = 'https://www.rapidvideo.com/e/[^"]+' match = scrapertools.find_multiple_matches(data, patron) @@ -44,6 +44,8 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= for url1 in match: res = scrapertools.find_single_match(url1, '=(\w+)') data = httptools.downloadpage(url1).data + if "Please click on this button to open this video" in data: + data = httptools.downloadpage(url1, post=post).data url = scrapertools.find_single_match(data, 'source src="([^"]+)') ext = scrapertools.get_filename_from_url(url)[-4:] video_urls.append(['%s %s [rapidvideo]' % (ext, res), url]) From aa02d6a4c4504c5588106f182d13b7ab6b1e8f74 Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Fri, 10 Aug 2018 14:31:58 +0200 Subject: [PATCH 30/54] Videolibrary.list_tvshows A veces da errores aleatorios, por no encontrar el .nfo. Probablemente problemas de timing --- plugin.video.alfa/channels/videolibrary.py | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/plugin.video.alfa/channels/videolibrary.py b/plugin.video.alfa/channels/videolibrary.py index 0ac027d6..c2927894 100644 --- a/plugin.video.alfa/channels/videolibrary.py +++ b/plugin.video.alfa/channels/videolibrary.py @@ -127,19 +127,24 @@ def list_tvshows(item): pass head_nfo, item_tvshow = videolibrarytools.read_nfo(tvshow_path) - item_tvshow.title = item_tvshow.contentTitle - item_tvshow.path = raiz - item_tvshow.nfo = tvshow_path + try: #A veces da errores aleatorios, por no encontrar el .nfo. Probablemente problemas de timing + item_tvshow.title = item_tvshow.contentTitle + item_tvshow.path = raiz + item_tvshow.nfo = tvshow_path - # Menu contextual: Marcar como visto/no visto - visto = item_tvshow.library_playcounts.get(item_tvshow.contentTitle, 0) - item_tvshow.infoLabels["playcount"] = visto - if visto > 0: - texto_visto = config.get_localized_string(60020) - contador = 0 - else: - texto_visto = config.get_localized_string(60021) - contador = 1 + # Menu contextual: Marcar como visto/no visto + visto = item_tvshow.library_playcounts.get(item_tvshow.contentTitle, 0) + item_tvshow.infoLabels["playcount"] = visto + if visto > 0: + texto_visto = config.get_localized_string(60020) + contador = 0 + else: + texto_visto = config.get_localized_string(60021) + contador = 1 + + except: + logger.error('No encuentra: ' + str(tvshow_path)) + continue # Menu contextual: Buscar automáticamente nuevos episodios o no if item_tvshow.active and int(item_tvshow.active) > 0: From ed8446f1a287b2200670a9fe4215a8694f86ddac Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Fri, 10 Aug 2018 14:32:34 +0200 Subject: [PATCH 31/54] Beeg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrección de errores en lista de categorías --- plugin.video.alfa/channels/beeg.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/plugin.video.alfa/channels/beeg.py b/plugin.video.alfa/channels/beeg.py index 09fdafe1..f3b68b14 100755 --- a/plugin.video.alfa/channels/beeg.py +++ b/plugin.video.alfa/channels/beeg.py @@ -53,8 +53,8 @@ def mainlist(item): itemlist = [] itemlist.append(Item(channel=item.channel, action="videos", title="Útimos videos", url=url_api + "/index/main/0/pc", viewmode="movie")) - itemlist.append(Item(channel=item.channel, action="listcategorias", title="Listado categorias Populares", - url=url_api + "/index/main/0/pc", extra="popular")) + #itemlist.append(Item(channel=item.channel, action="listcategorias", title="Listado categorias Populares", + # url=url_api + "/index/main/0/pc", extra="popular")) itemlist.append(Item(channel=item.channel, action="listcategorias", title="Listado categorias completo", url=url_api + "/index/main/0/pc", extra="nonpopular")) itemlist.append( @@ -74,7 +74,7 @@ def videos(item): title = Video["title"] itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail, plot="", show="", - folder=True)) + folder=True, contentType="movie")) # Paginador Actual = int(scrapertools.get_match(item.url, url_api + '/index/[^/]+/([0-9]+)/pc')) @@ -93,10 +93,11 @@ def listcategorias(item): data = scrapertools.cache_page(item.url) JSONData = json.load(data) - for Tag in JSONData["tags"][item.extra]: - url = url_api + "/index/tag/0/pc?tag=" + Tag - title = Tag - title = title[:1].upper() + title[1:] + #for Tag in JSONData["tags"][item.extra]: + for Tag in JSONData["tags"]: + url = url_api + "/index/tag/0/pc?tag=" + Tag["tag"] + title = '%s - %s' % (str(Tag["tag"]), str(Tag["videos"])) + #title = title[:1].upper() + title[1:] itemlist.append( Item(channel=item.channel, action="videos", title=title, url=url, folder=True, viewmode="movie")) @@ -108,6 +109,7 @@ def search(item, texto): texto = texto.replace(" ", "+") item.url = item.url % (texto) + try: return videos(item) # Se captura la excepción, para no interrumpir al buscador global si un canal falla From 128e122e92b90ac9e79d5c91e59418f91ecfee95 Mon Sep 17 00:00:00 2001 From: angedam Date: Tue, 14 Aug 2018 16:19:06 +0200 Subject: [PATCH 32/54] update string.po --- .../resources/language/English/strings.po | 24 ++++++++++++++-- .../resources/language/Italian/strings.po | 28 ++++++++++++++++--- .../language/Spanish (Argentina)/strings.po | 23 +++++++++++++-- .../language/Spanish (Mexico)/strings.po | 23 +++++++++++++-- .../resources/language/Spanish/strings.po | 23 +++++++++++++-- 5 files changed, 109 insertions(+), 12 deletions(-) diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 9fca45a7..3dfdfe81 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" @@ -1114,7 +1114,7 @@ msgid "Alfa" msgstr "" msgctxt "#60262" -msgid "You can install the Trakt script below, once installed and configured what you see will be automatically synchronized with your account." +msgid "You can install the Trakt script below." msgstr "" msgctxt "#60263" @@ -4767,3 +4767,23 @@ msgctxt "#70516" msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" msgstr "" +msgctxt "#70517" +msgid "Pre-selected currently activated" +msgstr "" + +msgctxt "#70518" +msgid "Pre-select all" +msgstr "" + +msgctxt "#70519" +msgid "Do not pre-select any" +msgstr "" + +msgctxt "#70520" +msgid "AutoPlay allows auto to reproduce the links directly, based on the configuration of your \nfavorite servers and qualities. " +msgstr "" + +msgctxt "#70521" +msgid "You can install the Trakt script below, \nonce installed and configured what \nyou see will be synchronized with your account automatically. \nDo you want to continue?" +msgstr "" + diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 3c2c5148..1c85670a 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]." @@ -1102,8 +1102,8 @@ msgid "Alfa" msgstr "Alfa" msgctxt "#60262" -msgid "You can install the Trakt script below, once installed and configured what you see will be automatically synchronized with your account." -msgstr "Puoi installare lo script Trakt qui sotto, una volta installato e configurato ciò che vedi sarà sincronizzato automaticamente con il tuo account." +msgid "You can install the Trakt script below." +msgstr "Puoi installare lo script Trakt qui sotto." msgctxt "#60263" msgid "Do you want to continue?" @@ -4755,3 +4755,23 @@ msgctxt "#70516" msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" msgstr "[COLOR aquamarine][B]In Corso %s[/B][/COLOR]" +msgctxt "#70517" +msgid "Pre-selected currently activated" +msgstr "Pre-seleziona attivati attuali" + +msgctxt "#70518" +msgid "Pre-select all" +msgstr "Pre-seleziona tutti" + +msgctxt "#70519" +msgid "Do not pre-select any" +msgstr "Non pre-selezionare nessuno" + +msgctxt "#70520" +msgid "AutoPlay allows auto to reproduce the links directly, based on the configuration of your \nfavorite servers and qualities. " +msgstr "AutoPlay consente di riprodurre automaticamente i collegamenti direttamente, in base alla configurazione dei tuoi \nservers e qualità preferite. " + +msgctxt "#70521" +msgid "You can install the Trakt script below, \nonce installed and configured what \nyou see will be synchronized with your account automatically. \nDo you want to continue?" +msgstr "Puoi installare lo script Trakt qui sotto, \ nuna volta installato e configurato ciò che \nvedrai verrà sincronizzato automaticamente con il tuo account. \nVuoi continuare?" + diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index 80ea8959..f1436457 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -1114,8 +1114,8 @@ msgid "Alfa" msgstr "Alfa" msgctxt "#60262" -msgid "You can install the Trakt script below, once installed and configured what you see will be automatically synchronized with your account." -msgstr "Puedes instalar el script de Trakt a continuacíon, una vez instalado y configurado lo que veas se sincronizara con tu cuenta automaticamente." +msgid "You can install the Trakt script below." +msgstr "Puedes instalar el script de Trakt a continuacíon." msgctxt "#60263" msgid "Do you want to continue?" @@ -4759,3 +4759,22 @@ msgctxt "#70516" msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" msgstr "[COLOR aquamarine][B]En emisión %s[/B][/COLOR]" +msgctxt "#70517" +msgid "Pre-selected currently activated" +msgstr "Pre-seleccionar activados actualmente" + +msgctxt "#70518" +msgid "Pre-select all" +msgstr "Pre-seleccionar todos" + +msgctxt "#70519" +msgid "Do not pre-select any" +msgstr "No pre-seleccionar ninguno" + +msgctxt "#70520" +msgid "AutoPlay allows auto to reproduce the links directly, based on the configuration of your \nfavorite servers and qualities. " +msgstr "AutoPlay permite auto reproducir los enlaces directamente, basándose en la configuracion de tus \nservidores y calidades favoritas. " + +msgctxt "#70521" +msgid "You can install the Trakt script below, \nonce installed and configured what \nyou see will be synchronized with your account automatically. \nDo you want to continue?" +msgstr "Puedes instalar el script de Trakt a continuacíon, \nuna vez instalado y configurado lo que \veas se sincronizara con tu cuenta automaticamente. \n¿Deseas continuar?" diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index 80ea8959..f1436457 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -1114,8 +1114,8 @@ msgid "Alfa" msgstr "Alfa" msgctxt "#60262" -msgid "You can install the Trakt script below, once installed and configured what you see will be automatically synchronized with your account." -msgstr "Puedes instalar el script de Trakt a continuacíon, una vez instalado y configurado lo que veas se sincronizara con tu cuenta automaticamente." +msgid "You can install the Trakt script below." +msgstr "Puedes instalar el script de Trakt a continuacíon." msgctxt "#60263" msgid "Do you want to continue?" @@ -4759,3 +4759,22 @@ msgctxt "#70516" msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" msgstr "[COLOR aquamarine][B]En emisión %s[/B][/COLOR]" +msgctxt "#70517" +msgid "Pre-selected currently activated" +msgstr "Pre-seleccionar activados actualmente" + +msgctxt "#70518" +msgid "Pre-select all" +msgstr "Pre-seleccionar todos" + +msgctxt "#70519" +msgid "Do not pre-select any" +msgstr "No pre-seleccionar ninguno" + +msgctxt "#70520" +msgid "AutoPlay allows auto to reproduce the links directly, based on the configuration of your \nfavorite servers and qualities. " +msgstr "AutoPlay permite auto reproducir los enlaces directamente, basándose en la configuracion de tus \nservidores y calidades favoritas. " + +msgctxt "#70521" +msgid "You can install the Trakt script below, \nonce installed and configured what \nyou see will be synchronized with your account automatically. \nDo you want to continue?" +msgstr "Puedes instalar el script de Trakt a continuacíon, \nuna vez instalado y configurado lo que \veas se sincronizara con tu cuenta automaticamente. \n¿Deseas continuar?" diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 80ea8959..f1436457 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -1114,8 +1114,8 @@ msgid "Alfa" msgstr "Alfa" msgctxt "#60262" -msgid "You can install the Trakt script below, once installed and configured what you see will be automatically synchronized with your account." -msgstr "Puedes instalar el script de Trakt a continuacíon, una vez instalado y configurado lo que veas se sincronizara con tu cuenta automaticamente." +msgid "You can install the Trakt script below." +msgstr "Puedes instalar el script de Trakt a continuacíon." msgctxt "#60263" msgid "Do you want to continue?" @@ -4759,3 +4759,22 @@ msgctxt "#70516" msgid "[COLOR aquamarine][B]In progress %s[/B][/COLOR]" msgstr "[COLOR aquamarine][B]En emisión %s[/B][/COLOR]" +msgctxt "#70517" +msgid "Pre-selected currently activated" +msgstr "Pre-seleccionar activados actualmente" + +msgctxt "#70518" +msgid "Pre-select all" +msgstr "Pre-seleccionar todos" + +msgctxt "#70519" +msgid "Do not pre-select any" +msgstr "No pre-seleccionar ninguno" + +msgctxt "#70520" +msgid "AutoPlay allows auto to reproduce the links directly, based on the configuration of your \nfavorite servers and qualities. " +msgstr "AutoPlay permite auto reproducir los enlaces directamente, basándose en la configuracion de tus \nservidores y calidades favoritas. " + +msgctxt "#70521" +msgid "You can install the Trakt script below, \nonce installed and configured what \nyou see will be synchronized with your account automatically. \nDo you want to continue?" +msgstr "Puedes instalar el script de Trakt a continuacíon, \nuna vez instalado y configurado lo que \veas se sincronizara con tu cuenta automaticamente. \n¿Deseas continuar?" From 67a7904ad91d004a24ad9bba3aab96993acd9d97 Mon Sep 17 00:00:00 2001 From: angedam Date: Tue, 14 Aug 2018 16:20:21 +0200 Subject: [PATCH 33/54] added localized strings --- plugin.video.alfa/core/trakt_tools.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/plugin.video.alfa/core/trakt_tools.py b/plugin.video.alfa/core/trakt_tools.py index 1414a606..0a502b30 100644 --- a/plugin.video.alfa/core/trakt_tools.py +++ b/plugin.video.alfa/core/trakt_tools.py @@ -39,11 +39,11 @@ def auth_trakt(): else: itemlist = [] - title = "Accede a esta página: %s" % item.verify_url + title = config.get_localized_string(60248) % item.verify_url itemlist.append(item.clone(title=title, action="")) - title = "Ingresa este código y acepta: %s" % item.user_code + title = config.get_localized_string(60249) % item.user_code itemlist.append(item.clone(title=title, action="")) - title = "Una vez hecho, pulsa aquí!" + title = config.get_localized_string(60250) itemlist.append(item.clone(title=title, action="token_trakt")) return itemlist except: @@ -107,7 +107,7 @@ def token_trakt(item): config.set_setting("token_trakt", token, "trakt") config.set_setting("refresh_token_trakt", refresh, "trakt") if not item.folder: - platformtools.dialog_notification("Éxito", "Cuenta vinculada correctamente") + platformtools.dialog_notification(config.get_localized_string(60255), config.get_localized_string(60256)) if config.is_xbmc(): import xbmc xbmc.executebuiltin("Container.Refresh") @@ -117,14 +117,14 @@ def token_trakt(item): import traceback logger.error(traceback.format_exc()) if not item.folder: - return platformtools.dialog_notification("Error", "Fallo en el proceso de vinculación") + return platformtools.dialog_notification(config.get_localized_string(60527), config.get_localized_string(60258)) token = "" itemlist = [] if token: - itemlist.append(item.clone("Cuenta vinculada con éxito", action="")) + itemlist.append(item.clone(config.get_localized_string(60256), action="")) else: - itemlist.append(item.clone("Fallo en el proceso de vinculación", action="")) + itemlist.append(item.clone(config.get_localized_string(60260), action="")) return itemlist @@ -276,10 +276,7 @@ def ask_install_script(): from platformcode import platformtools - respuesta = platformtools.dialog_yesno("Alfa", "Puedes instalar el script de Trakt a continuacíon, " - "una vez instalado y configurado lo que " - "veas se sincronizara con tu cuenta automaticamente.", - "¿Deseas continuar?") + respuesta = platformtools.dialog_yesno(config.get_localized_string(20000), config.get_localized_string(70521)) if respuesta: xbmc.executebuiltin("InstallAddon(script.trakt)") return From c58e16d097366e326cb5cac423c8a1897147e32e Mon Sep 17 00:00:00 2001 From: angedam Date: Tue, 14 Aug 2018 16:20:49 +0200 Subject: [PATCH 34/54] added localized strings --- plugin.video.alfa/channels/autoplay.py | 68 +++++++++---------------- plugin.video.alfa/channels/setting.py | 2 +- plugin.video.alfa/channels/tvmoviedb.py | 2 +- 3 files changed, 25 insertions(+), 47 deletions(-) diff --git a/plugin.video.alfa/channels/autoplay.py b/plugin.video.alfa/channels/autoplay.py index f8716bd5..6ba02dca 100644 --- a/plugin.video.alfa/channels/autoplay.py +++ b/plugin.video.alfa/channels/autoplay.py @@ -24,7 +24,7 @@ def context(): _context = "" if config.is_xbmc(): - _context = [{"title": "Configurar AutoPlay", + _context = [{"title": config.get_localized_string(60071), "action": "autoplay_config", "channel": "autoplay"}] return _context @@ -53,11 +53,10 @@ def show_option(channel, itemlist, text_color='yellow', thumbnail=None, fanart=N if fanart == None: fanart = 'https://s7.postimg.cc/65ooga04b/Auto_Play.png' - plot_autoplay = 'AutoPlay permite auto reproducir los enlaces directamente, basándose en la configuracion de tus ' \ - 'servidores y calidades favoritas. ' + plot_autoplay = config.get_localized_string(70520) itemlist.append( Item(channel=__channel__, - title="Configurar AutoPlay", + title=config.get_localized_string(60071), action="autoplay_config", text_color=text_color, thumbnail=thumbnail, @@ -163,7 +162,7 @@ def start(itemlist, item): if 'context' not in item: item.context = list() if not filter(lambda x: x['action'] == 'autoplay_config', context): - item.context.append({"title": "Configurar AutoPlay", + item.context.append({"title": config.get_localized_string(60071), "action": "autoplay_config", "channel": "autoplay", "from_channel": item.channel}) @@ -319,20 +318,19 @@ def start(itemlist, item): # Si se han alcanzado el numero maximo de intentos de este servidor # preguntar si queremos seguir probando o lo ignoramos if max_intentos_servers[videoitem.server.lower()] == 0: - text = "Parece que los enlaces de %s no estan funcionando." % videoitem.server.upper() + text = config.get_localized_string(60072)% videoitem.server.upper() if not platformtools.dialog_yesno("AutoPlay", text, - "¿Desea ignorar todos los enlaces de este servidor?"): + config.get_localized_string(60073)): max_intentos_servers[videoitem.server.lower()] = max_intentos # Si no quedan elementos en la lista se informa if autoplay_elem == autoplay_list[-1]: - platformtools.dialog_notification('AutoPlay', 'No hubo enlaces funcionales') + platformtools.dialog_notification('AutoPlay', config.get_localized_string(70173)) else: - platformtools.dialog_notification('AutoPlay No Fue Posible', 'No Hubo Coincidencias') + platformtools.dialog_notification(config.get_localized_string(60074), config.get_localized_string(60075)) if new_options: - platformtools.dialog_notification("AutoPlay", "Nueva Calidad/Servidor disponible en la " - "configuracion", sound=False) + platformtools.dialog_notification("AutoPlay", config.get_localized_string(60076), sound=False) # Restaura si es necesario el valor previo de "Accion y Player Mode" en preferencias if user_config_setting_action != 2: @@ -344,7 +342,7 @@ def start(itemlist, item): return itemlist -def init(channel, list_servers, list_quality, reset=False): +def init(channel, list_servers, list_quality): ''' Comprueba la existencia de canal en el archivo de configuracion de Autoplay y si no existe lo añade. Es necesario llamar a esta funcion al entrar a cualquier canal que incluya la funcion Autoplay. @@ -360,7 +358,6 @@ def init(channel, list_servers, list_quality, reset=False): change = False result = True - if not config.is_xbmc(): # platformtools.dialog_notification('AutoPlay ERROR', 'Sólo disponible para XBMC/Kodi') result = False @@ -372,7 +369,7 @@ def init(channel, list_servers, list_quality, reset=False): change = True autoplay_node = {"AUTOPLAY": {}} - if channel not in autoplay_node or reset: + if channel not in autoplay_node: change = True # Se comprueba que no haya calidades ni servidores duplicados @@ -405,8 +402,8 @@ def init(channel, list_servers, list_quality, reset=False): result, json_data = jsontools.update_node(autoplay_node, 'autoplay', 'AUTOPLAY') if not result: - heading = "Error al iniciar AutoPlay" - msj = "Consulte su log para obtener mas información." + heading = config.get_localized_string(60077) + msj = config.get_localized_string(60078) icon = 1 platformtools.dialog_notification(heading, msj, icon, sound=False) @@ -472,7 +469,7 @@ def autoplay_config(item): allow_option = True - active_settings = {"id": "active", "label": "AutoPlay (activar/desactivar la auto-reproduccion)", + active_settings = {"id": "active", "label": config.get_localized_string(60079), "color": "0xffffff99", "type": "bool", "default": False, "enabled": allow_option, "visible": allow_option} list_controls.append(active_settings) @@ -483,7 +480,7 @@ def autoplay_config(item): if not status_language: status_language = 0 - set_language = {"id": "language", "label": "Idioma para AutoPlay (Opcional)", "color": "0xffffff99", + set_language = {"id": "language", "label": config.get_localized_string(60080), "color": "0xffffff99", "type": "list", "default": 0, "enabled": "eq(-1,true)", "visible": True, "lvalues": get_languages(item.from_channel)} @@ -503,7 +500,7 @@ def autoplay_config(item): else: enabled = "eq(-3,true)" - custom_servers_settings = {"id": "custom_servers", "label": " Servidores favoritos", "color": "0xff66ffcc", + custom_servers_settings = {"id": "custom_servers", "label": config.get_localized_string(260081), "color": "0xff66ffcc", "type": "bool", "default": False, "enabled": enabled, "visible": True} list_controls.append(custom_servers_settings) if dict_values['active'] and enabled: @@ -516,7 +513,7 @@ def autoplay_config(item): default = num - 1 if default > len(server_list) - 1: default = 0 - set_servers = {"id": "server_%s" % num, "label": u" \u2665 " +"Servidor Favorito %s" % num, + set_servers = {"id": "server_%s" % num, "label": config.get_localized_string(60082) % num, "color": "0xfffcab14", "type": "list", "default": default, "enabled": "eq(-%s,true)+eq(-%s,true)" % (pos1, num), "visible": True, "lvalues": server_list} @@ -534,7 +531,7 @@ def autoplay_config(item): else: enabled = "eq(-7,true)" - custom_quality_settings = {"id": "custom_quality", "label": " Calidades Favoritas", "color": "0xff66ffcc", + custom_quality_settings = {"id": "custom_quality", "label": config.get_localized_string(60083), "color": "0xff66ffcc", "type": "bool", "default": False, "enabled": enabled, "visible": True} list_controls.append(custom_quality_settings) if dict_values['active'] and enabled: @@ -548,7 +545,7 @@ def autoplay_config(item): if default > len(quality_list) - 1: default = 0 - set_quality = {"id": "quality_%s" % num, "label": u" \u2665 " + "Calidad Favorita %s" % num, + set_quality = {"id": "quality_%s" % num, "label": config.get_localized_string(60084) % num, "color": "0xfff442d9", "type": "list", "default": default, "enabled": "eq(-%s,true)+eq(-%s,true)" % (pos1, num), "visible": True, "lvalues": quality_list} @@ -560,29 +557,23 @@ def autoplay_config(item): # Plan B dict_values['plan_b'] = settings_node.get('plan_b', False) enabled = "eq(-4,true)|eq(-8,true)" - plan_b = {"id": "plan_b", "label": " Plan B (Si fallan los favoritos prueba otros enlaces)", + plan_b = {"id": "plan_b", "label": config.get_localized_string(70172), "color": "0xffffff99", "type": "bool", "default": False, "enabled": enabled, "visible": True} list_controls.append(plan_b) # Seccion Prioridades - priority_list = ["Servidor y Calidad", "Calidad y Servidor"] - set_priority = {"id": "priority", "label": " Prioridad (Indica el orden para Auto-Reproducir)", + priority_list = [config.get_localized_string(70174), config.get_localized_string(70175)] + set_priority = {"id": "priority", "label": config.get_localized_string(60085), "color": "0xffffff99", "type": "list", "default": 0, "enabled": True, "visible": "eq(-5,true)+eq(-9,true)+eq(-12,true)", "lvalues": priority_list} list_controls.append(set_priority) dict_values["priority"] = settings_node.get("priority", 0) - - # Abrir cuadro de dialogo platformtools.show_channel_settings(list_controls=list_controls, dict_values=dict_values, callback='save', - item=item, caption='%s - AutoPlay' % channel_name, - custom_button={'visible': True, - 'function': "reset", - 'close': True, - 'label': 'Reset'}) + item=item, caption='%s - AutoPlay' % channel_name) def save(item, dict_data_saved): @@ -661,16 +652,3 @@ def is_active(): settings_node = channel_node.get('settings', {}) return settings_node.get('active', False) - - -def reset(item, dict): - - channel_name = item.from_channel - channel = __import__('channels.%s' % channel_name, fromlist=["channels.%s" % channel_name]) - list_servers = channel.list_servers - list_quality = channel.list_quality - - init(channel_name, list_servers, list_quality, reset=True) - platformtools.dialog_notification('AutoPlay', '%s: Los datos fueron reiniciados' % item.category) - - return diff --git a/plugin.video.alfa/channels/setting.py b/plugin.video.alfa/channels/setting.py index 806558e9..043d8100 100644 --- a/plugin.video.alfa/channels/setting.py +++ b/plugin.video.alfa/channels/setting.py @@ -553,7 +553,7 @@ def channels_onoff(item): # Diálogo para pre-seleccionar # ---------------------------- - preselecciones = ['Pre-seleccionar activados actualmente', 'Pre-seleccionar todos', 'No pre-seleccionar ninguno'] + preselecciones = [config.get_localized_string(70517), config.get_localized_string(70518), config.get_localized_string(70519)] ret = platformtools.dialog_select(config.get_localized_string(60545), preselecciones) if ret == -1: return False # pedido cancel if ret == 2: preselect = [] diff --git a/plugin.video.alfa/channels/tvmoviedb.py b/plugin.video.alfa/channels/tvmoviedb.py index 12e1b19d..2eabf442 100644 --- a/plugin.video.alfa/channels/tvmoviedb.py +++ b/plugin.video.alfa/channels/tvmoviedb.py @@ -1070,7 +1070,7 @@ def filtro_imdb(item): list_controls.append({'id': 'orden', 'label': config.get_localized_string(70455), 'enabled': True, 'color': '0xFF25AA48', 'type': 'list', 'default': -1, 'visible': True}) 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)] + 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'] From 49e32e1f34e0d683547b25e2ae726fe3cdd17a07 Mon Sep 17 00:00:00 2001 From: angedam Date: Tue, 14 Aug 2018 16:21:13 +0200 Subject: [PATCH 35/54] added localized strings --- plugin.video.alfa/servers/openload.py | 2 +- plugin.video.alfa/servers/speedvideo.py | 2 +- plugin.video.alfa/servers/streamango.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin.video.alfa/servers/openload.py b/plugin.video.alfa/servers/openload.py index 81fd95c2..60f7fdda 100644 --- a/plugin.video.alfa/servers/openload.py +++ b/plugin.video.alfa/servers/openload.py @@ -16,7 +16,7 @@ def test_video_exists(page_url): if 'We’re Sorry!' in data: data = httptools.downloadpage(page_url.replace("/embed/", "/f/"), headers=header, cookies=False).data if 'We’re Sorry!' in data: - return False, "[Openload] El archivo no existe o ha sido borrado" + return False, config.get_localized_string(70449) % "Openload" return True, "" diff --git a/plugin.video.alfa/servers/speedvideo.py b/plugin.video.alfa/servers/speedvideo.py index cb4b4d24..cfa37821 100755 --- a/plugin.video.alfa/servers/speedvideo.py +++ b/plugin.video.alfa/servers/speedvideo.py @@ -10,7 +10,7 @@ def test_video_exists(page_url): data = httptools.downloadpage(page_url).data if "File was deleted" in data: - return False, "[speedvideo] El archivo no existe o ha sido borrado" + return False, config.get_localized_string(70449) % "Speedvideo" return True, "" diff --git a/plugin.video.alfa/servers/streamango.py b/plugin.video.alfa/servers/streamango.py index 703961e9..cf1e8b3b 100755 --- a/plugin.video.alfa/servers/streamango.py +++ b/plugin.video.alfa/servers/streamango.py @@ -10,7 +10,7 @@ def test_video_exists(page_url): data = httptools.downloadpage(page_url).data if "We are unable to find the video" in data: - return False, "[streamango] El archivo no existe o ha sido borrado" + return False, config.get_localized_string(70449) % "Streamango" return True, "" From eb6310a5e2c8e8f67a30dac2cefb573ba55f21c3 Mon Sep 17 00:00:00 2001 From: angedam Date: Tue, 14 Aug 2018 17:41:02 +0200 Subject: [PATCH 36/54] added localized strings --- plugin.video.alfa/channels/autoplay.py | 68 +++++++++++++++++--------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/plugin.video.alfa/channels/autoplay.py b/plugin.video.alfa/channels/autoplay.py index 6ba02dca..cc1cdf5a 100644 --- a/plugin.video.alfa/channels/autoplay.py +++ b/plugin.video.alfa/channels/autoplay.py @@ -24,7 +24,7 @@ def context(): _context = "" if config.is_xbmc(): - _context = [{"title": config.get_localized_string(60071), + _context = [{"title": "Configurar AutoPlay", "action": "autoplay_config", "channel": "autoplay"}] return _context @@ -53,10 +53,11 @@ def show_option(channel, itemlist, text_color='yellow', thumbnail=None, fanart=N if fanart == None: fanart = 'https://s7.postimg.cc/65ooga04b/Auto_Play.png' - plot_autoplay = config.get_localized_string(70520) + plot_autoplay = 'AutoPlay permite auto reproducir los enlaces directamente, basándose en la configuracion de tus ' \ + 'servidores y calidades favoritas. ' itemlist.append( Item(channel=__channel__, - title=config.get_localized_string(60071), + title="Configurar AutoPlay", action="autoplay_config", text_color=text_color, thumbnail=thumbnail, @@ -162,7 +163,7 @@ def start(itemlist, item): if 'context' not in item: item.context = list() if not filter(lambda x: x['action'] == 'autoplay_config', context): - item.context.append({"title": config.get_localized_string(60071), + item.context.append({"title": "Configurar AutoPlay", "action": "autoplay_config", "channel": "autoplay", "from_channel": item.channel}) @@ -318,19 +319,20 @@ def start(itemlist, item): # Si se han alcanzado el numero maximo de intentos de este servidor # preguntar si queremos seguir probando o lo ignoramos if max_intentos_servers[videoitem.server.lower()] == 0: - text = config.get_localized_string(60072)% videoitem.server.upper() + text = "Parece que los enlaces de %s no estan funcionando." % videoitem.server.upper() if not platformtools.dialog_yesno("AutoPlay", text, - config.get_localized_string(60073)): + "¿Desea ignorar todos los enlaces de este servidor?"): max_intentos_servers[videoitem.server.lower()] = max_intentos # Si no quedan elementos en la lista se informa if autoplay_elem == autoplay_list[-1]: - platformtools.dialog_notification('AutoPlay', config.get_localized_string(70173)) + platformtools.dialog_notification('AutoPlay', 'No hubo enlaces funcionales') else: - platformtools.dialog_notification(config.get_localized_string(60074), config.get_localized_string(60075)) + platformtools.dialog_notification('AutoPlay No Fue Posible', 'No Hubo Coincidencias') if new_options: - platformtools.dialog_notification("AutoPlay", config.get_localized_string(60076), sound=False) + platformtools.dialog_notification("AutoPlay", "Nueva Calidad/Servidor disponible en la " + "configuracion", sound=False) # Restaura si es necesario el valor previo de "Accion y Player Mode" en preferencias if user_config_setting_action != 2: @@ -342,7 +344,7 @@ def start(itemlist, item): return itemlist -def init(channel, list_servers, list_quality): +def init(channel, list_servers, list_quality, reset=False): ''' Comprueba la existencia de canal en el archivo de configuracion de Autoplay y si no existe lo añade. Es necesario llamar a esta funcion al entrar a cualquier canal que incluya la funcion Autoplay. @@ -358,6 +360,7 @@ def init(channel, list_servers, list_quality): change = False result = True + if not config.is_xbmc(): # platformtools.dialog_notification('AutoPlay ERROR', 'Sólo disponible para XBMC/Kodi') result = False @@ -369,7 +372,7 @@ def init(channel, list_servers, list_quality): change = True autoplay_node = {"AUTOPLAY": {}} - if channel not in autoplay_node: + if channel not in autoplay_node or reset: change = True # Se comprueba que no haya calidades ni servidores duplicados @@ -402,8 +405,8 @@ def init(channel, list_servers, list_quality): result, json_data = jsontools.update_node(autoplay_node, 'autoplay', 'AUTOPLAY') if not result: - heading = config.get_localized_string(60077) - msj = config.get_localized_string(60078) + heading = "Error al iniciar AutoPlay" + msj = "Consulte su log para obtener mas información." icon = 1 platformtools.dialog_notification(heading, msj, icon, sound=False) @@ -469,7 +472,7 @@ def autoplay_config(item): allow_option = True - active_settings = {"id": "active", "label": config.get_localized_string(60079), + active_settings = {"id": "active", "label": "AutoPlay (activar/desactivar la auto-reproduccion)", "color": "0xffffff99", "type": "bool", "default": False, "enabled": allow_option, "visible": allow_option} list_controls.append(active_settings) @@ -480,7 +483,7 @@ def autoplay_config(item): if not status_language: status_language = 0 - set_language = {"id": "language", "label": config.get_localized_string(60080), "color": "0xffffff99", + set_language = {"id": "language", "label": "Idioma para AutoPlay (Opcional)", "color": "0xffffff99", "type": "list", "default": 0, "enabled": "eq(-1,true)", "visible": True, "lvalues": get_languages(item.from_channel)} @@ -500,7 +503,7 @@ def autoplay_config(item): else: enabled = "eq(-3,true)" - custom_servers_settings = {"id": "custom_servers", "label": config.get_localized_string(260081), "color": "0xff66ffcc", + custom_servers_settings = {"id": "custom_servers", "label": " Servidores favoritos", "color": "0xff66ffcc", "type": "bool", "default": False, "enabled": enabled, "visible": True} list_controls.append(custom_servers_settings) if dict_values['active'] and enabled: @@ -513,7 +516,7 @@ def autoplay_config(item): default = num - 1 if default > len(server_list) - 1: default = 0 - set_servers = {"id": "server_%s" % num, "label": config.get_localized_string(60082) % num, + set_servers = {"id": "server_%s" % num, "label": u" \u2665 " +"Servidor Favorito %s" % num, "color": "0xfffcab14", "type": "list", "default": default, "enabled": "eq(-%s,true)+eq(-%s,true)" % (pos1, num), "visible": True, "lvalues": server_list} @@ -531,7 +534,7 @@ def autoplay_config(item): else: enabled = "eq(-7,true)" - custom_quality_settings = {"id": "custom_quality", "label": config.get_localized_string(60083), "color": "0xff66ffcc", + custom_quality_settings = {"id": "custom_quality", "label": " Calidades Favoritas", "color": "0xff66ffcc", "type": "bool", "default": False, "enabled": enabled, "visible": True} list_controls.append(custom_quality_settings) if dict_values['active'] and enabled: @@ -545,7 +548,7 @@ def autoplay_config(item): if default > len(quality_list) - 1: default = 0 - set_quality = {"id": "quality_%s" % num, "label": config.get_localized_string(60084) % num, + set_quality = {"id": "quality_%s" % num, "label": u" \u2665 " + config.get_localized_string(60084) % num, "color": "0xfff442d9", "type": "list", "default": default, "enabled": "eq(-%s,true)+eq(-%s,true)" % (pos1, num), "visible": True, "lvalues": quality_list} @@ -557,23 +560,29 @@ def autoplay_config(item): # Plan B dict_values['plan_b'] = settings_node.get('plan_b', False) enabled = "eq(-4,true)|eq(-8,true)" - plan_b = {"id": "plan_b", "label": config.get_localized_string(70172), + plan_b = {"id": "plan_b", "label": " Plan B (Si fallan los favoritos prueba otros enlaces)", "color": "0xffffff99", "type": "bool", "default": False, "enabled": enabled, "visible": True} list_controls.append(plan_b) # Seccion Prioridades - priority_list = [config.get_localized_string(70174), config.get_localized_string(70175)] - set_priority = {"id": "priority", "label": config.get_localized_string(60085), + priority_list = ["Servidor y Calidad", "Calidad y Servidor"] + set_priority = {"id": "priority", "label": " Prioridad (Indica el orden para Auto-Reproducir)", "color": "0xffffff99", "type": "list", "default": 0, "enabled": True, "visible": "eq(-5,true)+eq(-9,true)+eq(-12,true)", "lvalues": priority_list} list_controls.append(set_priority) dict_values["priority"] = settings_node.get("priority", 0) + + # Abrir cuadro de dialogo platformtools.show_channel_settings(list_controls=list_controls, dict_values=dict_values, callback='save', - item=item, caption='%s - AutoPlay' % channel_name) + item=item, caption='%s - AutoPlay' % channel_name, + custom_button={'visible': True, + 'function': "reset", + 'close': True, + 'label': 'Reset'}) def save(item, dict_data_saved): @@ -652,3 +661,16 @@ def is_active(): settings_node = channel_node.get('settings', {}) return settings_node.get('active', False) + + +def reset(item, dict): + + channel_name = item.from_channel + channel = __import__('channels.%s' % channel_name, fromlist=["channels.%s" % channel_name]) + list_servers = channel.list_servers + list_quality = channel.list_quality + + init(channel_name, list_servers, list_quality, reset=True) + platformtools.dialog_notification('AutoPlay', '%s: Los datos fueron reiniciados' % item.category) + + return From 4ac77a3307da5f167c1eba16704e6a94e10753e2 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Tue, 14 Aug 2018 15:11:25 -0500 Subject: [PATCH 37/54] fix languages, tvmovidedb, watchvideo --- plugin.video.alfa/channels/tvmoviedb.py | 2 +- .../resources/language/English/strings.po | 2 +- .../resources/language/Italian/strings.po | 2 +- .../language/Spanish (Argentina)/strings.po | 16 ++++++------ .../language/Spanish (Mexico)/strings.po | 16 ++++++------ .../resources/language/Spanish/strings.po | 16 ++++++------ plugin.video.alfa/servers/watchvideo.py | 26 +++++-------------- 7 files changed, 34 insertions(+), 46 deletions(-) diff --git a/plugin.video.alfa/channels/tvmoviedb.py b/plugin.video.alfa/channels/tvmoviedb.py index 12e1b19d..2eabf442 100644 --- a/plugin.video.alfa/channels/tvmoviedb.py +++ b/plugin.video.alfa/channels/tvmoviedb.py @@ -1070,7 +1070,7 @@ def filtro_imdb(item): list_controls.append({'id': 'orden', 'label': config.get_localized_string(70455), 'enabled': True, 'color': '0xFF25AA48', 'type': 'list', 'default': -1, 'visible': True}) 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)] + 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'] diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index 9fca45a7..62983bf0 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -2902,7 +2902,7 @@ msgid "Search Movies/TV Shows" msgstr "" msgctxt "#70047" -msgid " Search by director" +msgid "Search by director" msgstr "" msgctxt "#70048" diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index 3c2c5148..950f4d09 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -2890,7 +2890,7 @@ msgid "Search Movies/TV Shows" msgstr "Cerca Film/Serie TV" msgctxt "#70047" -msgid " Search by director" +msgid "Search by director" msgstr "Cerca per regista" msgctxt "#70048" diff --git a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po index 80ea8959..588352ea 100644 --- a/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Argentina)/strings.po @@ -479,7 +479,7 @@ msgstr "Elegir canales incluidos en la búsqueda" msgctxt "#59995" msgid "Saved Searches" -msgstr "Búsquedasguardadas" +msgstr "Búsquedas guardadas" msgctxt "#59996" msgid "Delete saved searches" @@ -2846,7 +2846,7 @@ msgid "Genres" msgstr "Géneros" msgctxt "#70033" -msgid "Actors / Actresses by popularity" +msgid "Actors/Actresses by popularity" msgstr "Actores/Actrices por popularidad" msgctxt "#70034" @@ -2858,12 +2858,12 @@ msgid "Search %s" msgstr "Buscar %s" msgctxt "#70036" -msgid " Search actor/actress" -msgstr " Buscar actor/actriz" +msgid "Search actor/actress" +msgstr "Buscar actor/actriz" msgctxt "#70037" -msgid " Search director, writer..." -msgstr " Buscar director, guionista..." +msgid "Search director, writer..." +msgstr "Buscar director, escritor..." msgctxt "#70038" msgid "Custom Filter" @@ -2902,8 +2902,8 @@ msgid "Search Movies/TV Shows" msgstr "Buscar Películas/Series" msgctxt "#70047" -msgid " Search by director" -msgstr " Buscar por director" +msgid "Search by director" +msgstr "Buscar por director" msgctxt "#70048" msgid " My Account" diff --git a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po index 80ea8959..588352ea 100644 --- a/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po +++ b/plugin.video.alfa/resources/language/Spanish (Mexico)/strings.po @@ -479,7 +479,7 @@ msgstr "Elegir canales incluidos en la búsqueda" msgctxt "#59995" msgid "Saved Searches" -msgstr "Búsquedasguardadas" +msgstr "Búsquedas guardadas" msgctxt "#59996" msgid "Delete saved searches" @@ -2846,7 +2846,7 @@ msgid "Genres" msgstr "Géneros" msgctxt "#70033" -msgid "Actors / Actresses by popularity" +msgid "Actors/Actresses by popularity" msgstr "Actores/Actrices por popularidad" msgctxt "#70034" @@ -2858,12 +2858,12 @@ msgid "Search %s" msgstr "Buscar %s" msgctxt "#70036" -msgid " Search actor/actress" -msgstr " Buscar actor/actriz" +msgid "Search actor/actress" +msgstr "Buscar actor/actriz" msgctxt "#70037" -msgid " Search director, writer..." -msgstr " Buscar director, guionista..." +msgid "Search director, writer..." +msgstr "Buscar director, escritor..." msgctxt "#70038" msgid "Custom Filter" @@ -2902,8 +2902,8 @@ msgid "Search Movies/TV Shows" msgstr "Buscar Películas/Series" msgctxt "#70047" -msgid " Search by director" -msgstr " Buscar por director" +msgid "Search by director" +msgstr "Buscar por director" msgctxt "#70048" msgid " My Account" diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 80ea8959..588352ea 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -479,7 +479,7 @@ msgstr "Elegir canales incluidos en la búsqueda" msgctxt "#59995" msgid "Saved Searches" -msgstr "Búsquedasguardadas" +msgstr "Búsquedas guardadas" msgctxt "#59996" msgid "Delete saved searches" @@ -2846,7 +2846,7 @@ msgid "Genres" msgstr "Géneros" msgctxt "#70033" -msgid "Actors / Actresses by popularity" +msgid "Actors/Actresses by popularity" msgstr "Actores/Actrices por popularidad" msgctxt "#70034" @@ -2858,12 +2858,12 @@ msgid "Search %s" msgstr "Buscar %s" msgctxt "#70036" -msgid " Search actor/actress" -msgstr " Buscar actor/actriz" +msgid "Search actor/actress" +msgstr "Buscar actor/actriz" msgctxt "#70037" -msgid " Search director, writer..." -msgstr " Buscar director, guionista..." +msgid "Search director, writer..." +msgstr "Buscar director, escritor..." msgctxt "#70038" msgid "Custom Filter" @@ -2902,8 +2902,8 @@ msgid "Search Movies/TV Shows" msgstr "Buscar Películas/Series" msgctxt "#70047" -msgid " Search by director" -msgstr " Buscar por director" +msgid "Search by director" +msgstr "Buscar por director" msgctxt "#70048" msgid " My Account" diff --git a/plugin.video.alfa/servers/watchvideo.py b/plugin.video.alfa/servers/watchvideo.py index 879fe6eb..43bea8fc 100755 --- a/plugin.video.alfa/servers/watchvideo.py +++ b/plugin.video.alfa/servers/watchvideo.py @@ -8,35 +8,23 @@ from platformcode import logger def test_video_exists(page_url): logger.info("(page_url='%s')" % page_url) - data = httptools.downloadpage(page_url).data - if "Not Found" in data or "File was deleted" in data: return False, "[Watchvideo] El fichero 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) - - data = httptools.downloadpage(page_url).data - enc_data = scrapertools.find_single_match(data, "type='text/javascript'>(eval.*?)\s*") - dec_data = jsunpack.unpack(enc_data) - video_urls = [] - media_urls = scrapertools.find_multiple_matches(dec_data, '\{file\s*:\s*"([^"]+)",label\s*:\s*"([^"]+)"\}') - for media_url, label in media_urls: - ext = scrapertools.get_filename_from_url(media_url)[-4:] - video_urls.append(["%s %sp [watchvideo]" % (ext, label), media_url]) - + data = httptools.downloadpage(page_url).data + media_urls = scrapertools.find_multiple_matches(data, 'file:"([^"]+)"') + for media_url in media_urls: + ext = "mp4" + if "m3u8" in media_url: + ext = "m3u8" + video_urls.append(["%s [watchvideo]" % (ext), media_url]) video_urls.reverse() - m3u8 = scrapertools.find_single_match(dec_data, '\{file\:"(.*?.m3u8)"\}') - if m3u8: - title = video_urls[-1][0].split(" ", 1)[1] - video_urls.insert(0, [".m3u8 %s" % title, m3u8]) - for video_url in video_urls: logger.info("%s - %s" % (video_url[0], video_url[1])) - return video_urls From 9929913a48b4b977bbfb111bfbd375cf708fa4a6 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Tue, 14 Aug 2018 15:47:35 -0500 Subject: [PATCH 38/54] Ejecutable en windows Modificaciones para crear el ejecutable en windows --- mediaserver/HTTPAndWSServer.py | 2 ++ mediaserver/alfa.py | 2 ++ mediaserver/genera.bat | 5 +++++ mediaserver/platformcode/config.py | 2 +- .../platformcode/controllers/__init__.py | 4 ++-- mediaserver/setup.py | 18 ++++++++++++++++++ 6 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 mediaserver/genera.bat create mode 100644 mediaserver/setup.py diff --git a/mediaserver/HTTPAndWSServer.py b/mediaserver/HTTPAndWSServer.py index 04529a28..8786a8e7 100644 --- a/mediaserver/HTTPAndWSServer.py +++ b/mediaserver/HTTPAndWSServer.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- +import os import random import re import threading import time import traceback +from platformcode import platformtools from BaseHTTPServer import HTTPServer from HTTPWebSocketsHandler import HTTPWebSocketsHandler diff --git a/mediaserver/alfa.py b/mediaserver/alfa.py index e53fe499..f61ab910 100644 --- a/mediaserver/alfa.py +++ b/mediaserver/alfa.py @@ -8,6 +8,8 @@ import sys import threading import time from functools import wraps +# Requerido para el ejecutable en windows +import SimpleHTTPServer sys.dont_write_bytecode = True from platformcode import config diff --git a/mediaserver/genera.bat b/mediaserver/genera.bat new file mode 100644 index 00000000..648884ce --- /dev/null +++ b/mediaserver/genera.bat @@ -0,0 +1,5 @@ +REM Genera los archivos para el ejecutable en windows de Alfa Mediaserver +python setup.py py2exe -p channels,servers,lib,platformcode +xcopy lib dist\lib /y /s /i +xcopy platformcode dist\platformcode /y /s /i +xcopy resources dist\resources /y /s /i diff --git a/mediaserver/platformcode/config.py b/mediaserver/platformcode/config.py index 835384da..042271fe 100644 --- a/mediaserver/platformcode/config.py +++ b/mediaserver/platformcode/config.py @@ -14,7 +14,7 @@ settings_dic = {} adult_setting = {} -def get_addon_version(linea_inicio=0, total_lineas=2): +def get_addon_version(linea_inicio=0, total_lineas=2, with_fix=False): ''' Devuelve el número de de versión del addon, obtenido desde el archivo addon.xml ''' diff --git a/mediaserver/platformcode/controllers/__init__.py b/mediaserver/platformcode/controllers/__init__.py index bc031b42..41b7e8ae 100644 --- a/mediaserver/platformcode/controllers/__init__.py +++ b/mediaserver/platformcode/controllers/__init__.py @@ -7,12 +7,12 @@ import os from inspect import isclass from controller import Controller -from platformcode import logger +from platformcode import config, logger def load_controllers(): controllers = [] - path = os.path.split(__file__)[0] + path = os.path.join(config.get_runtime_path(),"platformcode\controllers") for fname in os.listdir(path): mod, ext = os.path.splitext(fname) fname = os.path.join(path, fname) diff --git a/mediaserver/setup.py b/mediaserver/setup.py new file mode 100644 index 00000000..34d9a062 --- /dev/null +++ b/mediaserver/setup.py @@ -0,0 +1,18 @@ +# setup.py +# Para crear el ejecutable de Alfa mediaserver en windows +# Se usa py2exe +# Linea de comandos para la creacion: python setup.py py2exe -p channels,servers,lib,platformcode +from distutils.core import setup +import glob +import py2exe + +setup(packages=['channels','servers','lib','platformcode','platformcode/controllers'], + data_files=[("channels",glob.glob("channels\\*.py")), + ("channels",glob.glob("channels\\*.json")), + ("servers",glob.glob("servers\\*.py")), + ("servers",glob.glob("servers\\*.json")), + ("",glob.glob("addon.xml")), + ], + console=["alfa.py"] + ) + From 5e828f73b1ae82001f617eabb037674917878bde Mon Sep 17 00:00:00 2001 From: Intel1 Date: Tue, 14 Aug 2018 17:58:05 -0500 Subject: [PATCH 39/54] flashx: fix --- plugin.video.alfa/servers/flashx.json | 4 ++++ plugin.video.alfa/servers/flashx.py | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/plugin.video.alfa/servers/flashx.json b/plugin.video.alfa/servers/flashx.json index 20c5e9ff..a43573b3 100644 --- a/plugin.video.alfa/servers/flashx.json +++ b/plugin.video.alfa/servers/flashx.json @@ -6,6 +6,10 @@ { "pattern": "flashx.(?:tv|pw|ws|sx|to)/(?:embed.php\\?c=|embed-|playvid-|)([A-z0-9]+)", "url": "https://www.flashx.tv/\\1.html" + }, + { + "pattern": "flashx.co/([A-z0-9]+).jsp", + "url": "https://www.flashx.to/\\1.jsp" } ] }, diff --git a/plugin.video.alfa/servers/flashx.py b/plugin.video.alfa/servers/flashx.py index 987ea410..d752b14b 100644 --- a/plugin.video.alfa/servers/flashx.py +++ b/plugin.video.alfa/servers/flashx.py @@ -17,15 +17,16 @@ def test_video_exists(page_url): def get_video_url(page_url, premium=False, user="", password="", video_password=""): + domain_fx = "(?:co|tv)" logger.info("url=" + page_url) pfxfx = "" data = httptools.downloadpage(page_url, cookies=False).data data = data.replace("\n","") - cgi_counter = scrapertools.find_single_match(data, """(?is)src=.(https://www.flashx.co/counter.cgi.*?[^(?:'|")]+)""") + cgi_counter = scrapertools.find_single_match(data, """(?is)src=.(https://www.flashx.%s/counter.cgi.*?[^(?:'|")]+)""" %domain_fx) cgi_counter = cgi_counter.replace("%0A","").replace("%22","") - playnow = scrapertools.find_single_match(data, 'https://www.flashx.co/dl[^"]+') + playnow = scrapertools.find_single_match(data, 'https://www.flashx.%s/dl[^"]+' %domain_fx) # Para obtener el f y el fxfx - js_fxfx = "https://www." + scrapertools.find_single_match(data.replace("//","/"), """(?is)(flashx.co/js\w+/c\w+.*?[^(?:'|")]+)""") + js_fxfx = "https://www." + scrapertools.find_single_match(data.replace("//","/"), """(?is)(flashx.%s/js\w+/c\w+.*?[^(?:'|")]+)""" %domain_fx) data_fxfx = httptools.downloadpage(js_fxfx).data mfxfx = scrapertools.find_single_match(data_fxfx, 'get.*?({.*?})').replace("'","").replace(" ","") matches = scrapertools.find_multiple_matches(mfxfx, '(\w+):(\w+)') @@ -35,7 +36,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= logger.info("mfxfxfx2= %s" %pfxfx) if pfxfx == "": pfxfx = "ss=yes&f=fail&fxfx=6" - coding_url = 'https://www.flashx.co/flashx.php?%s' %pfxfx + coding_url = 'https://www.flashx.co/flashx.php?%s' %(pfxfx) # {f: 'y', fxfx: '6'} bloque = scrapertools.find_single_match(data, '(?s)Form method="POST" action(.*?)span') flashx_id = scrapertools.find_single_match(bloque, 'name="id" value="([^"]+)"') From 7e80eaf8d2ee4cbbff1ad98662f53317d729b110 Mon Sep 17 00:00:00 2001 From: pipcat Date: Wed, 15 Aug 2018 09:31:34 +0200 Subject: [PATCH 40/54] =?UTF-8?q?Actualizaciones=20autom=C3=A1ticas=20(qui?= =?UTF-8?q?ck-fixes)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.video.alfa/channels/pelispedia.py | 6 +- plugin.video.alfa/channels/setting.py | 26 +++- plugin.video.alfa/platformcode/config.py | 35 +++--- plugin.video.alfa/platformcode/updater.py | 145 ++++++++++++++++++++++ plugin.video.alfa/resources/settings.xml | 5 + 5 files changed, 191 insertions(+), 26 deletions(-) create mode 100644 plugin.video.alfa/platformcode/updater.py diff --git a/plugin.video.alfa/channels/pelispedia.py b/plugin.video.alfa/channels/pelispedia.py index 4c7b65b8..e10c382d 100644 --- a/plugin.video.alfa/channels/pelispedia.py +++ b/plugin.video.alfa/channels/pelispedia.py @@ -143,7 +143,8 @@ def listado_genero(item): itemlist = [] - data = httptools.downloadpage(item.url).data + # ~ data = httptools.downloadpage(item.url).data + data = obtener_data(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |
    |
    |
    |
    |
    |-\s", "", data) if item.extra == "movies": @@ -180,7 +181,8 @@ def listado_anio(item): itemlist = [] - data = httptools.downloadpage(item.url).data + # ~ data = httptools.downloadpage(item.url).data + data = obtener_data(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |
    |
    |
    |
    |
    |-\s", "", data) if item.extra == "movies": diff --git a/plugin.video.alfa/channels/setting.py b/plugin.video.alfa/channels/setting.py index 806558e9..a889fe6e 100644 --- a/plugin.video.alfa/channels/setting.py +++ b/plugin.video.alfa/channels/setting.py @@ -293,15 +293,22 @@ def submenu_tools(item): logger.info() itemlist = list() - #Herramientas de testeo masivo + # Herramientas personalizadas import os - test_path = os.path.join(config.get_runtime_path(), "channels/test.py") - if filetools.exists(test_path): - itemlist.append(Item(title='Testear canales y servidores ...', channel="test", action="mainlist")) - itemlist.append( - Item(channel=CHANNELNAME, action="", title="", folder=False, thumbnail=get_thumb("setting_0.png"))) + channel_custom = os.path.join(config.get_runtime_path(), 'channels', 'custom.py') + if not filetools.exists(channel_custom): + user_custom = os.path.join(config.get_data_path(), 'custom.py') + if filetools.exists(user_custom): + filetools.copy(user_custom, channel_custom, silent=True) + if filetools.exists(channel_custom): + itemlist.append(Item(channel='custom', action='mainlist', title='Custom Channel')) + itemlist.append(Item(channel=CHANNELNAME, action="check_quickfixes", folder=False, + title="Comprobar actualizaciones urgentes", plot="Versión actual: %s" % config.get_addon_version() )) + itemlist.append(Item(channel=CHANNELNAME, action="", title="", folder=False, + thumbnail=get_thumb("setting_0.png"))) + itemlist.append(Item(channel=CHANNELNAME, title=config.get_localized_string(60564), action="", folder=False, thumbnail=get_thumb("channels.png"))) itemlist.append(Item(channel=CHANNELNAME, title=config.get_localized_string(60565), action="conf_tools", @@ -322,6 +329,13 @@ def submenu_tools(item): return itemlist +def check_quickfixes(item): + logger.info() + + from platformcode import updater + return updater.check_addon_updates(verbose=True) + + def conf_tools(item): logger.info() diff --git a/plugin.video.alfa/platformcode/config.py b/plugin.video.alfa/platformcode/config.py index 227a5262..3e71eecf 100644 --- a/plugin.video.alfa/platformcode/config.py +++ b/plugin.video.alfa/platformcode/config.py @@ -15,27 +15,26 @@ __settings__ = xbmcaddon.Addon(id="plugin.video." + PLUGIN_NAME) __language__ = __settings__.getLocalizedString -def get_addon_version(linea_inicio=0, total_lineas=2): +def get_addon_version(with_fix=True): ''' - Devuelve el número de de versión del addon, obtenido desde el archivo addon.xml + Devuelve el número de versión del addon, y opcionalmente número de fix si lo hay ''' - return __settings__.getAddonInfo('version') - path = os.path.join(get_runtime_path(), "addon.xml") - f = open(path, "rb") - data = [] - for x, line in enumerate(f): - if x < linea_inicio: continue - if len(data) == total_lineas: break - data.append(line) - f.close() - data1 = "".join(data) - # - aux = re.findall(' 0: - version = aux[0] - return version + if with_fix: + return __settings__.getAddonInfo('version') + get_addon_version_fix() + else: + return __settings__.getAddonInfo('version') +def get_addon_version_fix(): + try: + last_fix_json = os.path.join(get_runtime_path(), 'last_fix.json') # información de la versión fixeada del usuario + if os.path.exists(last_fix_json): + with open(last_fix_json, 'r') as f: data=f.read(); f.close() + fix = re.findall('"fix_version"\s*:\s*(\d+)', data) + if fix: + return '.fix%s' % fix[0] + except: + pass + return '' def get_platform(full_version=False): """ diff --git a/plugin.video.alfa/platformcode/updater.py b/plugin.video.alfa/platformcode/updater.py new file mode 100644 index 00000000..b5eb4df4 --- /dev/null +++ b/plugin.video.alfa/platformcode/updater.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- +# -------------------------------------------------------------------------------- +# Updater (kodi) +# -------------------------------------------------------------------------------- + +import os +import time +import threading + +from platformcode import config, logger, platformtools + +from core import httptools +from core import jsontools +from core import downloadtools +from core import ziptools +from core import filetools + + +def check_addon_init(): + logger.info() + + # Subtarea de monitor. Se activa cada X horas para comprobar si hay FIXES al addon + def check_addon_monitor(): + logger.info() + + # Obtiene el íntervalo entre actualizaciones y si se quieren mensajes + try: + timer = int(config.get_setting('addon_update_timer')) # Intervalo entre actualizaciones, en Ajustes de Alfa + if timer <= 0: + return # 0. No se quieren actualizaciones + verbose = config.get_setting('addon_update_message') + except: + timer = 12 # Por defecto cada 12 horas + verbose = False # Por defecto, sin mensajes + timer = timer * 3600 # Lo pasamos a segundos + + if config.get_platform(True)['num_version'] >= 14: # Si es Kodi, lanzamos el monitor + import xbmc + monitor = xbmc.Monitor() + else: # Lanzamos solo una actualización y salimos + check_addon_updates(verbose) # Lanza la actualización + return + + while not monitor.abortRequested(): # Loop infinito hasta cancelar Kodi + + check_addon_updates(verbose) # Lanza la actualización + + if monitor.waitForAbort(timer): # Espera el tiempo programado o hasta que cancele Kodi + break # Cancelación de Kodi, salimos + + return + + # Lanzamos en Servicio de actualización de FIXES + try: + threading.Thread(target=check_addon_monitor).start() # Creamos un Thread independiente, hasta el fin de Kodi + time.sleep(5) # Dejamos terminar la primera verificación... + except: # Si hay problemas de threading, se llama una sola vez + try: + timer = int(config.get_setting('addon_update_timer')) # Intervalo entre actualizaciones, en Ajustes de Alfa + if timer <= 0: + return # 0. No se quieren actualizaciones + verbose = config.get_setting('addon_update_message') + except: + verbose = False # Por defecto, sin mensajes + pass + check_addon_updates(verbose) # Lanza la actualización, en Ajustes de Alfa + time.sleep(5) # Dejamos terminar la primera verificación... + + return + + +def check_addon_updates(verbose=False): + logger.info() + + ADDON_UPDATES_JSON = 'http://extra.alfa-addon.com/addon_updates/updates.json' + ADDON_UPDATES_ZIP = 'http://extra.alfa-addon.com/addon_updates/updates.zip' + + try: + last_fix_json = os.path.join(config.get_runtime_path(), 'last_fix.json') # información de la versión fixeada del usuario + # Se guarda en get_runtime_path en lugar de get_data_path para que se elimine al cambiar de versión + + # Descargar json con las posibles actualizaciones + # ----------------------------------------------- + data = httptools.downloadpage(ADDON_UPDATES_JSON, timeout=2).data + if data == '': + logger.info('No se encuentran actualizaciones del addon') + if verbose: + platformtools.dialog_notification('Alfa ya está actualizado', 'No hay ninguna actualización urgente') + return False + + data = jsontools.load(data) + if 'addon_version' not in data or 'fix_version' not in data: + logger.info('No hay actualizaciones del addon') + if verbose: + platformtools.dialog_notification('Alfa ya está actualizado', 'No hay ninguna actualización urgente') + return False + + # Comprobar versión que tiene instalada el usuario con versión de la actualización + # -------------------------------------------------------------------------------- + current_version = config.get_addon_version(with_fix=False) + if current_version != data['addon_version']: + logger.info('No hay actualizaciones para la versión %s del addon' % current_version) + if verbose: + platformtools.dialog_notification('Alfa ya está actualizado', 'No hay ninguna actualización urgente') + return False + + if os.path.exists(last_fix_json): + lastfix = jsontools.load(filetools.read(last_fix_json)) + if lastfix['addon_version'] == data['addon_version'] and lastfix['fix_version'] == data['fix_version']: + logger.info('Ya está actualizado con los últimos cambios. Versión %s.fix%d' % (data['addon_version'], data['fix_version'])) + if verbose: + platformtools.dialog_notification('Alfa ya está actualizado', 'Versión %s.fix%d' % (data['addon_version'], data['fix_version'])) + return False + + # Descargar zip con las actualizaciones + # ------------------------------------- + localfilename = os.path.join(config.get_data_path(), 'temp_updates.zip') + if os.path.exists(localfilename): os.remove(localfilename) + + downloadtools.downloadfile(ADDON_UPDATES_ZIP, localfilename, silent=True) + + # Descomprimir zip dentro del addon + # --------------------------------- + unzipper = ziptools.ziptools() + unzipper.extract(localfilename, config.get_runtime_path()) + + # Borrar el zip descargado + # ------------------------ + os.remove(localfilename) + + # Guardar información de la versión fixeada + # ----------------------------------------- + if 'files' in data: data.pop('files', None) + filetools.write(last_fix_json, jsontools.dump(data)) + + logger.info('Addon actualizado correctamente a %s.fix%d' % (data['addon_version'], data['fix_version'])) + if verbose: + platformtools.dialog_notification('Alfa actualizado a', 'Versión %s.fix%d' % (data['addon_version'], data['fix_version'])) + return True + + except: + logger.error('Error al comprobar actualizaciones del addon!') + if verbose: + platformtools.dialog_notification('Alfa actualizaciones', 'Error al comprobar actualizaciones') + return False diff --git a/plugin.video.alfa/resources/settings.xml b/plugin.video.alfa/resources/settings.xml index 78cb1591..b9b426cc 100644 --- a/plugin.video.alfa/resources/settings.xml +++ b/plugin.video.alfa/resources/settings.xml @@ -120,6 +120,11 @@ + + + + + From d7b70067099ec61107a36a0bee5521cea3dcbcc2 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Wed, 15 Aug 2018 09:52:57 -0500 Subject: [PATCH 41/54] Canales eliminados seriesverde alltorrent yaske --- plugin.video.alfa/channels/alltorrent.json | 39 --- plugin.video.alfa/channels/alltorrent.py | 314 ------------------ plugin.video.alfa/channels/seriesverde.json | 37 --- plugin.video.alfa/channels/seriesverde.py | 321 ------------------ plugin.video.alfa/channels/yaske.json | 48 --- plugin.video.alfa/channels/yaske.py | 349 -------------------- 6 files changed, 1108 deletions(-) delete mode 100755 plugin.video.alfa/channels/alltorrent.json delete mode 100755 plugin.video.alfa/channels/alltorrent.py delete mode 100644 plugin.video.alfa/channels/seriesverde.json delete mode 100644 plugin.video.alfa/channels/seriesverde.py delete mode 100644 plugin.video.alfa/channels/yaske.json delete mode 100644 plugin.video.alfa/channels/yaske.py diff --git a/plugin.video.alfa/channels/alltorrent.json b/plugin.video.alfa/channels/alltorrent.json deleted file mode 100755 index ae9bbebe..00000000 --- a/plugin.video.alfa/channels/alltorrent.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "id": "alltorrent", - "name": "Alltorrent", - "active": false, - "adult": false, - "language": ["cast"], - "thumbnail": "altorrent.png", - "fanart": "altorrent.jpg", - "categories": [ - "torrent", - "movie" - ], - "settings": [ - { - "id": "modo_grafico", - "type": "bool", - "label": "Buscar información extra", - "default": true, - "enabled": true, - "visible": true - }, - { - "id": "include_in_global_search", - "type": "bool", - "label": "Incluir en busqueda global", - "default": false, - "enabled": true, - "visible": true - }, - { - "id": "include_in_newest_torrent", - "type": "bool", - "label": "Incluir en Novedades - Torrent", - "default": true, - "enabled": true, - "visible": true - } - ] -} \ No newline at end of file diff --git a/plugin.video.alfa/channels/alltorrent.py b/plugin.video.alfa/channels/alltorrent.py deleted file mode 100755 index 2f9ec7cd..00000000 --- a/plugin.video.alfa/channels/alltorrent.py +++ /dev/null @@ -1,314 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -import sys -import urllib -import urlparse - -from channelselector import get_thumb -from core import httptools -from core import scrapertools -from core import servertools -from core.item import Item -from platformcode import config, logger -from core import tmdb -from lib import generictools - -host = 'http://alltorrent.net/' -__modo_grafico__ = config.get_setting('modo_grafico', 'alltorrent') - - -def mainlist(item): - logger.info() - itemlist = [] - - thumb_pelis = get_thumb("channels_movie.png") - thumb_pelis_hd = get_thumb("channels_movie_hd.png") - thumb_series = get_thumb("channels_tvshow.png") - thumb_series_hd = get_thumb("channels_tvshow_hd.png") - thumb_buscar = get_thumb("search.png") - - itemlist.append(item.clone(title="[COLOR springgreen][B]Todas Las Películas[/B][/COLOR]", action="listado", - url=host, thumbnail=thumb_pelis, extra="pelicula")) - itemlist.append(item.clone(title="[COLOR springgreen] Incluyen 1080p[/COLOR]", action="listado", - url=host + "rezolucia/1080p/", thumbnail=thumb_pelis_hd, extra="pelicula")) - itemlist.append(item.clone(title="[COLOR springgreen] Incluyen 720p[/COLOR]", action="listado", - url=host + "rezolucia/720p/", thumbnail=thumb_pelis_hd, extra="pelicula")) - itemlist.append(item.clone(title="[COLOR springgreen] Incluyen Hdrip[/COLOR]", action="listado", - url=host + "rezolucia/hdrip/", thumbnail=thumb_pelis, extra="pelicula")) - itemlist.append(item.clone(title="[COLOR springgreen] Incluyen 3D[/COLOR]", action="listado", - url=host + "rezolucia/3d/", thumbnail=thumb_pelis_hd, extra="pelicula")) - itemlist.append(item.clone(title="[COLOR floralwhite][B]Buscar[/B][/COLOR]", action="search", thumbnail=thumb_buscar, - extra="titulo")) - itemlist.append(item.clone(title="[COLOR oldlace] Por Título[/COLOR]", action="search", thumbnail=thumb_buscar, - extra="titulo")) - itemlist.append(item.clone(title="[COLOR oldlace] Por Año[/COLOR]", action="search", thumbnail=thumb_buscar, - extra="año")) - itemlist.append(item.clone(title="[COLOR oldlace] Por Rating Imdb[/COLOR]", action="search", thumbnail=thumb_buscar, - extra="rating")) - - return itemlist - - -def listado(item): - logger.info() - itemlist = [] - - # Descarga la página - data = '' - try: - data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) - except: - pass - - if not data and item.extra != "año": #Si la web está caída salimos sin dar error - logger.error("ERROR 01: LISTADO: La Web no responde o ha cambiado de URL: " + item.url + " / DATA: " + data) - itemlist.append(item.clone(action='', title=item.channel.capitalize() + ': ERROR 01: LISTADO:. La Web no responde o ha cambiado de URL. Si la Web está activa, reportar el error con el log')) - return itemlist #si no hay más datos, algo no funciona, pintamos lo que tenemos - elif not data and item.extra == "año": #cuando no hay datos para un año, da error. Tratamos de evitar el error - return itemlist - - patron = '
    ([^"]+)<\/a>\s?<\/div>
    (.*?)<\/div><\/div><\/div>' - #data = scrapertools.find_single_match(data, patron) - matches = re.compile(patron, re.DOTALL).findall(data) - if not matches and not '' - data = scrapertools.find_single_match(data, patron) - patron = 'href="([^"]+)">([^<]+)' - matches = scrapertools.find_multiple_matches(data, patron) - for scrapedurl, scrapedtitle in matches: - url = HOST + scrapedurl - itemlist.append(Item(channel = item.channel, - action = "peliculas", - title = scrapedtitle, - url = url, - text_color = color1, - contentType = 'movie', - folder = True, - viewmode = "movie_with_plot" - )) - return itemlist - - -def findvideos(item): - logger.info() - itemlist = [] - sublist = [] - data = httptools.downloadpage(item.url).data - patron = '(?s)id="online".*?server="([^"]+)"' - mserver = scrapertools.find_single_match(data, patron) - if not item.query: - item.query = scrapertools.find_single_match(item.url, "peliculas.*?/[0-9]+/([^/]+)").replace("-","+") - url_m = "http://olimpo.link/?q=%s&server=%s" %(item.query, mserver) - patron = 'class="favicon.*?domain=(?:www\.|)([^\.]+).*?text-overflow.*?href="([^"]+).*?' - patron += '\[([^\]]+)\].*?\[([^\]]+)\]' - data = httptools.downloadpage(url_m).data - matches = scrapertools.find_multiple_matches(data, patron) - page = 2 - while len(matches)>0: - for server, url, idioma, calidad in matches: - if "drive" in server: - server = "gvideo" - sublist.append(item.clone(action="play", url=url, folder=False, text_color=color1, quality=calidad.strip(), - language=idioma.strip(), - server = server, - title="Ver en %s %s" %(server, calidad) - )) - data = httptools.downloadpage(url_m + "&page=%s" %page).data - matches = scrapertools.find_multiple_matches(data, patron) - page +=1 - sublist = sorted(sublist, key=lambda Item: Item.quality + Item.server) - for k in ["Español", "Latino", "Ingles - Sub Español", "Ingles"]: - lista_idioma = filter(lambda i: i.language == k, sublist) - if lista_idioma: - itemlist.append(item.clone(title=k, folder=False, infoLabels = "", - text_color=color2, text_bold=True, thumbnail=thumbnail_host)) - itemlist.extend(lista_idioma) - - tmdb.set_infoLabels(itemlist, True) - # Insertar items "Buscar trailer" y "Añadir a la videoteca" - if itemlist and item.extra != "library": - title = "%s [Buscar trailer]" % (item.contentTitle) - itemlist.insert(0, item.clone(channel="trailertools", action="buscartrailer", - text_color=color3, title=title, viewmode="list")) - - if config.get_videolibrary_support(): - itemlist.append(Item(channel=item.channel, title="Añadir película a la videoteca", - action="add_pelicula_to_library", url=item.url, text_color="green", - contentTitle=item.contentTitle, extra="library", thumbnail=thumbnail_host)) - return itemlist - -def play(item): - logger.info() - itemlist = [] - ddd = httptools.downloadpage(item.url).data - url = "http://olimpo.link" + scrapertools.find_single_match(ddd, '