From 5e97ab2e1a68e3ee32dfd9430ac493d34524c8f7 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Thu, 17 Aug 2017 01:11:46 +0200 Subject: [PATCH 01/29] fix param --- plugin.video.alfa/core/scraper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/core/scraper.py b/plugin.video.alfa/core/scraper.py index 0e7b6760..1dcef673 100755 --- a/plugin.video.alfa/core/scraper.py +++ b/plugin.video.alfa/core/scraper.py @@ -188,7 +188,7 @@ def cuadro_completar(item): 'visible': True}) # logger.debug(dict_default) - if platformtools.show_channel_settings(listado_controles, caption="Completar información", item=item, + if platformtools.show_channel_settings(list_controls=listado_controles, caption="Completar información", item=item, callback="core.scraper.callback_cuadro_completar", custom_button={"visible": False}): return True From c8a84200776c982a33ec8969be28cd49e9da6dd0 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Thu, 17 Aug 2017 01:57:50 +0200 Subject: [PATCH 02/29] 1.5.5 --- plugin.video.alfa/addon.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index bda36ebd..e55df21f 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@  - + @@ -19,9 +19,11 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Arreglos[/B][/COLOR] - [I]- streamix.cloud + [I]- streamplay, gracias a msdos + - allcalidad - tvseriesdk - - newpct + - mundoflv + - ver-peliculas - fix internos[/I] Navega con Kodi por páginas web para ver sus videos de manera fácil. From fc51e0bc4e465c2e5715fd27125c3a3111dff6a9 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Thu, 17 Aug 2017 23:39:49 +0200 Subject: [PATCH 03/29] fix adult with types and setting.xml --- plugin.video.alfa/channels/inkapelis.py | 2 +- plugin.video.alfa/channels/search.py | 2 +- plugin.video.alfa/platformcode/config.py | 105 +++++---------------- plugin.video.alfa/platformcode/launcher.py | 4 +- plugin.video.alfa/videolibrary_service.py | 8 +- 5 files changed, 33 insertions(+), 88 deletions(-) diff --git a/plugin.video.alfa/channels/inkapelis.py b/plugin.video.alfa/channels/inkapelis.py index ca8863cf..29d7bf2f 100755 --- a/plugin.video.alfa/channels/inkapelis.py +++ b/plugin.video.alfa/channels/inkapelis.py @@ -101,7 +101,7 @@ def generos(item): matches = scrapertools.find_multiple_matches(data, '
  • (.*?)') for scrapedurl, scrapedtitle in matches: - if scrapedtitle == "Eroticas +18 " and config.get_setting("adult_mode") != "0": + if scrapedtitle == "Eroticas +18 " and config.get_setting("adult_mode") != 0: itemlist.append(item.clone(action="eroticas", title=scrapedtitle, url=scrapedurl)) elif (scrapedtitle != "Estrenos ") and (scrapedtitle != "Próximos Estrenos "): itemlist.append(item.clone(action="entradas", title=scrapedtitle, url=scrapedurl)) diff --git a/plugin.video.alfa/channels/search.py b/plugin.video.alfa/channels/search.py index d9a05f5b..4ae621fc 100644 --- a/plugin.video.alfa/channels/search.py +++ b/plugin.video.alfa/channels/search.py @@ -222,7 +222,7 @@ def show_result(item): if item.adult and config.get_setting("adult_request_password"): # Solicitar contraseña tecleado = platformtools.dialog_input("", "Contraseña para canales de adultos", True) - if tecleado is None or tecleado != config.get_setting("adult_pin"): + if tecleado is None or tecleado != config.get_setting("adult_password"): return [] item.channel = item.__dict__.pop('from_channel') diff --git a/plugin.video.alfa/platformcode/config.py b/plugin.video.alfa/platformcode/config.py index 47b19146..78f2325e 100644 --- a/plugin.video.alfa/platformcode/config.py +++ b/plugin.video.alfa/platformcode/config.py @@ -8,7 +8,6 @@ import re import xbmc import xbmcaddon -import xbmcgui PLUGIN_NAME = "alfa" @@ -112,18 +111,12 @@ def open_settings(): # Cambio de contraseña if settings_post['adult_aux_new_password1']: if settings_post['adult_aux_new_password1'] == settings_post['adult_aux_new_password2']: - adult_password = set_setting('adult_password', settings_post['adult_aux_new_password1']) + set_setting('adult_password', settings_post['adult_aux_new_password1']) else: platformtools.dialog_ok("Canales para adultos", "Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden.", "Entre de nuevo en 'Preferencias' para cambiar la contraseña") - # Fijar adult_pin - adult_pin = "" - if settings_post["adult_request_password"] == True: - adult_pin = adult_password - set_setting("adult_pin", adult_pin) - else: platformtools.dialog_ok("Canales para adultos", "La contraseña no es correcta.", "Los cambios realizados en esta sección no se guardaran.") @@ -156,13 +149,13 @@ def get_setting(name, channel="", server="", default=None): """ Retorna el valor de configuracion del parametro solicitado. - Devuelve el valor del parametro 'name' en la configuracion global, en la configuracion propia del canal 'channel' + Devuelve el valor del parametro 'name' en la configuracion global, en la configuracion propia del canal 'channel' o en la del servidor 'server'. - Los parametros channel y server no deben usarse simultaneamente. Si se especifica el nombre del canal se devolvera - el resultado de llamar a channeltools.get_channel_setting(name, channel, default). Si se especifica el nombre del + Los parametros channel y server no deben usarse simultaneamente. Si se especifica el nombre del canal se devolvera + el resultado de llamar a channeltools.get_channel_setting(name, channel, default). Si se especifica el nombre del servidor se devolvera el resultado de llamar a servertools.get_channel_setting(name, server, default). Si no se - especifica ninguno de los anteriores se devolvera el valor del parametro en la configuracion global si existe o + especifica ninguno de los anteriores se devolvera el valor del parametro en la configuracion global si existe o el valor default en caso contrario. @param name: nombre del parametro @@ -175,7 +168,7 @@ def get_setting(name, channel="", server="", default=None): @type default: cualquiera @return: El valor del parametro 'name' - @rtype: El tipo del valor del parametro + @rtype: El tipo del valor del parametro """ @@ -206,35 +199,20 @@ def get_setting(name, channel="", server="", default=None): value = xbmc.translatePath(value) # hack para devolver el tipo correspondiente - settings_types = get_settings_types() - - if settings_types.get(name) in ['enum', 'number']: - try: - value = int(value) - except Exception, ex: - from platformcode import logger - logger.error("Error al convertir '%s' de tipo 'enum','number' \n%s" % (name, ex)) - - elif settings_types.get(name) == 'bool': - value = value == 'true' - - elif name not in settings_types: - try: - if value in ['true', 'false']: - if value == 'true': - aux_val = True - else: - aux_val = False - value = bool(aux_val) - else: - t = eval(value) - value = t[0](t[1]) - except Exception, ex: - from platformcode import logger - logger.error("Error al convertir '%s' se pasa como tipo 'None'\n%s" % (name, ex)) - value = None - - return value + if value == "true": + return True + elif value == "false": + return False + else: + # special case return as str + if name in ["adult_password", "adult_aux_intro_password", "adult_aux_new_password1", "adult_aux_new_password2"]: + return value + else: + try: + value = int(value) + except ValueError: + pass + return value def set_setting(name, value, channel="", server=""): @@ -269,25 +247,16 @@ def set_setting(name, value, channel="", server=""): return servertools.set_server_setting(name, value, server) else: try: - settings_types = get_settings_types() - - if settings_types.get(name) == 'bool': + if isinstance(value, bool): if value: - new_value = "true" + value = "true" else: - new_value = "false" + value = "false" - elif settings_types.get(name): - new_value = str(value) + elif isinstance(value, (int, long)): + value = str(value) - else: - if isinstance(value, basestring): - new_value = "(%s, %s)" % (type(value).__name__, repr(value)) - - else: - new_value = "(%s, %s)" % (type(value).__name__, value) - - __settings__.setSetting(name, new_value) + __settings__.setSetting(name, value) except Exception, ex: from platformcode import logger @@ -297,28 +266,6 @@ def set_setting(name, value, channel="", server=""): return value -def get_settings_types(): - """ - Devuelve un diccionario con los parametros (key) de la configuracion global y sus tipos (value) - - :return: dict - """ - win10000 = xbmcgui.Window(10000) - settings_types = win10000.getProperty(PLUGIN_NAME + "_settings_types") - - if not settings_types: - infile = open(os.path.join(get_runtime_path(), "resources", "settings.xml")) - data = infile.read() - infile.close() - - matches = re.findall(' Date: Sat, 19 Aug 2017 11:04:04 -0500 Subject: [PATCH 04/29] Update seriesblanco.py --- plugin.video.alfa/channels/seriesblanco.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/seriesblanco.py b/plugin.video.alfa/channels/seriesblanco.py index e4ba57cc..fc770bf6 100644 --- a/plugin.video.alfa/channels/seriesblanco.py +++ b/plugin.video.alfa/channels/seriesblanco.py @@ -10,16 +10,21 @@ from core import scrapertoolsV2 from core import servertools from core.item import Item from platformcode import config, logger +from channels import autoplay HOST = "http://seriesblanco.com/" IDIOMAS = {'es': 'Español', 'en': 'Inglés', 'la': 'Latino', 'vo': 'VO', 'vos': 'VOS', 'vosi': 'VOSI', 'otro': 'OVOS'} list_idiomas = IDIOMAS.values() CALIDADES = ['SD', 'HDiTunes', 'Micro-HD-720p', 'Micro-HD-1080p', '1080p', '720p'] +list_servers =['youwatch','powvideo', 'openload', 'streamplay', 'streaminto', 'flashx', 'gamovideo', 'nowvideo', + 'rockfile'] def mainlist(item): logger.info() + autoplay.init(item.channel, list_servers, CALIDADES) + thumb_series = get_thumb("channels_tvshow.png") thumb_series_az = get_thumb("channels_tvshow_az.png") thumb_buscar = get_thumb("search.png") @@ -44,6 +49,7 @@ def mainlist(item): thumbnail=thumb_buscar)) itemlist = filtertools.show_option(itemlist, item.channel, list_idiomas, CALIDADES) + autoplay.show_option(item.channel, itemlist) return itemlist @@ -199,7 +205,8 @@ def episodios(item): display_title = "%s - %s %s" % (item.show, title, idiomas) # logger.debug("Episode found %s: %s" % (display_title, urlparse.urljoin(HOST, url))) itemlist.append(item.clone(title=display_title, url=urlparse.urljoin(HOST, url), - action="findvideos", plot=plot, fanart=fanart, language=filter_lang)) + action="findvideos", plot=plot, fanart=fanart, language=filter_lang, + context = autoplay.context)) itemlist = filtertools.get_links(itemlist, item, list_idiomas, CALIDADES) @@ -248,7 +255,7 @@ def parse_videos(item, type_str, data): itemlist.append( item.clone(title=title, fulltitle=item.title, url=urlparse.urljoin(HOST, v_fields.get("link")), action="play", language=IDIOMAS.get(v_fields.get("language"), "OVOS"), - quality=quality)) + quality=quality, server= v_fields.get("server"))) if len(itemlist) > 0: return itemlist @@ -284,6 +291,14 @@ def findvideos(item): list_links = filtertools.get_links(list_links, item, list_idiomas, CALIDADES) + # Requerido para FilterTools + + itemlist = filtertools.get_links(list_links, item, list_idiomas) + + # Requerido para AutoPlay + + autoplay.start(list_links, item) + return list_links From 4e1d2dd7d6d1365da52cc9b55387e526903cf187 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:05:22 -0500 Subject: [PATCH 05/29] Update hentaiid.py --- plugin.video.alfa/channels/hentaiid.py | 91 ++++++++------------------ 1 file changed, 29 insertions(+), 62 deletions(-) diff --git a/plugin.video.alfa/channels/hentaiid.py b/plugin.video.alfa/channels/hentaiid.py index fd2f6c07..f6cb51aa 100755 --- a/plugin.video.alfa/channels/hentaiid.py +++ b/plugin.video.alfa/channels/hentaiid.py @@ -17,7 +17,6 @@ def mainlist(item): itemlist = list() itemlist.append(Item(channel=item.channel, action="series", title="Novedades", url=urlparse.urljoin(CHANNEL_HOST, "archivos/h2/"), extra="novedades")) - itemlist.append(Item(channel=item.channel, action="letras", title="Por orden alfabético")) itemlist.append(Item(channel=item.channel, action="generos", title="Por géneros", url=CHANNEL_HOST)) itemlist.append(Item(channel=item.channel, action="series", title="Sin Censura", url=urlparse.urljoin(CHANNEL_HOST, "archivos/sin-censura/"))) @@ -25,20 +24,6 @@ def mainlist(item): url=urlparse.urljoin(CHANNEL_HOST, "archivos/hight-definition/"))) itemlist.append(Item(channel=item.channel, action="series", title="Mejores Hentais", url=urlparse.urljoin(CHANNEL_HOST, "archivos/ranking-hentai/"))) - itemlist.append(Item(channel=item.channel, action="search", title="Buscar", - url=urlparse.urljoin(CHANNEL_HOST, "?s="))) - - return itemlist - - -def letras(item): - logger.info() - - itemlist = [] - - for letra in '0ABCDEFGHIJKLMNOPQRSTUVWXYZ': - itemlist.append(Item(channel=item.channel, action="series", title=letra, - url=urlparse.urljoin(CHANNEL_HOST, "/?s=letra-%s" % letra.replace("0", "num")))) return itemlist @@ -47,49 +32,34 @@ def generos(item): logger.info() itemlist = [] - data = httptools.downloadpage(item.url).data - data = re.sub(r"\n|\r|\t|\s{2}", "", data) + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(item.url).data) - data = scrapertools.get_match(data, "
    (.*?)
    ") - patron = "(.*?)" + pattern = 'id="hentai2">]+>(.*?)
    ' + data = scrapertools.find_single_match(data, pattern) + + patron = 'href="([^"]+)"[^>]+>(.*?)' matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedurl, scrapedtitle in matches: - title = scrapertools.entityunescape(scrapedtitle) - url = urlparse.urljoin(item.url, scrapedurl) + for url, title in matches: # logger.debug("title=[{0}], url=[{1}]".format(title, url)) - itemlist.append(Item(channel=item.channel, action="series", title=title, url=url)) return itemlist -def search(item, texto): - logger.info() - if item.url == "": - item.url = urlparse.urljoin(CHANNEL_HOST, "animes/?buscar=") - texto = texto.replace(" ", "+") - item.url = "%s%s" % (item.url, texto) - - try: - return series(item) - # Se captura la excepción, para no interrumpir al buscador global si un canal falla - except: - import sys - for line in sys.exc_info(): - logger.error("%s" % line) - return [] - - def series(item): logger.info() - data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(item.url).data) - patron = '

    ' \ - '(.*?)[^<]+

    [^<]+[^<]+ 0: - scrapedurl = match - scrapedtitle = ">> Pagina Siguiente" + if pagination: + page = scrapertools.find_single_match(pagination, '>Página\s*(\d+)\s*de\s*\d+<') + pattern = 'href="([^"]+)">%s<' % (int(page) + 1) + url_page = scrapertools.find_single_match(pagination, pattern) - itemlist.append(Item(channel=item.channel, action="series", title=scrapedtitle, url=scrapedurl, - folder=True, viewmode="movies_with_plot")) + if url_page: + itemlist.append(Item(channel=item.channel, action="series", title=">> Página Siguiente", url=url_page)) return itemlist @@ -124,9 +89,11 @@ def episodios(item): logger.info() itemlist = [] - data = httptools.downloadpage(item.url).data - data = scrapertools.find_single_match(data, '
    (.*?)
    ') - patron = '([^<]+)' + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(item.url).data) + pattern = '
    Lista de Capítulos
    (.*?)
    ' + + data = scrapertools.find_single_match(data, pattern) + patron = ']+>([^<]+)' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: @@ -136,10 +103,9 @@ def episodios(item): plot = item.plot # logger.debug("title=[{0}], url=[{1}], thumbnail=[{2}]".format(title, url, thumbnail)) - itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url, thumbnail=thumbnail, plot=plot, show=item.show, fulltitle="%s %s" % (item.show, title), - fanart=thumbnail, viewmode="movies_with_plot", folder=True)) + fanart=thumbnail)) return itemlist @@ -148,7 +114,8 @@ def findvideos(item): logger.info() data = httptools.downloadpage(item.url).data - patron = '
    [^<]+<[iframe|IFRAME].*?[src|SRC]="([^"]+)"' + + patron = '<(?:iframe)?(?:IFRAME)?\s*(?:src)?(?:SRC)?="([^"]+)"' matches = re.compile(patron, re.DOTALL).findall(data) for url in matches: From 073f39a523b80fe13a35a9f8d0cbce8f3b63dad5 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:07:45 -0500 Subject: [PATCH 06/29] Update hentaienespanol.py --- plugin.video.alfa/channels/hentaienespanol.py | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/plugin.video.alfa/channels/hentaienespanol.py b/plugin.video.alfa/channels/hentaienespanol.py index c329affe..4551f015 100755 --- a/plugin.video.alfa/channels/hentaienespanol.py +++ b/plugin.video.alfa/channels/hentaienespanol.py @@ -61,30 +61,3 @@ def search(item, texto): return todas(item) else: return [] - - -def findvideos(item): - logger.info() - - itemlist = [] - - data = httptools.downloadpage(item.url).data - patron = '<\/i>Ver.*?<\/span><\/a> <\/li>' - matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedurl in matches: - title = item.title - url = scrapedurl - itemlist.append(item.clone(title=title, url=url, action="play")) - - return itemlist - - -def play(item): - logger.info() - itemlist = [] - item.url = item.url.replace(' ', '%20') - data = httptools.downloadpage(item.url, add_referer=True).data - url = scrapertools.find_single_match(data, ' Date: Sat, 19 Aug 2017 11:08:29 -0500 Subject: [PATCH 07/29] Update hdfull.py --- plugin.video.alfa/channels/hdfull.py | 29 ++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/plugin.video.alfa/channels/hdfull.py b/plugin.video.alfa/channels/hdfull.py index 5156104b..19d1b90c 100755 --- a/plugin.video.alfa/channels/hdfull.py +++ b/plugin.video.alfa/channels/hdfull.py @@ -12,6 +12,20 @@ from core import servertools from core.item import Item from platformcode import config, logger from platformcode import platformtools +from channels import filtertools +from channels import autoplay + +IDIOMAS = {'LAT': 'Latino', 'ESP': 'Español', 'ESPSUB': 'VOS', 'ENGSUB' : 'VOSE'} +list_language = IDIOMAS.values() +list_quality = ['RHDTV', 'HD0180M', 'HD720M', 'TS'] +list_servers = [ + 'openload', + 'powvideo', + 'streamplay', + 'streamcloud', + 'nowvideo' + +] host = "http://hdfull.tv" @@ -42,7 +56,7 @@ def login(): def mainlist(item): logger.info() - + autoplay.init(item.channel, list_servers, list_quality) itemlist = [] itemlist.append(Item(channel=item.channel, action="menupeliculas", title="Películas", url=host, folder=True)) @@ -56,6 +70,7 @@ def mainlist(item): login() itemlist.append(Item(channel=item.channel, action="settingCanal", title="Configuración...", url="")) + autoplay.show_option(item.channel, itemlist) return itemlist @@ -465,7 +480,8 @@ def episodios(item): 'id'] + ";3" itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=title, url=url, - thumbnail=thumbnail, show=item.show, folder=True, contentType="episode")) + thumbnail=thumbnail, show=item.show, folder=True, contentType="episode", + context =autoplay.context)) if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=url_targets, @@ -696,11 +712,13 @@ def findvideos(item): fanart = scrapertools.find_single_match(data, '
    Date: Sat, 19 Aug 2017 11:09:04 -0500 Subject: [PATCH 08/29] Update hdfull.json --- plugin.video.alfa/channels/hdfull.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/hdfull.json b/plugin.video.alfa/channels/hdfull.json index c1512fa4..f0e4b9f1 100755 --- a/plugin.video.alfa/channels/hdfull.json +++ b/plugin.video.alfa/channels/hdfull.json @@ -49,6 +49,21 @@ "enabled": "!eq(-1,'')", "visible": true }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "Latino", + "Español", + "VOS", + "VOSE" + ] + }, { "id": "include_in_global_search", "type": "bool", @@ -58,4 +73,4 @@ "visible": true } ] -} \ No newline at end of file +} From ac364bcea39155e8217106c43e487b5bfcfc6428 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:09:41 -0500 Subject: [PATCH 09/29] Update animeshd.py --- plugin.video.alfa/channels/animeshd.py | 34 ++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/animeshd.py b/plugin.video.alfa/channels/animeshd.py index 3fd34f84..99e51916 100755 --- a/plugin.video.alfa/channels/animeshd.py +++ b/plugin.video.alfa/channels/animeshd.py @@ -8,6 +8,19 @@ from core import scrapertools from core import servertools from core.item import Item from platformcode import logger +from channels import autoplay +from channels import filtertools + +IDIOMAS = {'Latino': 'LAT', 'Castellano':'CAST','Subtitulado': 'VOS'} +list_language = IDIOMAS.values() +logger.debug('lista_language: %s' % list_language) + +list_quality = ['default'] +list_servers = [ + 'rapidvideo', + 'downace', + 'openload' +] tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png", "Drama": "https://s16.postimg.org/94sia332d/drama.png", @@ -35,6 +48,8 @@ headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/ def mainlist(item): logger.info() + + autoplay.init(item.channel, list_servers, list_quality) itemlist = [] itemlist.append(item.clone(title="Ultimas", @@ -65,6 +80,8 @@ def mainlist(item): fanart='https://s30.postimg.org/pei7txpa9/buscar.png' )) + autoplay.show_option(item.channel, itemlist) + return itemlist @@ -161,10 +178,16 @@ def episodios(item): matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedlang, scrapedtitle in matches: - language = scrapedlang + language = IDIOMAS[scrapedlang] + title = scrapedtitle + ' (%s)' % language url = scrapedurl - itemlist.append(item.clone(title=title, url=url, action='findvideos', language=language)) + itemlist.append(item.clone(title=title, + url=url, + action='findvideos', + language=language, + quality ='default' + )) return itemlist @@ -180,6 +203,13 @@ def findvideos(item): videoitem.channel = item.channel videoitem.title = title videoitem.action = 'play' + videoitem.language = item.language + # Requerido para FilterTools + itemlist = filtertools.get_links(itemlist, item, list_language) + + # Requerido para AutoPlay + + autoplay.start(itemlist, item) return itemlist From b8598482ceefe3d724db6a95fc8d9254aa68fd84 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:10:02 -0500 Subject: [PATCH 10/29] Update animeshd.json --- plugin.video.alfa/channels/animeshd.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/animeshd.json b/plugin.video.alfa/channels/animeshd.json index fdf04e49..293ac85a 100755 --- a/plugin.video.alfa/channels/animeshd.json +++ b/plugin.video.alfa/channels/animeshd.json @@ -21,8 +21,24 @@ "description": "First release" } ], - "categories": [ + "categories": [ "latino", "anime" + ], + "settings": [ + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "LAT", + "CAST", + "SUB" + ] + } ] } From bf0682972cef5fdca9ff81e0fbcf7b1047d6d81b Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:24:26 -0500 Subject: [PATCH 11/29] Update animeflv.py --- plugin.video.alfa/channels/animeflv.py | 46 ++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py index 67ad3f07..c7d80f6c 100755 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -9,6 +9,22 @@ from core import jsontools from core import scrapertools from core.item import Item from platformcode import logger +from channels import filtertools +from channels import autoplay + +list_language = ['No filtrar'] +logger.debug('lista_language: %s' % list_language) + +list_quality = ['default'] +list_servers = [ + 'izanagi', + 'yourupload', + 'okru', + 'netutv', + 'openload', + 'streamango', + 'mp4upload' +] HOST = "https://animeflv.net/" @@ -16,6 +32,8 @@ HOST = "https://animeflv.net/" def mainlist(item): logger.info() + autoplay.init(item.channel, list_servers, list_quality) + itemlist = list() itemlist.append(Item(channel=item.channel, action="novedades_episodios", title="Últimos episodios", url=HOST)) @@ -35,6 +53,8 @@ def mainlist(item): itemlist = renumbertools.show_option(item.channel, itemlist) + autoplay.show_option(item.channel, itemlist) + return itemlist @@ -131,7 +151,7 @@ def novedades_episodios(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="findvideos", title=title, url=url, show=show, thumbnail=thumbnail, - fulltitle=title) + fulltitle=title, context = autoplay.context) itemlist.append(new_item) @@ -155,7 +175,7 @@ def novedades_anime(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot) + fulltitle=title, plot=plot, context = autoplay.context) if _type != "Película": new_item.show = title new_item.context = renumbertools.context(item) @@ -189,7 +209,7 @@ def listado(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot) + fulltitle=title, plot=plot, context = autoplay.context) if _type == "Anime": new_item.show = title @@ -223,7 +243,7 @@ def episodios(item): item.plot = scrapertools.find_single_match(data, 'Description[^>]+>

    (.*?)

    ') matches = re.compile('href="([^"]+)">
    ' - '

    (.*?)

    ', re.DOTALL).findall(data) + '\s*

    (.*?)

    ', re.DOTALL).findall(data) if matches: for url, thumb, title in matches: @@ -242,7 +262,7 @@ def episodios(item): title = "%s: %sx%s" % (item.title, season, str(episode).zfill(2)) itemlist.append(item.clone(action="findvideos", title=title, url=url, thumbnail=thumb, fulltitle=title, - fanart=item.thumbnail, contentType="episode")) + fanart=item.thumbnail, contentType="episode", context = autoplay.context)) else: # no hay thumbnail matches = re.compile(']+>(.*?)<', re.DOTALL).findall(data) @@ -299,11 +319,15 @@ def findvideos(item): if video_urls: video_urls.sort(key=lambda v: int(v[0])) itemlist.append(item.clone(title="Enlace encontrado en %s" % server, action="play", - video_urls=video_urls)) + video_urls=video_urls, language='No filtrar', quality ='default', + server=server)) else: url = scrapertools.find_single_match(data, '"file":"([^"]+)"') if url: - itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play")) + if server == 'izanagi': + server = 'directo' + itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play", + language='No filtrar', quality ='default', server=server)) else: aux_url.append(e) @@ -315,6 +339,14 @@ def findvideos(item): videoitem.channel = item.channel videoitem.thumbnail = item.thumbnail + # Requerido para FilterTools + + itemlist = filtertools.get_links(itemlist, item, list_language) + + # Requerido para AutoPlay + + autoplay.start(itemlist, item) + return itemlist From 68167a69deca1af56f19ebf2ba391ae98c492709 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:24:58 -0500 Subject: [PATCH 12/29] Update animeflv.json --- plugin.video.alfa/channels/animeflv.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugin.video.alfa/channels/animeflv.json b/plugin.video.alfa/channels/animeflv.json index 01ed328b..81e1416a 100755 --- a/plugin.video.alfa/channels/animeflv.json +++ b/plugin.video.alfa/channels/animeflv.json @@ -37,6 +37,17 @@ "enabled": true, "visible": true }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar" + ] + }, { "id": "include_in_newest_anime", "type": "bool", From b157c6185e8bfbaf16a11d21ff2b382616adb858 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:25:49 -0500 Subject: [PATCH 13/29] Update x18hentai.py --- plugin.video.alfa/channels/x18hentai.py | 64 ++++++++++++++++++++----- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/plugin.video.alfa/channels/x18hentai.py b/plugin.video.alfa/channels/x18hentai.py index 5ed87510..b76e8605 100755 --- a/plugin.video.alfa/channels/x18hentai.py +++ b/plugin.video.alfa/channels/x18hentai.py @@ -6,8 +6,9 @@ from core import httptools from core import scrapertools from core.item import Item from platformcode import logger +from core import servertools -host = 'http://www.18hentaionline.eu/' +host = 'http://www.18hentaionline.net/' headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], ['Referer', host]] @@ -92,17 +93,58 @@ def episodios(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url, headers=headers).data - patron = '([^<]+)<\/td>.([^<]+)<\/td>.([^<]+)<\/td>.([^<]+)<\/td>.Ver Capitulo<\/a><\/td>' + old_mode = scrapertools.find_single_match(data, 'Censura<\/th>') + if old_mode: + patron = '(\d+)<\/td>(.*?)<\/td>(.*?)<\/td>(.*?)<\/td>Ver Capitulo<\/a><\/td>' - matches = re.compile(patron, re.DOTALL).findall(data) + matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedcap, scrapedaud, scrapedsub, scrapedcen, scrapedurl in matches: - url = scrapedurl - title = 'CAPITULO ' + scrapedcap + ' AUDIO: ' + scrapedaud + ' SUB:' + scrapedsub + ' ' + censura[scrapedcen] - thumbnail = '' - plot = '' - fanart = '' - itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.fulltitle, url=url, - thumbnail=item.thumbnail, plot=plot)) + for scrapedcap, scrapedaud, scrapedsub, scrapedcen, scrapedurl in matches: + url = scrapedurl + title = 'CAPITULO ' + scrapedcap + ' AUDIO: ' + scrapedaud + ' SUB:' + scrapedsub + ' ' + censura[scrapedcen] + thumbnail = '' + plot = '' + fanart = '' + itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.fulltitle, url=url, + thumbnail=item.thumbnail, plot=plot)) + else: + patron = '<\/i>.*?(.\d+)<\/td>MP4<\/td>(.*?)<\/td>.*?' + patron +='' + + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedcap, scrapedsub, scrapedurl in matches: + url = scrapedurl + if scrapedsub !='': + subs= scrapedsub + else: + sub = 'No' + title = 'CAPITULO %s SUB %s'%(scrapedcap, subs) + thumbnail = '' + plot = '' + fanart = '' + itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.fulltitle, url=url, + thumbnail=item.thumbnail, plot=plot)) return itemlist + +def findvideos(item): + logger.info() + + itemlist = [] + data = httptools.downloadpage(item.url).data + gvideo = scrapertools.find_single_match(data,'
  • ') + headers = {'Host':'www.18hentaionline.net', 'Referer':item.url} + gvideo_data = httptools.downloadpage(gvideo, headers = headers).data + gvideo_url = scrapertools.find_single_match(gvideo_data, 'file: "(.*?)"') + server = 'directo' + new_item = (item.clone(url=gvideo_url, server=server)) + itemlist.append(new_item) + itemlist.extend(servertools.find_video_items(data=data)) + for videoitem in itemlist: + videoitem.channel = item.channel + videoitem.title = item.title+' (%s)'%videoitem.server + videoitem.action = 'play' + return itemlist + + From a466a9447b80c396bfcefec678b61cd9b4986b1d Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:29:48 -0500 Subject: [PATCH 14/29] Update mp4upload.py --- plugin.video.alfa/servers/mp4upload.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/servers/mp4upload.py b/plugin.video.alfa/servers/mp4upload.py index 39b27a56..2efbcf56 100755 --- a/plugin.video.alfa/servers/mp4upload.py +++ b/plugin.video.alfa/servers/mp4upload.py @@ -1,17 +1,23 @@ # -*- coding: utf-8 -*- +import re + +from core import httptools from core import scrapertools +from lib import jsunpack from platformcode import logger def get_video_url(page_url, premium=False, user="", password="", video_password=""): logger.info("(page_url='%s')" % page_url) - data = scrapertools.cache_page(page_url) - logger.info("data=" + data) - media_url = scrapertools.find_single_match(data, '"file": "(.+?)"') - logger.info("media_url=" + media_url) - media_url = media_url.replace("?start=0", "") + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(page_url).data) + + match = scrapertools.find_single_match(data, "") + data = jsunpack.unpack(match) + data = data.replace("\\'", "'") + + media_url = scrapertools.find_single_match(data, '{type:"video/mp4",src:"([^"]+)"}') logger.info("media_url=" + media_url) video_urls = list() From d59502e9ed73db065d659b716c10ea6d5d25f4c8 Mon Sep 17 00:00:00 2001 From: jvc99 Date: Sat, 19 Aug 2017 19:04:04 +0200 Subject: [PATCH 15/29] Fix Pagina Siguiente --- plugin.video.alfa/channels/datoporn.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/datoporn.py b/plugin.video.alfa/channels/datoporn.py index cdf9f300..1afb3615 100755 --- a/plugin.video.alfa/channels/datoporn.py +++ b/plugin.video.alfa/channels/datoporn.py @@ -40,7 +40,7 @@ def lista(item): server="datoporn", fanart=scrapedthumbnail.replace("_t.jpg", ".jpg"))) # Extrae la marca de siguiente página - next_page = scrapertools.find_single_match(data, "Next") + next_page = scrapertools.find_single_match(data, 'Next') if next_page and itemlist: itemlist.append(item.clone(action="lista", title=">> Página Siguiente", url=next_page)) From b2eebf2b80bde304c722fd3f0194a557cdd98a87 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 12:49:20 -0500 Subject: [PATCH 16/29] Update autoplay.py --- plugin.video.alfa/channels/autoplay.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/autoplay.py b/plugin.video.alfa/channels/autoplay.py index f42a46d5..450b134e 100755 --- a/plugin.video.alfa/channels/autoplay.py +++ b/plugin.video.alfa/channels/autoplay.py @@ -381,10 +381,10 @@ def check_value(channel, itemlist): quality_list = channel_node['quality'] = list() for item in itemlist: - if item.server not in server_list: + if item.server not in server_list and item.server !='': server_list.append(item.server) change = True - if item.quality not in quality_list: + if item.quality not in quality_list and item.quality !='': quality_list.append(item.quality) change = True From e1bbc7eb583bb561acb786e1dcf16564979eac49 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 15:07:56 -0400 Subject: [PATCH 17/29] infolabels agregados --- plugin.video.alfa/channels/ver-peliculas.json | 13 +++++++++++- plugin.video.alfa/channels/ver-peliculas.py | 21 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/plugin.video.alfa/channels/ver-peliculas.json b/plugin.video.alfa/channels/ver-peliculas.json index a2436e87..ba3889f4 100644 --- a/plugin.video.alfa/channels/ver-peliculas.json +++ b/plugin.video.alfa/channels/ver-peliculas.json @@ -10,5 +10,16 @@ "categories": [ "movie", "latino" + ], + "settings": [ + { + "id": "modo_grafico", + "type": "bool", + "label": "Buscar información extra", + "default": true, + "enabled": true, + "visible": true + } ] -} \ No newline at end of file + +} diff --git a/plugin.video.alfa/channels/ver-peliculas.py b/plugin.video.alfa/channels/ver-peliculas.py index f3fdfdee..fcbd3059 100644 --- a/plugin.video.alfa/channels/ver-peliculas.py +++ b/plugin.video.alfa/channels/ver-peliculas.py @@ -14,9 +14,16 @@ from core import scrapertools from core import servertools from core.item import Item from platformcode import config, logger +from core import tmdb + +__channel__ = "ver-peliculas" host = "http://ver-peliculas.org/" +try: + __modo_grafico__ = config.get_setting('modo_grafico', __channel__) +except: + __modo_grafico__ = True def mainlist(item): logger.info() @@ -115,19 +122,22 @@ def listado(item): logger.info() itemlist = [] data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data) - logger.debug(data) + # logger.debug(data) pattern = ']+>(.*?)') if pagination: @@ -140,6 +150,13 @@ def listado(item): url=url, thumbnail=get_thumb("next.png"))) + for item in itemlist: + if item.infoLabels['plot'] == '': + data = httptools.downloadpage(item.url).data + item.plot = scrapertools.find_single_match(data, '
    ([^<]+)
    ').strip() + item.fanart = scrapertools.find_single_match(data, '') + + return itemlist From 26e3ff8a19e413f0b0e50414097dfd0b12ac0a65 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 19:25:52 -0400 Subject: [PATCH 18/29] fix sintaxis --- plugin.video.alfa/channels/locopelis.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/locopelis.json b/plugin.video.alfa/channels/locopelis.json index 728a30dd..d5df7370 100755 --- a/plugin.video.alfa/channels/locopelis.json +++ b/plugin.video.alfa/channels/locopelis.json @@ -52,7 +52,7 @@ "default": 0, "enabled": true, "visible": true, - "llvalues": [ + "lvalues": [ "No filtrar", "Latino", "Español", @@ -76,4 +76,4 @@ "visible": true } ] -} \ No newline at end of file +} From 739ee1c3a340f8aff5a1edcda9c14a50e6c65a41 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 19:44:52 -0400 Subject: [PATCH 19/29] v1.5.6 --- plugin.video.alfa/addon.xml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index e55df21f..befa49d3 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@  - + @@ -19,12 +19,13 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Arreglos[/B][/COLOR] - [I]- streamplay, gracias a msdos - - allcalidad - - tvseriesdk - - mundoflv - - ver-peliculas - - fix internos[/I] + [I]- hentaiid + - hentaienespañol + - x18hentai + - mp4upload + - animeflv + - fixes internos[/I] + [COLOR green]Gracias a [COLOR yellow]jvc99[/COLOR] por su colaboración en esta versión[/COLOR] Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi From ee7cfd5d9da28f33401f86cbd288957a016e1023 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 19:46:01 -0400 Subject: [PATCH 20/29] minor fix --- plugin.video.alfa/channels/animeflv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 plugin.video.alfa/channels/animeflv.py diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py old mode 100755 new mode 100644 index 67ad3f07..ec68dd95 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -223,7 +223,7 @@ def episodios(item): item.plot = scrapertools.find_single_match(data, 'Description[^>]+>

    (.*?)

    ') matches = re.compile('href="([^"]+)">
    ' - '

    (.*?)

    ', re.DOTALL).findall(data) + '\s*

    (.*?)

    ', re.DOTALL).findall(data) if matches: for url, thumb, title in matches: From b3ca96783b1d1fc3b1fa4c7e8b3ab95cd58a14a2 Mon Sep 17 00:00:00 2001 From: alfa-addon Date: Sat, 19 Aug 2017 20:50:14 -0400 Subject: [PATCH 21/29] arreglos de archivos --- plugin.video.alfa/channels/animeflv.json | 11 ------ plugin.video.alfa/channels/animeflv.py | 44 +++------------------- plugin.video.alfa/channels/animeshd.json | 18 +-------- plugin.video.alfa/channels/animeshd.py | 34 +---------------- plugin.video.alfa/channels/hdfull.json | 17 +-------- plugin.video.alfa/channels/hdfull.py | 29 ++------------ plugin.video.alfa/channels/seriesblanco.py | 19 +--------- plugin.video.alfa/servers/mp4upload.py | 0 plugin.video.alfa/servers/openload.py | 4 +- 9 files changed, 18 insertions(+), 158 deletions(-) mode change 100755 => 100644 plugin.video.alfa/servers/mp4upload.py mode change 100755 => 100644 plugin.video.alfa/servers/openload.py diff --git a/plugin.video.alfa/channels/animeflv.json b/plugin.video.alfa/channels/animeflv.json index 81e1416a..01ed328b 100755 --- a/plugin.video.alfa/channels/animeflv.json +++ b/plugin.video.alfa/channels/animeflv.json @@ -37,17 +37,6 @@ "enabled": true, "visible": true }, - { - "id": "filter_languages", - "type": "list", - "label": "Mostrar enlaces en idioma...", - "default": 0, - "enabled": true, - "visible": true, - "lvalues": [ - "No filtrar" - ] - }, { "id": "include_in_newest_anime", "type": "bool", diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py index c7d80f6c..ec68dd95 100644 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -9,22 +9,6 @@ from core import jsontools from core import scrapertools from core.item import Item from platformcode import logger -from channels import filtertools -from channels import autoplay - -list_language = ['No filtrar'] -logger.debug('lista_language: %s' % list_language) - -list_quality = ['default'] -list_servers = [ - 'izanagi', - 'yourupload', - 'okru', - 'netutv', - 'openload', - 'streamango', - 'mp4upload' -] HOST = "https://animeflv.net/" @@ -32,8 +16,6 @@ HOST = "https://animeflv.net/" def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) - itemlist = list() itemlist.append(Item(channel=item.channel, action="novedades_episodios", title="Últimos episodios", url=HOST)) @@ -53,8 +35,6 @@ def mainlist(item): itemlist = renumbertools.show_option(item.channel, itemlist) - autoplay.show_option(item.channel, itemlist) - return itemlist @@ -151,7 +131,7 @@ def novedades_episodios(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="findvideos", title=title, url=url, show=show, thumbnail=thumbnail, - fulltitle=title, context = autoplay.context) + fulltitle=title) itemlist.append(new_item) @@ -175,7 +155,7 @@ def novedades_anime(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot, context = autoplay.context) + fulltitle=title, plot=plot) if _type != "Película": new_item.show = title new_item.context = renumbertools.context(item) @@ -209,7 +189,7 @@ def listado(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot, context = autoplay.context) + fulltitle=title, plot=plot) if _type == "Anime": new_item.show = title @@ -262,7 +242,7 @@ def episodios(item): title = "%s: %sx%s" % (item.title, season, str(episode).zfill(2)) itemlist.append(item.clone(action="findvideos", title=title, url=url, thumbnail=thumb, fulltitle=title, - fanart=item.thumbnail, contentType="episode", context = autoplay.context)) + fanart=item.thumbnail, contentType="episode")) else: # no hay thumbnail matches = re.compile('
    ]+>(.*?)<', re.DOTALL).findall(data) @@ -319,15 +299,11 @@ def findvideos(item): if video_urls: video_urls.sort(key=lambda v: int(v[0])) itemlist.append(item.clone(title="Enlace encontrado en %s" % server, action="play", - video_urls=video_urls, language='No filtrar', quality ='default', - server=server)) + video_urls=video_urls)) else: url = scrapertools.find_single_match(data, '"file":"([^"]+)"') if url: - if server == 'izanagi': - server = 'directo' - itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play", - language='No filtrar', quality ='default', server=server)) + itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play")) else: aux_url.append(e) @@ -339,14 +315,6 @@ def findvideos(item): videoitem.channel = item.channel videoitem.thumbnail = item.thumbnail - # Requerido para FilterTools - - itemlist = filtertools.get_links(itemlist, item, list_language) - - # Requerido para AutoPlay - - autoplay.start(itemlist, item) - return itemlist diff --git a/plugin.video.alfa/channels/animeshd.json b/plugin.video.alfa/channels/animeshd.json index 293ac85a..fdf04e49 100755 --- a/plugin.video.alfa/channels/animeshd.json +++ b/plugin.video.alfa/channels/animeshd.json @@ -21,24 +21,8 @@ "description": "First release" } ], - "categories": [ + "categories": [ "latino", "anime" - ], - "settings": [ - { - "id": "filter_languages", - "type": "list", - "label": "Mostrar enlaces en idioma...", - "default": 0, - "enabled": true, - "visible": true, - "lvalues": [ - "No filtrar", - "LAT", - "CAST", - "SUB" - ] - } ] } diff --git a/plugin.video.alfa/channels/animeshd.py b/plugin.video.alfa/channels/animeshd.py index 99e51916..3fd34f84 100755 --- a/plugin.video.alfa/channels/animeshd.py +++ b/plugin.video.alfa/channels/animeshd.py @@ -8,19 +8,6 @@ from core import scrapertools from core import servertools from core.item import Item from platformcode import logger -from channels import autoplay -from channels import filtertools - -IDIOMAS = {'Latino': 'LAT', 'Castellano':'CAST','Subtitulado': 'VOS'} -list_language = IDIOMAS.values() -logger.debug('lista_language: %s' % list_language) - -list_quality = ['default'] -list_servers = [ - 'rapidvideo', - 'downace', - 'openload' -] tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png", "Drama": "https://s16.postimg.org/94sia332d/drama.png", @@ -48,8 +35,6 @@ headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/ def mainlist(item): logger.info() - - autoplay.init(item.channel, list_servers, list_quality) itemlist = [] itemlist.append(item.clone(title="Ultimas", @@ -80,8 +65,6 @@ def mainlist(item): fanart='https://s30.postimg.org/pei7txpa9/buscar.png' )) - autoplay.show_option(item.channel, itemlist) - return itemlist @@ -178,16 +161,10 @@ def episodios(item): matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedlang, scrapedtitle in matches: - language = IDIOMAS[scrapedlang] - + language = scrapedlang title = scrapedtitle + ' (%s)' % language url = scrapedurl - itemlist.append(item.clone(title=title, - url=url, - action='findvideos', - language=language, - quality ='default' - )) + itemlist.append(item.clone(title=title, url=url, action='findvideos', language=language)) return itemlist @@ -203,13 +180,6 @@ def findvideos(item): videoitem.channel = item.channel videoitem.title = title videoitem.action = 'play' - videoitem.language = item.language - # Requerido para FilterTools - itemlist = filtertools.get_links(itemlist, item, list_language) - - # Requerido para AutoPlay - - autoplay.start(itemlist, item) return itemlist diff --git a/plugin.video.alfa/channels/hdfull.json b/plugin.video.alfa/channels/hdfull.json index f0e4b9f1..c1512fa4 100755 --- a/plugin.video.alfa/channels/hdfull.json +++ b/plugin.video.alfa/channels/hdfull.json @@ -49,21 +49,6 @@ "enabled": "!eq(-1,'')", "visible": true }, - { - "id": "filter_languages", - "type": "list", - "label": "Mostrar enlaces en idioma...", - "default": 0, - "enabled": true, - "visible": true, - "lvalues": [ - "No filtrar", - "Latino", - "Español", - "VOS", - "VOSE" - ] - }, { "id": "include_in_global_search", "type": "bool", @@ -73,4 +58,4 @@ "visible": true } ] -} +} \ No newline at end of file diff --git a/plugin.video.alfa/channels/hdfull.py b/plugin.video.alfa/channels/hdfull.py index 19d1b90c..5156104b 100755 --- a/plugin.video.alfa/channels/hdfull.py +++ b/plugin.video.alfa/channels/hdfull.py @@ -12,20 +12,6 @@ from core import servertools from core.item import Item from platformcode import config, logger from platformcode import platformtools -from channels import filtertools -from channels import autoplay - -IDIOMAS = {'LAT': 'Latino', 'ESP': 'Español', 'ESPSUB': 'VOS', 'ENGSUB' : 'VOSE'} -list_language = IDIOMAS.values() -list_quality = ['RHDTV', 'HD0180M', 'HD720M', 'TS'] -list_servers = [ - 'openload', - 'powvideo', - 'streamplay', - 'streamcloud', - 'nowvideo' - -] host = "http://hdfull.tv" @@ -56,7 +42,7 @@ def login(): def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) + itemlist = [] itemlist.append(Item(channel=item.channel, action="menupeliculas", title="Películas", url=host, folder=True)) @@ -70,7 +56,6 @@ def mainlist(item): login() itemlist.append(Item(channel=item.channel, action="settingCanal", title="Configuración...", url="")) - autoplay.show_option(item.channel, itemlist) return itemlist @@ -480,8 +465,7 @@ def episodios(item): 'id'] + ";3" itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=title, url=url, - thumbnail=thumbnail, show=item.show, folder=True, contentType="episode", - context =autoplay.context)) + thumbnail=thumbnail, show=item.show, folder=True, contentType="episode")) if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=url_targets, @@ -712,13 +696,11 @@ def findvideos(item): fanart = scrapertools.find_single_match(data, '
    0: return itemlist @@ -291,14 +284,6 @@ def findvideos(item): list_links = filtertools.get_links(list_links, item, list_idiomas, CALIDADES) - # Requerido para FilterTools - - itemlist = filtertools.get_links(list_links, item, list_idiomas) - - # Requerido para AutoPlay - - autoplay.start(list_links, item) - return list_links diff --git a/plugin.video.alfa/servers/mp4upload.py b/plugin.video.alfa/servers/mp4upload.py old mode 100755 new mode 100644 diff --git a/plugin.video.alfa/servers/openload.py b/plugin.video.alfa/servers/openload.py old mode 100755 new mode 100644 index 20726a4a..9baff26c --- a/plugin.video.alfa/servers/openload.py +++ b/plugin.video.alfa/servers/openload.py @@ -52,7 +52,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= numeros = scrapertools.find_multiple_matches(data, '_[A-f0-9]+x[A-f0-9]+\s*(?:=|\^)\s*([0-9]{4,}|0x[A-f0-9]{4,})') op1, op2 = scrapertools.find_single_match(data, '\(0x(\d),0x(\d)\);') - + idparse = scrapertools.find_single_match(data, "\^parseInt\('([0-9]+)'") videourl = "" for encode in var_encodes: text_decode = "" @@ -81,7 +81,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= if value3 < index1: break - value4 = value2 ^ decode1[j % (mult / 8)] + value4 = value2 ^ decode1[j % (mult / 8)] ^ int(idparse,8) for n in numeros: if not n.isdigit(): n = int(n, 16) From 3ddae626ab17a1b3068cd670292136ff612d01f6 Mon Sep 17 00:00:00 2001 From: alfa-addon Date: Sat, 19 Aug 2017 20:53:37 -0400 Subject: [PATCH 22/29] v1.5.6 --- plugin.video.alfa/addon.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index befa49d3..05b5c1fe 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -24,8 +24,9 @@ - x18hentai - mp4upload - animeflv + - openload - fixes internos[/I] - [COLOR green]Gracias a [COLOR yellow]jvc99[/COLOR] por su colaboración en esta versión[/COLOR] + [COLOR green]Gracias a [COLOR yellow]jvc99[/COLOR] y [COLOR yellow]msdos[/COLOR] por su colaboración en esta versión[/COLOR] Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi From bea47876158c7de3057f0a05c3f85a52c0b2cea8 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Sun, 20 Aug 2017 16:24:12 +0200 Subject: [PATCH 23/29] sintaxis, fix type with adult, update version in mediaserver, fix to avoid show "no errors", indent, clean settings.xml file and updated --- mediaserver/alfa.py | 19 ++- mediaserver/platformcode/config.py | 142 +++++++++++------------ mediaserver/platformcode/launcher.py | 19 +-- mediaserver/resources/settings.xml | 21 ++-- plugin.video.alfa/core/channeltools.py | 13 ++- plugin.video.alfa/core/servertools.py | 4 +- plugin.video.alfa/core/versiontools.py | 4 +- plugin.video.alfa/platformcode/config.py | 17 +-- plugin.video.alfa/resources/settings.xml | 16 --- 9 files changed, 113 insertions(+), 142 deletions(-) diff --git a/mediaserver/alfa.py b/mediaserver/alfa.py index 9aced495..f90710ee 100644 --- a/mediaserver/alfa.py +++ b/mediaserver/alfa.py @@ -22,7 +22,7 @@ websocket_port = config.get_setting("websocket.port") myip = config.get_local_ip() -def ThreadNameWrap(func): +def thread_name_wrap(func): @wraps(func) def bar(*args, **kw): if "name" not in kw: @@ -32,7 +32,7 @@ def ThreadNameWrap(func): return bar -threading.Thread.__init__ = ThreadNameWrap(threading.Thread.__init__) +threading.Thread.__init__ = thread_name_wrap(threading.Thread.__init__) if sys.version_info < (2, 7, 11): import ssl @@ -40,7 +40,7 @@ if sys.version_info < (2, 7, 11): ssl._create_default_https_context = ssl._create_unverified_context -def MostrarInfo(): +def show_info(): os.system('cls' if os.name == 'nt' else 'clear') print ("--------------------------------------------------------------------") print ("Alfa Iniciado") @@ -54,7 +54,6 @@ def MostrarInfo(): print ("Bookmark Path : " + config.get_setting("bookmarkpath")) print ("Videolibrary Path : " + config.get_setting("videolibrarypath")) print ("--------------------------------------------------------------------") - conexiones = [] controllers = platformtools.controllers for a in controllers: try: @@ -68,8 +67,8 @@ def start(): logger.info("server init...") config.verify_directories_created() try: - HTTPServer.start(MostrarInfo) - WebSocket.start(MostrarInfo) + HTTPServer.start(show_info) + WebSocket.start(show_info) # Da por levantado el servicio logger.info("--------------------------------------------------------------------") @@ -84,10 +83,10 @@ def start(): logger.info("Bookmark Path : " + config.get_setting("bookmarkpath")) logger.info("VideoLibrary Path : " + config.get_setting("videolibrarypath")) logger.info("--------------------------------------------------------------------") - MostrarInfo() + show_info() - start = True - while start: + flag = True + while flag: time.sleep(1) except KeyboardInterrupt: @@ -96,7 +95,7 @@ def start(): print 'Deteniendo el servidor WebSocket...' WebSocket.stop() print 'Alfa Detenido' - start = False + flag = False # Inicia el programa diff --git a/mediaserver/platformcode/config.py b/mediaserver/platformcode/config.py index 50602a55..4986d548 100644 --- a/mediaserver/platformcode/config.py +++ b/mediaserver/platformcode/config.py @@ -5,13 +5,13 @@ import os import re +import sys import threading PLATFORM_NAME = "mediaserver" PLUGIN_NAME = "alfa" settings_dic = {} -settings_types = {} adult_setting = {} @@ -52,14 +52,14 @@ def get_system_platform(): def open_settings(): - Opciones = [] + options = [] from xml.dom import minidom settings = open(menufilepath, 'rb').read() xmldoc = minidom.parseString(settings) for category in xmldoc.getElementsByTagName("category"): for setting in category.getElementsByTagName("setting"): - Opciones.append(dict(setting.attributes.items() + [(u"category", category.getAttribute("label")), - (u"value", get_setting(setting.getAttribute("id")))])) + options.append(dict(setting.attributes.items() + [(u"category", category.getAttribute("label")), + (u"value", get_setting(setting.getAttribute("id")))])) from platformcode import platformtools global adult_setting @@ -69,7 +69,7 @@ def open_settings(): adult_mode = get_setting('adult_mode') adult_request_password = get_setting('adult_request_password') - platformtools.open_settings(Opciones) + platformtools.open_settings(options) # Hemos accedido a la seccion de Canales para adultos if get_setting('adult_aux_intro_password'): @@ -82,22 +82,16 @@ def open_settings(): set_setting('adult_password', get_setting('adult_aux_new_password1')) else: platformtools.dialog_ok("Canales para adultos", - "Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden.", - "Entre de nuevo en 'Preferencias' para cambiar la contraseña") - - # Fijar adult_pin - adult_pin = "" - if get_setting("adult_request_password") == True: - adult_pin = get_setting("adult_password") - set_setting("adult_pin", adult_pin) + "Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden." + , "Entre de nuevo en 'Preferencias' para cambiar la contraseña") # Solo esta sesion: - id = threading.current_thread().name - if get_setting("adult_mode") == 2: - adult_setting[id] = True - set_setting("adult_mode", "0") - else: - adult_setting = {} + # id = threading.current_thread().name + # if get_setting("adult_mode") == 2: + # adult_setting[id] = True + # set_setting("adult_mode", 0) + # else: + # adult_setting = {} else: platformtools.dialog_ok("Canales para adultos", "La contraseña no es correcta.", @@ -112,24 +106,30 @@ def open_settings(): set_setting('adult_aux_new_password2', '') -def get_setting(name, channel="", server=""): +def get_setting(name, channel="", server="", default=None): """ Retorna el valor de configuracion del parametro solicitado. - Devuelve el valor del parametro 'name' en la configuracion global o en la configuracion propia del canal 'channel'. + Devuelve el valor del parametro 'name' en la configuracion global, en la configuracion propia del canal 'channel' + o en la del servidor 'server'. - Si se especifica el nombre del canal busca en la ruta \addon_data\plugin.video.alfa\settings_channels el - archivo channel_data.json y lee el valor del parametro 'name'. Si el archivo channel_data.json no existe busca en la - carpeta channels el archivo channel.xml y crea un archivo channel_data.json antes de retornar el valor solicitado. - Si el parametro 'name' no existe en channel_data.json lo busca en la configuracion global y si ahi tampoco existe - devuelve un str vacio. + Los parametros channel y server no deben usarse simultaneamente. Si se especifica el nombre del canal se devolvera + el resultado de llamar a channeltools.get_channel_setting(name, channel, default). Si se especifica el nombre del + servidor se devolvera el resultado de llamar a servertools.get_channel_setting(name, server, default). Si no se + especifica ninguno de los anteriores se devolvera el valor del parametro en la configuracion global si existe o + el valor default en caso contrario. - Parametros: - name -- nombre del parametro - channel [opcional] -- nombre del canal + @param name: nombre del parametro + @type name: str + @param channel: nombre del canal + @type channel: str + @param server: nombre del servidor + @type server: str + @param default: valor devuelto en caso de que no exista el parametro name + @type default: any - Retorna: - value -- El valor del parametro 'name' + @return: El valor del parametro 'name' + @rtype: any """ @@ -138,7 +138,7 @@ def get_setting(name, channel="", server=""): # logger.info("config.get_setting reading channel setting '"+name+"' from channel json") from core import channeltools - value = channeltools.get_channel_setting(name, channel) + value = channeltools.get_channel_setting(name, channel, default) # logger.info("config.get_setting -> '"+repr(value)+"'") return value @@ -146,7 +146,7 @@ def get_setting(name, channel="", server=""): elif server: # logger.info("config.get_setting reading server setting '"+name+"' from server json") from core import servertools - value = servertools.get_server_setting(name, server) + value = servertools.get_server_setting(name, server, default) # logger.info("config.get_setting -> '"+repr(value)+"'") return value @@ -155,31 +155,28 @@ def get_setting(name, channel="", server=""): else: # logger.info("config.get_setting reading main setting '"+name+"'") global settings_dic - value = settings_dic.get(name, "") - - if name == "adult_mode": - global adult_setting - id = threading.current_thread().name - if adult_setting.get(id) == True: - value = "2" + value = settings_dic.get(name, default) + if value == default: + return value + # logger.info("config.get_setting -> '"+value+"'") # hack para devolver el tipo correspondiente - global settings_types + if value == "true": + return True + elif value == "false": + return False + else: + # special case return as str + if name in ["adult_password", "adult_aux_intro_password", "adult_aux_new_password1", + "adult_aux_new_password2"]: + return value + else: + try: + value = int(value) + except ValueError: + pass - if settings_types.get(name) in ['enum', 'number']: - value = int(value) - - elif settings_types.get(name) == 'bool': - value = value == 'true' - - elif not settings_types.has_key(name): - try: - t = eval(value) - value = t[0](t[1]) - except: - value = None - - return value + return value def set_setting(name, value, channel="", server=""): @@ -214,25 +211,16 @@ def set_setting(name, value, channel="", server=""): return servertools.set_server_setting(name, value, server) else: global settings_dic - global settings_types - if settings_types.get(name) == 'bool': + if isinstance(value, bool): if value: - new_value = "true" + value = "true" else: - new_value = "false" - - elif settings_types.get(name): - new_value = str(value) - - else: - if isinstance(value, basestring): - new_value = "(%s, %s)" % (type(value).__name__, repr(value)) - else: - new_value = "(%s, %s)" % (type(value).__name__, value) - - settings_dic[name] = new_value + value = "false" + elif isinstance(value, (int, long)): + value = str(value) + settings_dic[name] = value from xml.dom import minidom # Crea un Nuevo XML vacio new_settings = minidom.getDOMImplementation().createDocument(None, "settings", None) @@ -339,11 +327,9 @@ def get_local_ip(): def load_settings(): global settings_dic - global settings_types defaults = {} from xml.etree import ElementTree - encontrado = False # Lee el archivo XML (si existe) if os.path.exists(configfilepath): settings = open(configfilepath, 'rb').read() @@ -357,10 +343,9 @@ def load_settings(): for target in category.findall("setting"): if target.get("id"): defaults[target.get("id")] = target.get("default") - settings_types[target.get("id")] = target.get("type") for key in defaults: - if not key in settings_dic: + if key not in settings_dic: settings_dic[key] = defaults[key] set_settings(settings_dic) @@ -387,7 +372,14 @@ def set_settings(JsonRespuesta): # Fichero de configuración menufilepath = os.path.join(get_runtime_path(), "resources", "settings.xml") configfilepath = os.path.join(get_data_path(), "settings.xml") -if not os.path.exists(get_data_path()): os.mkdir(get_data_path()) +if not os.path.exists(get_data_path()): + os.mkdir(get_data_path()) # Literales TRANSLATION_FILE_PATH = os.path.join(get_runtime_path(), "resources", "language", "Spanish", "strings.xml") load_settings() + +# modo adulto: +# sistema actual 0: Nunca, 1:Siempre, 2:Solo hasta que se reinicie sesión +# si es == 2 lo desactivamos. +if get_setting("adult_mode") == 2: + set_setting("adult_mode", 0) diff --git a/mediaserver/platformcode/launcher.py b/mediaserver/platformcode/launcher.py index b8dfe6b3..81549e38 100644 --- a/mediaserver/platformcode/launcher.py +++ b/mediaserver/platformcode/launcher.py @@ -29,19 +29,20 @@ def start(): def run(item): itemlist = [] # Muestra el item en el log: - PrintItems(item) + print_items(item) # Control Parental, comprueba si es adulto o no if item.action == "mainlist": # Parental control - if channeltools.is_adult(item.channel) and config.get_setting("adult_pin") != "": + if channeltools.is_adult(item.channel) and config.get_setting("adult_request_password"): tecleado = platformtools.dialog_input("", "Contraseña para canales de adultos", True) - if tecleado is None or tecleado != config.get_setting("adult_pin"): + if tecleado is None or tecleado != config.get_setting("adult_password"): platformtools.render_items(None, item) return # Importa el canal para el item, todo item debe tener un canal, sino sale de la función - if item.channel: channelmodule = ImportarCanal(item) + if item.channel: + channelmodule = import_channel(item) # If item has no action, stops here if item.action == "": @@ -153,13 +154,13 @@ def run(item): itemlist = [Item(title="No hay elementos para mostrar", thumbnail=get_thumb("error.png"))] # Imprime en el log el resultado - PrintItems(itemlist) + print_items(itemlist) # Muestra los resultados en pantalla platformtools.render_items(itemlist, item) -def ImportarCanal(item): +def import_channel(item): channel = item.channel channelmodule = "" if os.path.exists(os.path.join(config.get_runtime_path(), "channels", channel + ".py")): @@ -171,7 +172,7 @@ def ImportarCanal(item): return channelmodule -def PrintItems(itemlist): +def print_items(itemlist): if type(itemlist) == list: if len(itemlist) > 0: logger.info("Items devueltos") @@ -197,13 +198,13 @@ def add_pelicula_to_library(item): def add_serie_to_library(item): - channel = ImportarCanal(item) + channel = import_channel(item) videolibrarytools.add_tvshow(item, channel) def download_all_episodes(item, first_episode="", preferred_server="vidspot", filter_language=""): logger.info("show=" + item.show) - channel = ImportarCanal(item) + channel = import_channel(item) show_title = item.show # Obtiene el listado desde el que se llamó diff --git a/mediaserver/resources/settings.xml b/mediaserver/resources/settings.xml index 368aa850..5607fedd 100644 --- a/mediaserver/resources/settings.xml +++ b/mediaserver/resources/settings.xml @@ -16,15 +16,14 @@ - + - + - @@ -32,20 +31,14 @@ - + - - - + + + - \ No newline at end of file + diff --git a/plugin.video.alfa/core/channeltools.py b/plugin.video.alfa/core/channeltools.py index f6984f13..98235c24 100755 --- a/plugin.video.alfa/core/channeltools.py +++ b/plugin.video.alfa/core/channeltools.py @@ -138,17 +138,18 @@ def get_channel_parameters(channel_name): def get_channel_json(channel_name): # logger.info("channel_name=" + channel_name) import filetools + channel_json = None try: channel_path = filetools.join(config.get_runtime_path(), "channels", channel_name + ".json") - # logger.info("channel_data=" + channel_path) - channel_json = jsontools.load(filetools.read(channel_path)) - # logger.info("channel_json= %s" % channel_json) + if filetools.isfile(channel_path): + # logger.info("channel_data=" + channel_path) + channel_json = jsontools.load(filetools.read(channel_path)) + # logger.info("channel_json= %s" % channel_json) except Exception, ex: template = "An exception of type %s occured. Arguments:\n%r" message = template % (type(ex).__name__, ex.args) logger.error(" %s" % message) - channel_json = None return channel_json @@ -187,10 +188,10 @@ def get_channel_setting(name, channel, default=None): @param channel: nombre del canal @type channel: str @param default: valor devuelto en caso de que no exista el parametro name - @type default: cualquiera + @type default: any @return: El valor del parametro 'name' - @rtype: El tipo del valor del parametro + @rtype: any """ file_settings = os.path.join(config.get_data_path(), "settings_channels", channel + "_data.json") diff --git a/plugin.video.alfa/core/servertools.py b/plugin.video.alfa/core/servertools.py index ffd1698c..631101c8 100644 --- a/plugin.video.alfa/core/servertools.py +++ b/plugin.video.alfa/core/servertools.py @@ -565,10 +565,10 @@ def get_server_setting(name, server, default=None): @param server: nombre del servidor @type server: str @param default: valor devuelto en caso de que no exista el parametro name - @type default: cualquiera + @type default: any @return: El valor del parametro 'name' - @rtype: El tipo del valor del parametro + @rtype: any """ # Creamos la carpeta si no existe diff --git a/plugin.video.alfa/core/versiontools.py b/plugin.video.alfa/core/versiontools.py index 0469570c..b1390200 100755 --- a/plugin.video.alfa/core/versiontools.py +++ b/plugin.video.alfa/core/versiontools.py @@ -14,11 +14,11 @@ def get_current_plugin_version(): def get_current_plugin_version_tag(): - return "4.3.0-beta1" + return "1.5.7" def get_current_plugin_date(): - return "30/06/2017" + return "22/08/2017" def get_current_channels_version(): diff --git a/plugin.video.alfa/platformcode/config.py b/plugin.video.alfa/platformcode/config.py index 78f2325e..2ca5f15f 100644 --- a/plugin.video.alfa/platformcode/config.py +++ b/plugin.video.alfa/platformcode/config.py @@ -114,8 +114,8 @@ def open_settings(): set_setting('adult_password', settings_post['adult_aux_new_password1']) else: platformtools.dialog_ok("Canales para adultos", - "Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden.", - "Entre de nuevo en 'Preferencias' para cambiar la contraseña") + "Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden." + , "Entre de nuevo en 'Preferencias' para cambiar la contraseña") else: platformtools.dialog_ok("Canales para adultos", "La contraseña no es correcta.", @@ -133,8 +133,8 @@ def open_settings(): # si se ha cambiado la ruta de la videoteca llamamos a comprobar directorios para que lo cree y pregunte # automaticamente si configurar la videoteca if settings_pre.get("videolibrarypath", None) != settings_post.get("videolibrarypath", None) or \ - settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \ - settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None): + settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \ + settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None): verify_directories_created() else: @@ -165,10 +165,10 @@ def get_setting(name, channel="", server="", default=None): @param server: nombre del servidor @type server: str @param default: valor devuelto en caso de que no exista el parametro name - @type default: cualquiera + @type default: any @return: El valor del parametro 'name' - @rtype: El tipo del valor del parametro + @rtype: any """ @@ -205,7 +205,8 @@ def get_setting(name, channel="", server="", default=None): return False else: # special case return as str - if name in ["adult_password", "adult_aux_intro_password", "adult_aux_new_password1", "adult_aux_new_password2"]: + if name in ["adult_password", "adult_aux_intro_password", "adult_aux_new_password1", + "adult_aux_new_password2"]: return value else: try: @@ -395,7 +396,7 @@ def verify_directories_created(): for f in files: if not filetools.exists(filetools.join(default, folder, f)) or \ (filetools.getsize(filetools.join(default, folder, f)) != - filetools.getsize(filetools.join(default, '720p', f))): + filetools.getsize(filetools.join(default, '720p', f))): filetools.copy(filetools.join(default, '720p', f), filetools.join(default, folder, f), True) diff --git a/plugin.video.alfa/resources/settings.xml b/plugin.video.alfa/resources/settings.xml index 79cf2d9c..b5bbd959 100755 --- a/plugin.video.alfa/resources/settings.xml +++ b/plugin.video.alfa/resources/settings.xml @@ -20,7 +20,6 @@ - @@ -30,13 +29,6 @@ - - @@ -54,14 +46,6 @@ - From 41bf8e2b0736713fc53ea1bd7ae8ebb1e71b96fd Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Sun, 20 Aug 2017 17:27:55 +0200 Subject: [PATCH 24/29] script --- plugin.video.alfa/core/script.py | 101 +++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 plugin.video.alfa/core/script.py diff --git a/plugin.video.alfa/core/script.py b/plugin.video.alfa/core/script.py new file mode 100644 index 00000000..cb85b6f8 --- /dev/null +++ b/plugin.video.alfa/core/script.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +import os +import re +import shutil + +from platformcode import config, logger, platformtools + + +def conversion(): + logger.info() + data = "" + + try: + # do a backup + path_settings = os.path.join(config.get_data_path(), "settings.xml") + path_settings_backup = os.path.join(config.get_data_path(), "settings.backup.xml") + shutil.copy(path_settings, path_settings_backup) + + # open file + f = open(path_settings, "r") + # copy = open(path_settings2, "w") + + logger.info(" ---") + logger.info(" --- 1") + logger.info(" --- 2") + logger.info(" --- 3") + data_aux = "" + + begin_tag = "\n" + end_tag = "\n" + + adult_data = ' \n' + adult_data += ' \n' + adult_data += ' \n' + adult_data += ' \n' + adult_data += ' \n' + adult_data += ' \n' + + for line in f: + matches = re.findall(' tag + # data += line + else: + logger.info("Matches") + for _id, value in matches: + logger.info(" dentro del for") + logger.info(" _id:%s value:%s" % (_id, value)) + + if _id not in ["adult_aux_intro_password", "adult_aux_new_password1", "adult_aux_new_password2", + "adult_mode", "adult_password", "adult_request_password", "adult_pin"]: + logger.info(" linea %s" % line) + logger.info(" value %s" % value) + if value: + # logger.info(" type value!! %s" % type(value)) + logger.info(" antes value!! %s" % value) + if "(str, " in value: + if "(str, '" in value: + value = value.replace("(str, '", "") + value = value.replace("')", "") + elif "(str, '": + value = value.replace("(str, '", "") + value = value.replace("')", "") + elif "(bool, " in value: + value = value.replace("(bool, ", "") + if value == "True)": + value = "true" + else: + value = "false" + + logger.info(" despues value!! %s" % value) + + aux_line = '\n' % (_id, value) + logger.info(" aux_line %s" % aux_line) + data_aux += " " + aux_line + f.close() + + data = begin_tag + adult_data + data_aux + end_tag + + copy_file = open(path_settings, "w") + copy_file.write(data) + copy_file.close() + + while not platformtools.dialog_yesno("Alfa", "Corregido un error en la sección adultos, se ha reseteado la " + "contraseña a por defecto, tendrá que cambiarla de nuevo si lo desea.", + "pulse 'Si', si lo ha entendido"): + logger.info("En disclaimer clickó 'No'") + + logger.info("En disclaimer clickó 'Si'") + platformtools.dialog_ok("Alfa", "Espere 5 segundos y ya estará todo OK.") + return True + + except Exception, ex: + template = "An exception of type %s occured. Arguments:\n%r" + message = template % (type(ex).__name__, ex.args) + logger.info(message) + platformtools.dialog_ok("Alfa", "Error, en conversión") + logger.info("Datos a guardar %s" % data) + return False From adf827892fa71c033ba4fa758f7bd972d5cb5b56 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Sun, 20 Aug 2017 19:23:05 +0200 Subject: [PATCH 25/29] changed path --- plugin.video.alfa/core/script.py | 101 ------------------------------- 1 file changed, 101 deletions(-) delete mode 100644 plugin.video.alfa/core/script.py diff --git a/plugin.video.alfa/core/script.py b/plugin.video.alfa/core/script.py deleted file mode 100644 index cb85b6f8..00000000 --- a/plugin.video.alfa/core/script.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- -import os -import re -import shutil - -from platformcode import config, logger, platformtools - - -def conversion(): - logger.info() - data = "" - - try: - # do a backup - path_settings = os.path.join(config.get_data_path(), "settings.xml") - path_settings_backup = os.path.join(config.get_data_path(), "settings.backup.xml") - shutil.copy(path_settings, path_settings_backup) - - # open file - f = open(path_settings, "r") - # copy = open(path_settings2, "w") - - logger.info(" ---") - logger.info(" --- 1") - logger.info(" --- 2") - logger.info(" --- 3") - data_aux = "" - - begin_tag = "\n" - end_tag = "\n" - - adult_data = ' \n' - adult_data += ' \n' - adult_data += ' \n' - adult_data += ' \n' - adult_data += ' \n' - adult_data += ' \n' - - for line in f: - matches = re.findall(' tag - # data += line - else: - logger.info("Matches") - for _id, value in matches: - logger.info(" dentro del for") - logger.info(" _id:%s value:%s" % (_id, value)) - - if _id not in ["adult_aux_intro_password", "adult_aux_new_password1", "adult_aux_new_password2", - "adult_mode", "adult_password", "adult_request_password", "adult_pin"]: - logger.info(" linea %s" % line) - logger.info(" value %s" % value) - if value: - # logger.info(" type value!! %s" % type(value)) - logger.info(" antes value!! %s" % value) - if "(str, " in value: - if "(str, '" in value: - value = value.replace("(str, '", "") - value = value.replace("')", "") - elif "(str, '": - value = value.replace("(str, '", "") - value = value.replace("')", "") - elif "(bool, " in value: - value = value.replace("(bool, ", "") - if value == "True)": - value = "true" - else: - value = "false" - - logger.info(" despues value!! %s" % value) - - aux_line = '\n' % (_id, value) - logger.info(" aux_line %s" % aux_line) - data_aux += " " + aux_line - f.close() - - data = begin_tag + adult_data + data_aux + end_tag - - copy_file = open(path_settings, "w") - copy_file.write(data) - copy_file.close() - - while not platformtools.dialog_yesno("Alfa", "Corregido un error en la sección adultos, se ha reseteado la " - "contraseña a por defecto, tendrá que cambiarla de nuevo si lo desea.", - "pulse 'Si', si lo ha entendido"): - logger.info("En disclaimer clickó 'No'") - - logger.info("En disclaimer clickó 'Si'") - platformtools.dialog_ok("Alfa", "Espere 5 segundos y ya estará todo OK.") - return True - - except Exception, ex: - template = "An exception of type %s occured. Arguments:\n%r" - message = template % (type(ex).__name__, ex.args) - logger.info(message) - platformtools.dialog_ok("Alfa", "Error, en conversión") - logger.info("Datos a guardar %s" % data) - return False From 69c3f4da3df94198a0a886d4a4b68cf84ffa5338 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Sun, 20 Aug 2017 19:24:01 +0200 Subject: [PATCH 26/29] warning to execute script, mediaserver case --- .../IMPORTANTE LEEME en esta version.txt | 2 + mediaserver/script.py | 110 ++++++++++++++++++ plugin.video.alfa/core/filetools.py | 4 +- 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 mediaserver/IMPORTANTE LEEME en esta version.txt create mode 100644 mediaserver/script.py diff --git a/mediaserver/IMPORTANTE LEEME en esta version.txt b/mediaserver/IMPORTANTE LEEME en esta version.txt new file mode 100644 index 00000000..f62ce233 --- /dev/null +++ b/mediaserver/IMPORTANTE LEEME en esta version.txt @@ -0,0 +1,2 @@ +Debe ejecutar primero el archivo "script.py". +Una vez realizado el proceso podrá ejecutar como siempre "alfa.py" para iniciar el addon. \ No newline at end of file diff --git a/mediaserver/script.py b/mediaserver/script.py new file mode 100644 index 00000000..5936fd82 --- /dev/null +++ b/mediaserver/script.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +import os +import re +import shutil + +from platformcode import config, logger, platformtools + + +def conversion(): + logger.info() + data = "" + + try: + # do a backup + path_settings = os.path.join(config.get_data_path(), "settings.xml") + path_settings_backup = os.path.join(config.get_data_path(), "settings.backup.xml") + shutil.copy(path_settings, path_settings_backup) + + # open file + f = open(path_settings, "r") + # copy = open(path_settings2, "w") + + logger.info(" ---") + logger.info(" --- 1") + logger.info(" --- 2") + logger.info(" --- 3") + data_aux = "" + + begin_tag = "\n" + end_tag = "\n" + + adult_data = ' \n' + adult_data += ' \n' + adult_data += ' \n' + adult_data += ' \n' + adult_data += ' \n' + adult_data += ' \n' + + for line in f: + matches = re.findall(' tag + # data += line + else: + logger.info("Matches") + for _id, value in matches: + logger.info(" dentro del for") + logger.info(" _id:%s value:%s" % (_id, value)) + + if _id not in ["adult_aux_intro_password", "adult_aux_new_password1", "adult_aux_new_password2", + "adult_mode", "adult_password", "adult_request_password", "adult_pin"]: + logger.info(" linea %s" % line) + logger.info(" value %s" % value) + if value: + # logger.info(" type value!! %s" % type(value)) + logger.info(" antes value!! %s" % value) + if "(str, " in value: + if "(str, '" in value: + value = value.replace("(str, '", "") + value = value.replace("')", "") + elif "(str, '": + value = value.replace("(str, '", "") + value = value.replace("')", "") + elif "(bool, " in value: + value = value.replace("(bool, ", "") + if value == "True)": + value = "true" + else: + value = "false" + value = value.replace('\\\\', '\\') + logger.info(" despues value!! %s" % value) + + aux_line = '\n' % (_id, value) + logger.info(" aux_line %s" % aux_line) + data_aux += " " + aux_line + f.close() + + data = begin_tag + adult_data + data_aux + end_tag + + copy_file = open(path_settings, "w") + copy_file.write(data) + copy_file.close() + + while True: + import sys + logger.info("sys ve %s" % sys.version_info) + if sys.version_info > (3, 0): + value = input("Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " + "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: ") + else: + value = raw_input("Alfa\nCorregido un error en la seccion adultos, se ha reseteado la contrasena a por " + "defecto, tendra que cambiarla de nuevo si lo desea.\n Escriba 's', si lo ha entendido: ") + logger.debug("value %s" % value) + if value.lower() == 's': + break + logger.info("En disclaimer clickó 'No'") + + logger.info("En disclaimer clickó 'Si'") + + except Exception, ex: + template = "An exception of type %s occured. Arguments:\n%r" + message = template % (type(ex).__name__, ex.args) + logger.info(message) + print("Alfa", "Error, en conversión") + logger.info("Datos a guardar %s" % data) + +if __name__ == "__main__": + conversion() diff --git a/plugin.video.alfa/core/filetools.py b/plugin.video.alfa/core/filetools.py index 4bfc111f..5d379ef2 100755 --- a/plugin.video.alfa/core/filetools.py +++ b/plugin.video.alfa/core/filetools.py @@ -446,7 +446,9 @@ def mkdir(path): except: logger.error("ERROR al crear el directorio: %s" % path) logger.error(traceback.format_exc()) - platformtools.dialog_notification("Error al crear el directorio", path) + # platformtools.dialog_notification("Error al crear el directorio", path) + platformtools.dialog_ok("Alfa", "IMPORTANTE - Instale y Ejecute el script 'Alfa - fix settings', que se encuentra en el repositorio de Alfa y " + "vuelva a entrar en el addon, [B]si no lo hace tendrá problemas[/B]") return False else: return True From 42384f963e002f429ef7033fe9ea2e3782702ba0 Mon Sep 17 00:00:00 2001 From: alfa_addon_10 Date: Mon, 21 Aug 2017 01:56:03 +0200 Subject: [PATCH 27/29] removed old code --- mediaserver/platformcode/config.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/mediaserver/platformcode/config.py b/mediaserver/platformcode/config.py index 4986d548..7376a814 100644 --- a/mediaserver/platformcode/config.py +++ b/mediaserver/platformcode/config.py @@ -6,7 +6,6 @@ import os import re import sys -import threading PLATFORM_NAME = "mediaserver" PLUGIN_NAME = "alfa" @@ -85,14 +84,6 @@ def open_settings(): "Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden." , "Entre de nuevo en 'Preferencias' para cambiar la contraseña") - # Solo esta sesion: - # id = threading.current_thread().name - # if get_setting("adult_mode") == 2: - # adult_setting[id] = True - # set_setting("adult_mode", 0) - # else: - # adult_setting = {} - else: platformtools.dialog_ok("Canales para adultos", "La contraseña no es correcta.", "Los cambios realizados en esta sección no se guardaran.") From e784bdc8bee813687cc81464ed885bfe88d5a2f4 Mon Sep 17 00:00:00 2001 From: alfa-addon Date: Sun, 20 Aug 2017 20:14:52 -0400 Subject: [PATCH 28/29] v1.7.0 --- plugin.video.alfa/addon.xml | 13 +++++-------- plugin.video.alfa/core/filetools.py | 2 +- plugin.video.alfa/core/versiontools.py | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 05b5c1fe..2a4efa22 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@  - + @@ -19,14 +19,11 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Arreglos[/B][/COLOR] - [I]- hentaiid - - hentaienespañol - - x18hentai - - mp4upload - - animeflv - - openload + [I]- arreglo sección adultos + [I]- flashx - fixes internos[/I] - [COLOR green]Gracias a [COLOR yellow]jvc99[/COLOR] y [COLOR yellow]msdos[/COLOR] por su colaboración en esta versión[/COLOR] + + [COLOR green]Gracias a [COLOR yellow][B]msdos[/B][/COLOR] por su colaboración en esta versión[/COLOR] Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi diff --git a/plugin.video.alfa/core/filetools.py b/plugin.video.alfa/core/filetools.py index 5d379ef2..346307e5 100755 --- a/plugin.video.alfa/core/filetools.py +++ b/plugin.video.alfa/core/filetools.py @@ -447,7 +447,7 @@ def mkdir(path): logger.error("ERROR al crear el directorio: %s" % path) logger.error(traceback.format_exc()) # platformtools.dialog_notification("Error al crear el directorio", path) - platformtools.dialog_ok("Alfa", "IMPORTANTE - Instale y Ejecute el script 'Alfa - fix settings', que se encuentra en el repositorio de Alfa y " + platformtools.dialog_ok("Alfa", "[COLOR red][B]IMPORTANTE[/B][/COLOR] - Instale y Ejecute el script 'Fix version 1.7.0', que se encuentra en el repositorio de Alfa y " "vuelva a entrar en el addon, [B]si no lo hace tendrá problemas[/B]") return False else: diff --git a/plugin.video.alfa/core/versiontools.py b/plugin.video.alfa/core/versiontools.py index b1390200..0846b841 100755 --- a/plugin.video.alfa/core/versiontools.py +++ b/plugin.video.alfa/core/versiontools.py @@ -14,7 +14,7 @@ def get_current_plugin_version(): def get_current_plugin_version_tag(): - return "1.5.7" + return "1.7.0" def get_current_plugin_date(): From 5e42e4ab72a5ffbf7850d5cb4921df2bd8182659 Mon Sep 17 00:00:00 2001 From: alfa-addon Date: Sun, 20 Aug 2017 20:15:06 -0400 Subject: [PATCH 29/29] minor fixes --- plugin.video.alfa/servers/flashx.py | 1 + 1 file changed, 1 insertion(+) mode change 100755 => 100644 plugin.video.alfa/servers/flashx.py diff --git a/plugin.video.alfa/servers/flashx.py b/plugin.video.alfa/servers/flashx.py old mode 100755 new mode 100644 index dcbb8765..e15d493c --- a/plugin.video.alfa/servers/flashx.py +++ b/plugin.video.alfa/servers/flashx.py @@ -40,6 +40,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= pass matches = scrapertools.find_multiple_matches(data, "") + m = "" for n, m in enumerate(matches): if m.startswith("eval"): try: