From 4d34aa3023f25869bed8bcaeff4a945a92866c06 Mon Sep 17 00:00:00 2001 From: m588416 Date: Wed, 13 Sep 2017 09:52:50 +0200 Subject: [PATCH 01/14] Recuperar el idioma en el nombre de la serie --- plugin.video.alfa/channels/seriesblanco.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/seriesblanco.py b/plugin.video.alfa/channels/seriesblanco.py index 1752f69b..3929998b 100644 --- a/plugin.video.alfa/channels/seriesblanco.py +++ b/plugin.video.alfa/channels/seriesblanco.py @@ -217,7 +217,7 @@ def episodios(item): idiomas = " ".join(["[%s]" % IDIOMAS.get(language, "OVOS") for language in re.findall("banderas/([^\.]+)", flags, re.MULTILINE)]) filter_lang = idiomas.replace("[", "").replace("]", "").split(" ") - display_title = "%s - %s" % (item.show, title) + 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)) From 27311a47c2949bfdc0fb507cd8e14cab7cbfef15 Mon Sep 17 00:00:00 2001 From: m588416 Date: Wed, 13 Sep 2017 10:17:56 +0200 Subject: [PATCH 02/14] Remove message + protect option --- plugin.video.alfa/channels/autoplay.py | 388 +++++++++++++------------ 1 file changed, 196 insertions(+), 192 deletions(-) diff --git a/plugin.video.alfa/channels/autoplay.py b/plugin.video.alfa/channels/autoplay.py index 66d451d4..12cedf2b 100644 --- a/plugin.video.alfa/channels/autoplay.py +++ b/plugin.video.alfa/channels/autoplay.py @@ -43,6 +43,10 @@ def show_option(channel, itemlist, text_color='yellow', thumbnail=None, fanart=N :return: ''' logger.info() + + if not config.is_xbmc(): + return itemlist + if thumbnail == None: thumbnail = 'https://s7.postimg.org/65ooga04b/Auto_Play.png' if fanart == None: @@ -74,228 +78,228 @@ def start(itemlist, item): :return: intenta autoreproducir, en caso de fallar devuelve el itemlist que recibio en un principio ''' logger.info() - global autoplay_node if not config.is_xbmc(): - platformtools.dialog_notification('AutoPlay ERROR', 'Sólo disponible para XBMC/Kodi') + #platformtools.dialog_notification('AutoPlay ERROR', 'Sólo disponible para XBMC/Kodi') return itemlist - else: - if not autoplay_node: - # Obtiene el nodo AUTOPLAY desde el json - autoplay_node = jsontools.get_node_from_file('autoplay', 'AUTOPLAY') - # Agrega servidores y calidades que no estaban listados a autoplay_node - new_options = check_value(item.channel, itemlist) + global autoplay_node + if not autoplay_node: + # Obtiene el nodo AUTOPLAY desde el json + autoplay_node = jsontools.get_node_from_file('autoplay', 'AUTOPLAY') - # Obtiene el nodo del canal desde autoplay_node - channel_node = autoplay_node.get(item.channel, {}) - # Obtiene los ajustes des autoplay para este canal - settings_node = channel_node.get('settings', {}) + # Agrega servidores y calidades que no estaban listados a autoplay_node + new_options = check_value(item.channel, itemlist) - if settings_node['active']: - url_list_valid = [] - autoplay_list = [] - favorite_servers = [] - favorite_quality = [] + # Obtiene el nodo del canal desde autoplay_node + channel_node = autoplay_node.get(item.channel, {}) + # Obtiene los ajustes des autoplay para este canal + settings_node = channel_node.get('settings', {}) - # Guarda el valor actual de "Accion y Player Mode" en preferencias - user_config_setting_action = config.get_setting("default_action") - user_config_setting_player = config.get_setting("player_mode") - # Habilita la accion "Ver en calidad alta" (si el servidor devuelve más de una calidad p.e. gdrive) - if user_config_setting_action != 2: - config.set_setting("default_action", 2) - if user_config_setting_player != 0: - config.set_setting("player_mode", 0) + if settings_node['active']: + url_list_valid = [] + autoplay_list = [] + favorite_servers = [] + favorite_quality = [] - # Informa que AutoPlay esta activo - platformtools.dialog_notification('AutoPlay Activo', '', sound=False) + # Guarda el valor actual de "Accion y Player Mode" en preferencias + user_config_setting_action = config.get_setting("default_action") + user_config_setting_player = config.get_setting("player_mode") + # Habilita la accion "Ver en calidad alta" (si el servidor devuelve más de una calidad p.e. gdrive) + if user_config_setting_action != 2: + config.set_setting("default_action", 2) + if user_config_setting_player != 0: + config.set_setting("player_mode", 0) - # Prioridades a la hora de ordenar itemlist: - # 0: Servidores y calidades - # 1: Calidades y servidores - # 2: Solo servidores - # 3: Solo calidades - # 4: No ordenar - if settings_node['custom_servers'] and settings_node['custom_quality']: - priority = settings_node['priority'] # 0: Servidores y calidades o 1: Calidades y servidores - elif settings_node['custom_servers']: - priority = 2 # Solo servidores - elif settings_node['custom_quality']: - priority = 3 # Solo calidades - else: - priority = 4 # No ordenar + # Informa que AutoPlay esta activo + platformtools.dialog_notification('AutoPlay Activo', '', sound=False) - # Obtiene las listas servidores, calidades disponibles desde el nodo del json de AutoPlay - server_list = channel_node.get('servers', []) - quality_list = channel_node.get('quality', []) + # Prioridades a la hora de ordenar itemlist: + # 0: Servidores y calidades + # 1: Calidades y servidores + # 2: Solo servidores + # 3: Solo calidades + # 4: No ordenar + if settings_node['custom_servers'] and settings_node['custom_quality']: + priority = settings_node['priority'] # 0: Servidores y calidades o 1: Calidades y servidores + elif settings_node['custom_servers']: + priority = 2 # Solo servidores + elif settings_node['custom_quality']: + priority = 3 # Solo calidades + else: + priority = 4 # No ordenar - # Se guardan los textos de cada servidor y calidad en listas p.e. favorite_servers = ['openload', - # 'streamcloud'] - for num in range(1, 4): - favorite_servers.append(channel_node['servers'][settings_node['server_%s' % num]]) - favorite_quality.append(channel_node['quality'][settings_node['quality_%s' % num]]) + # Obtiene las listas servidores, calidades disponibles desde el nodo del json de AutoPlay + server_list = channel_node.get('servers', []) + quality_list = channel_node.get('quality', []) - # Se filtran los enlaces de itemlist y que se correspondan con los valores de autoplay - for item in itemlist: - autoplay_elem = dict() + # Se guardan los textos de cada servidor y calidad en listas p.e. favorite_servers = ['openload', + # 'streamcloud'] + for num in range(1, 4): + favorite_servers.append(channel_node['servers'][settings_node['server_%s' % num]]) + favorite_quality.append(channel_node['quality'][settings_node['quality_%s' % num]]) - # Comprobamos q se trata de un item de video - if 'server' not in item: + # Se filtran los enlaces de itemlist y que se correspondan con los valores de autoplay + for item in itemlist: + autoplay_elem = dict() + + # Comprobamos q se trata de un item de video + if 'server' not in item: + continue + + # Agrega la opcion configurar AutoPlay al menu contextual + if 'context' not in item: + item.context = list() + if not filter(lambda x: x['action'] == 'autoplay_config', context): + item.context.append({"title": "Configurar AutoPlay", + "action": "autoplay_config", + "channel": "autoplay", + "from_channel": item.channel}) + + # Si no tiene calidad definida le asigna calidad 'default' + if item.quality == '': + item.quality = 'default' + + # Se crea la lista para configuracion personalizada + if priority < 2: # 0: Servidores y calidades o 1: Calidades y servidores + + # si el servidor y la calidad no se encuentran en las listas de favoritos o la url esta repetida, + # descartamos el item + if item.server not in favorite_servers or item.quality not in favorite_quality \ + or item.url in url_list_valid: continue - - # Agrega la opcion configurar AutoPlay al menu contextual - if 'context' not in item: - item.context = list() - if not filter(lambda x: x['action'] == 'autoplay_config', context): - item.context.append({"title": "Configurar AutoPlay", - "action": "autoplay_config", - "channel": "autoplay", - "from_channel": item.channel}) - - # Si no tiene calidad definida le asigna calidad 'default' - if item.quality == '': - item.quality = 'default' - - # Se crea la lista para configuracion personalizada - if priority < 2: # 0: Servidores y calidades o 1: Calidades y servidores - - # si el servidor y la calidad no se encuentran en las listas de favoritos o la url esta repetida, - # descartamos el item - if item.server not in favorite_servers or item.quality not in favorite_quality \ - or item.url in url_list_valid: - continue - autoplay_elem["indice_server"] = favorite_servers.index(item.server) - autoplay_elem["indice_quality"] = favorite_quality.index(item.quality) - - elif priority == 2: # Solo servidores - - # si el servidor no se encuentra en la lista de favoritos o la url esta repetida, - # descartamos el item - if item.server not in favorite_servers or item.url in url_list_valid: - continue - autoplay_elem["indice_server"] = favorite_servers.index(item.server) - - elif priority == 3: # Solo calidades - - # si la calidad no se encuentra en la lista de favoritos o la url esta repetida, - # descartamos el item - if item.quality not in favorite_quality or item.url in url_list_valid: - continue - autoplay_elem["indice_quality"] = favorite_quality.index(item.quality) - - else: # No ordenar - - # si la url esta repetida, descartamos el item - if item.url in url_list_valid: - continue - - # Si el item llega hasta aqui lo añadimos al listado de urls validas y a autoplay_list - url_list_valid.append(item.url) - autoplay_elem['videoitem'] = item - # autoplay_elem['server'] = item.server - # autoplay_elem['quality'] = item.quality - autoplay_list.append(autoplay_elem) - - # Ordenamos segun la prioridad - if priority == 0: # Servidores y calidades - autoplay_list.sort(key=lambda orden: (orden['indice_server'], orden['indice_quality'])) - - elif priority == 1: # Calidades y servidores - autoplay_list.sort(key=lambda orden: (orden['indice_quality'], orden['indice_server'])) + autoplay_elem["indice_server"] = favorite_servers.index(item.server) + autoplay_elem["indice_quality"] = favorite_quality.index(item.quality) elif priority == 2: # Solo servidores - autoplay_list.sort(key=lambda orden: orden['indice_server']) + + # si el servidor no se encuentra en la lista de favoritos o la url esta repetida, + # descartamos el item + if item.server not in favorite_servers or item.url in url_list_valid: + continue + autoplay_elem["indice_server"] = favorite_servers.index(item.server) elif priority == 3: # Solo calidades - autoplay_list.sort(key=lambda orden: orden['indice_quality']) - # Si hay elementos en la lista de autoplay se intenta reproducir cada elemento, hasta encontrar uno - # funcional o fallen todos - if autoplay_list: - played = False - max_intentos = 5 - max_intentos_servers = {} + # si la calidad no se encuentra en la lista de favoritos o la url esta repetida, + # descartamos el item + if item.quality not in favorite_quality or item.url in url_list_valid: + continue + autoplay_elem["indice_quality"] = favorite_quality.index(item.quality) - # Si se esta reproduciendo algo detiene la reproduccion - if platformtools.is_playing(): - platformtools.stop_video() + else: # No ordenar - for autoplay_elem in autoplay_list: - if not platformtools.is_playing() and not played: - videoitem = autoplay_elem['videoitem'] + # si la url esta repetida, descartamos el item + if item.url in url_list_valid: + continue - if videoitem.server not in max_intentos_servers: + # Si el item llega hasta aqui lo añadimos al listado de urls validas y a autoplay_list + url_list_valid.append(item.url) + autoplay_elem['videoitem'] = item + # autoplay_elem['server'] = item.server + # autoplay_elem['quality'] = item.quality + autoplay_list.append(autoplay_elem) + + # Ordenamos segun la prioridad + if priority == 0: # Servidores y calidades + autoplay_list.sort(key=lambda orden: (orden['indice_server'], orden['indice_quality'])) + + elif priority == 1: # Calidades y servidores + autoplay_list.sort(key=lambda orden: (orden['indice_quality'], orden['indice_server'])) + + elif priority == 2: # Solo servidores + autoplay_list.sort(key=lambda orden: orden['indice_server']) + + elif priority == 3: # Solo calidades + autoplay_list.sort(key=lambda orden: orden['indice_quality']) + + # Si hay elementos en la lista de autoplay se intenta reproducir cada elemento, hasta encontrar uno + # funcional o fallen todos + if autoplay_list: + played = False + max_intentos = 5 + max_intentos_servers = {} + + # Si se esta reproduciendo algo detiene la reproduccion + if platformtools.is_playing(): + platformtools.stop_video() + + for autoplay_elem in autoplay_list: + if not platformtools.is_playing() and not played: + videoitem = autoplay_elem['videoitem'] + + if videoitem.server not in max_intentos_servers: + max_intentos_servers[videoitem.server] = max_intentos + + # Si se han alcanzado el numero maximo de intentos de este servidor saltamos al siguiente + if max_intentos_servers[videoitem.server] == 0: + continue + + lang = " " + if hasattr(videoitem, 'language') and videoitem.language != "": + lang = " '%s' " % videoitem.language + + platformtools.dialog_notification("AutoPlay", "%s%s%s" % ( + videoitem.server.upper(), lang, videoitem.quality.upper()), sound=False) + # TODO videoitem.server es el id del server, pero podria no ser el nombre!!! + + # Intenta reproducir los enlaces + # Si el canal tiene metodo play propio lo utiliza + channel = __import__('channels.%s' % item.channel, None, None, ["channels.%s" % item.channel]) + if hasattr(channel, 'play'): + resolved_item = getattr(channel, 'play')(videoitem) + if len(resolved_item) > 0: + if isinstance(resolved_item[0], list): + videoitem.video_urls = resolved_item + else: + videoitem = resolved_item[0] + + # si no directamente reproduce + platformtools.play_video(videoitem) + + try: + if platformtools.is_playing(): + played = True + break + except: # TODO evitar el informe de que el conector fallo o el video no se encuentra + logger.debug(str(len(autoplay_list))) + + # Si hemos llegado hasta aqui es por q no se ha podido reproducir + max_intentos_servers[videoitem.server] -= 1 + + # 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] == 0: + text = "Parece que los enlaces de %s no estan funcionando." % videoitem.server.upper() + if not platformtools.dialog_yesno("AutoPlay", text, + "¿Desea ignorar todos los enlaces de este servidor?"): max_intentos_servers[videoitem.server] = max_intentos - # Si se han alcanzado el numero maximo de intentos de este servidor saltamos al siguiente - if max_intentos_servers[videoitem.server] == 0: - continue + else: + platformtools.dialog_notification('AutoPlay No Fue Posible', 'No Hubo Coincidencias') + if new_options: + platformtools.dialog_notification("AutoPlay", "Nueva Calidad/Servidor disponible en la " + "configuracion", sound=False) - lang = " " - if hasattr(videoitem, 'language') and videoitem.language != "": - lang = " '%s' " % videoitem.language + # Restaura si es necesario el valor previo de "Accion y Player Mode" en preferencias + if user_config_setting_action != 2: + config.set_setting("default_action", user_config_setting_action) + if user_config_setting_player != 0: + config.set_setting("player_mode", user_config_setting_player) - platformtools.dialog_notification("AutoPlay", "%s%s%s" % ( - videoitem.server.upper(), lang, videoitem.quality.upper()), sound=False) - # TODO videoitem.server es el id del server, pero podria no ser el nombre!!! - - # Intenta reproducir los enlaces - # Si el canal tiene metodo play propio lo utiliza - channel = __import__('channels.%s' % item.channel, None, None, ["channels.%s" % item.channel]) - if hasattr(channel, 'play'): - resolved_item = getattr(channel, 'play')(videoitem) - if len(resolved_item) > 0: - if isinstance(resolved_item[0], list): - videoitem.video_urls = resolved_item - else: - videoitem = resolved_item[0] - - # si no directamente reproduce - platformtools.play_video(videoitem) - - try: - if platformtools.is_playing(): - played = True - break - except: # TODO evitar el informe de que el conector fallo o el video no se encuentra - logger.debug(str(len(autoplay_list))) - - # Si hemos llegado hasta aqui es por q no se ha podido reproducir - max_intentos_servers[videoitem.server] -= 1 - - # 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] == 0: - text = "Parece que los enlaces de %s no estan funcionando." % videoitem.server.upper() - if not platformtools.dialog_yesno("AutoPlay", text, - "¿Desea ignorar todos los enlaces de este servidor?"): - max_intentos_servers[videoitem.server] = max_intentos - - else: - platformtools.dialog_notification('AutoPlay No Fue Posible', 'No Hubo Coincidencias') - if new_options: - 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: - config.set_setting("default_action", user_config_setting_action) - if user_config_setting_player != 0: - config.set_setting("player_mode", user_config_setting_player) - - # devuelve la lista de enlaces para la eleccion manual - return itemlist + # devuelve la lista de enlaces para la eleccion manual + return itemlist 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. + 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. - + :param channel: (str) id del canal - :param list_servers: (list) lista inicial de servidores validos para el canal. No es necesario incluirlos todos, + :param list_servers: (list) lista inicial de servidores validos para el canal. No es necesario incluirlos todos, ya que la lista de servidores validos se ira actualizando dinamicamente. - :param list_quality: (list) lista inicial de calidades validas para el canal. No es necesario incluirlas todas, + :param list_quality: (list) lista inicial de calidades validas para el canal. No es necesario incluirlas todas, ya que la lista de calidades validas se ira actualizando dinamicamente. :return: (bool) True si la inicializacion ha sido correcta. ''' @@ -304,7 +308,7 @@ def init(channel, list_servers, list_quality): result = True if not config.is_xbmc(): - platformtools.dialog_notification('AutoPlay ERROR', 'Sólo disponible para XBMC/Kodi') + # platformtools.dialog_notification('AutoPlay ERROR', 'Sólo disponible para XBMC/Kodi') result = False else: autoplay_path = os.path.join(config.get_data_path(), "settings_channels", 'autoplay_data.json') @@ -517,9 +521,9 @@ def autoplay_config(item): def save(item, dict_data_saved): ''' Guarda los datos de la ventana de configuracion - + :param item: item - :param dict_data_saved: dict + :param dict_data_saved: dict :return: ''' logger.info() From 82cc5fba8b99de32f49c4d4551d35238e1f9213e Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 13 Sep 2017 17:39:37 -0300 Subject: [PATCH 03/14] Ajustes y reparaciones de canales --- .../channels/ecarteleratrailers.py | 2 +- plugin.video.alfa/channels/seriesdanko.py | 14 +- plugin.video.alfa/channels/serieslatino.py | 4 +- plugin.video.alfa/channels/seriespapaya.py | 43 ++++-- plugin.video.alfa/channels/sipeliculas.py | 31 +++-- plugin.video.alfa/channels/torrentlocura.py | 3 + .../channels/ultrapeliculashd.py | 22 ++- plugin.video.alfa/channels/vepelis.py | 128 +++++------------- plugin.video.alfa/channels/ver-peliculas.py | 12 +- .../channels/verseriesonlinetv.py | 16 ++- plugin.video.alfa/channels/vixto.py | 7 +- 11 files changed, 141 insertions(+), 141 deletions(-) mode change 100755 => 100644 plugin.video.alfa/channels/serieslatino.py diff --git a/plugin.video.alfa/channels/ecarteleratrailers.py b/plugin.video.alfa/channels/ecarteleratrailers.py index a6bfb4dd..04ad7129 100755 --- a/plugin.video.alfa/channels/ecarteleratrailers.py +++ b/plugin.video.alfa/channels/ecarteleratrailers.py @@ -41,7 +41,7 @@ def mainlist(item): logger.debug("title=[" + title + "], url=[" + url + "], thumbnail=[" + thumbnail + "]") itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail, fanart=thumbnail, - plot=plot, server="directo", folder=False)) + plot=plot,folder=False)) # ------------------------------------------------------ # Extrae la página siguiente diff --git a/plugin.video.alfa/channels/seriesdanko.py b/plugin.video.alfa/channels/seriesdanko.py index 424cf4b3..ac3c7a2b 100644 --- a/plugin.video.alfa/channels/seriesdanko.py +++ b/plugin.video.alfa/channels/seriesdanko.py @@ -40,7 +40,7 @@ def novedades(item): data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| |
|
|
|
|
|-\s", "", data) data = re.sub(r"", "", data) - + logger.debug(data) patron = '' patron += " 0: diff --git a/plugin.video.alfa/channels/seriespapaya.py b/plugin.video.alfa/channels/seriespapaya.py index 0baf8eec..afcdfbb4 100644 --- a/plugin.video.alfa/channels/seriespapaya.py +++ b/plugin.video.alfa/channels/seriespapaya.py @@ -11,12 +11,14 @@ from core import httptools from core import jsontools from core import scrapertools from core import servertools +from core import tmdb from core.item import Item from platformcode import config, logger HOST = "http://www.seriespapaya.com" -IDIOMAS = {'es': 'Español', 'lat': 'Latino', 'in': 'Inglés', 'ca': 'Catalán', 'sub': 'VOS'} +IDIOMAS = {'es': 'Español', 'lat': 'Latino', 'in': 'Inglés', 'ca': 'Catalán', 'sub': 'VOSE', 'Español Latino':'lat', + 'Español Castellano':'es', 'Sub Español':'VOSE'} list_idiomas = IDIOMAS.values() CALIDADES = ['360p', '480p', '720p HD', '1080p HD'] @@ -67,22 +69,31 @@ def series_por_letra_y_grupo(item): "letra": item.letter.lower() } data = httptools.downloadpage(url, post=urllib.urlencode(post_request)).data + data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) + patron = '
.*?
(.*?)' + patron +='<.*?justify>(.*?)<.*?Año:<\/b>.*?(\d{4})<' + matches = re.compile(patron, re.DOTALL).findall(data) + #series = re.findall( + # 'list_imagen.+?src="(?P[^"]+).+?
]+href="(?P[^"]+)[^>]+>(.*?)', data, + # re.MULTILINE | re.DOTALL) - series = re.findall( - 'list_imagen.+?src="(?P[^"]+).+?
]+href="(?P[^"]+)[^>]+>(.*?)', data, - re.MULTILINE | re.DOTALL) - - for img, url, name in series: - itemlist.append(item.clone( + for img, url, name, plot, year in matches: + new_item= Item( + channel = item.channel, action="episodios", title=name, show=name, url=urlparse.urljoin(HOST, url), thumbnail=urlparse.urljoin(HOST, img), - context=filtertools.context(item, list_idiomas, CALIDADES) - )) + context=filtertools.context(item, list_idiomas, CALIDADES), + plot = plot, + infoLabels={'year':year} + ) + if year: + tmdb.set_infoLabels_item(new_item) + itemlist.append(new_item) - if len(series) == 8: + if len(matches) == 8: itemlist.append(item.clone(title="Siguiente >>", action="series_por_letra_y_grupo", extra=item.extra + 1)) if item.extra > 0: @@ -94,13 +105,17 @@ def series_por_letra_y_grupo(item): def novedades(item): logger.info() data = httptools.downloadpage(HOST).data - shows = re.findall('sidebarestdiv[^<]+|\s{2,}', "", data) + logger.debug(data) + patron = 'sidebarestdiv>.*?src=(.*?)>' + matches = re.compile(patron, re.DOTALL).findall(data) itemlist = [] - for title, url, img in shows: - itemlist.append(item.clone(action="findvideos", title=title, url=urlparse.urljoin(HOST, url), thumbnail=img)) + for title, language,url, img in matches: + language = IDIOMAS[language] + itemlist.append(item.clone(action="findvideos", title=title, url=urlparse.urljoin(HOST, url), thumbnail=img, + language=language)) return itemlist diff --git a/plugin.video.alfa/channels/sipeliculas.py b/plugin.video.alfa/channels/sipeliculas.py index 7e76bd9b..95ba9295 100755 --- a/plugin.video.alfa/channels/sipeliculas.py +++ b/plugin.video.alfa/channels/sipeliculas.py @@ -6,6 +6,7 @@ import urlparse from core import httptools from core import scrapertools from core import servertools +from core import tmdb from core.item import Item from platformcode import logger @@ -60,18 +61,18 @@ def lista(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data - # data = re.sub(r'"|\n|\r|\t| |
', "", data) - listado = scrapertools.find_single_match(data, '
(.*?)
[^<]+

([^<]+)') - itemlist.append(Item(channel=item.channel, action='findvideos', title=scrapedtitle, url=scrapedurl, - thumbnail=scrapedthumbnail, plot=dataplot, contentTitle=scrapedtitle, extra=item.extra)) + patron = '(.*?)<.*?span>(.*?)<.*?

(.*?)<' + matches = re.compile(patron, re.DOTALL).findall(listado) + + for scrapedurl, scrapedthumbnail, scrapedtitle, year, plot in matches: + itemlist.append(Item(channel=item.channel, action='findvideos', title=scrapedtitle, url=scrapedurl, + thumbnail=scrapedthumbnail, plot=plot, contentTitle=scrapedtitle, extra=item.extra, + infoLabels ={'year':year})) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) # Paginacion if itemlist != []: patron = 'Siguiente[^<]+' @@ -96,22 +97,26 @@ def findvideos(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data - # data = re.sub(r"'|\n|\r|\t| |
", "", data) listado1 = scrapertools.find_single_match(data, '