From f89569d0b814e92d7cd95e2b27234f9357e78963 Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Wed, 31 Oct 2018 16:19:23 +0100 Subject: [PATCH 1/4] =?UTF-8?q?Cacheando=20los=20enlaces=20de=20las=20seri?= =?UTF-8?q?es=20y=20pel=C3=ADculas=20en=20la=20Videoteca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cacheando los enlaces de las series y películas en la Videoteca Sábado por la noche. Me siento a ver alguno de los episodios nuevos de la semana o una película, que tengo en la Videoteca. ¿Qué pasa?, el canal está caído o da error de cambio de estructura, y no puedo ver nada de la Videoteca para ese canal!!! Entonces me acuerdo de lo bueno que es tener otro canal de reserva configurado, pero ya es tarde... Con frecuencia las web de los canales se colapsan durante el fin de semana por sobrecarga de usuarios. El diseño de nuestros canales exige que para reproducir un episodio o película desde la videoteca tengamos que acceder a la web para encontrar el enlace que apunta al episodio o película. Si la web está caída o ha cambiado la estructura no se puede encontrar el enlace. Es un proceso muy pequeño, pero imprescindible. Como los enlaces suelen ser bastante estables, ¿por qué no añadimos los enlaces del episodio o película durante la generación de la Videoteca? Si la web ha caído temporal o definitivamente, o hay un cambio de estructura, mientras se busca una alternativa, se puede seguir disfrutando de la Videoteca grabada por tiempo indefinido. Hay que pensar que los usuarios de la Videoteca de Alfa pueden llegar a tener docenas o centenares de títulos almacenados en la Videoteca. Esta es una mejora disponible en Alfa para todos los canales que usan Videoteca, pero los canales requieren un retoque para soportarla. Empezamos por el canal Newpct1. Ya iremos ampliando la lista con el tiempo. Cuando se lance Kodi por primera vez después de la actualización, automáticamente se migrarán todas las series y películas de la Videoteca para este canal. --- plugin.video.alfa/channels/newpct1.json | 16 +- plugin.video.alfa/channels/newpct1.py | 398 +++++++++++--------- plugin.video.alfa/core/videolibrarytools.py | 87 ++++- plugin.video.alfa/lib/generictools.py | 172 +++++++-- plugin.video.alfa/videolibrary_service.py | 3 + 5 files changed, 460 insertions(+), 216 deletions(-) diff --git a/plugin.video.alfa/channels/newpct1.json b/plugin.video.alfa/channels/newpct1.json index 4e620eb2..49afc414 100644 --- a/plugin.video.alfa/channels/newpct1.json +++ b/plugin.video.alfa/channels/newpct1.json @@ -48,6 +48,20 @@ "VOSE" ] }, + { + "id": "emergency_urls", + "type": "list", + "label": "Se quieren guardar Enlaces de Emergencia por si se cae la Web?", + "default": 1, + "enabled": true, + "visible": true, + "lvalues": [ + "No", + "Guardar", + "Borrar", + "Actualizar" + ] + }, { "id": "clonenewpct1_channel_default", "type": "list", @@ -77,7 +91,7 @@ "id": "intervenidos_channels_list", "type": "text", "label": "Lista de canales y clones de NewPct1 intervenidos y orden de sustitución de URLs", - "default": "('0', 'canal_org', 'canal_des', 'url_org', 'url_des', 'patron1', 'patron2', 'patron3', 'patron4', 'patron5', 'content_inc', 'content_exc', 'ow_force'), ('0', 'mejortorrent', 'mejortorrent1', 'http://www.mejortorrent.com/', 'https://mejortorrent1.com/', '(http.?:\/\/.*?\/)', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-(?:[^-]+-)([^0-9]+-)', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-(?:[^-]+-)[^0-9]+-\\d+-(Temporada-).html', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-(?:[^-]+-)[^0-9]+-(\\d+)-', '', 'tvshow, season', '', 'force'), ('0', 'mejortorrent', 'mejortorrent1', 'http://www.mejortorrent.com/', 'https://mejortorrent1.com/', '(http.?:\/\/.*?\/)', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-([^.]+).html', '', '', '', 'movie', '', 'force'), ('1', 'mejortorrent', 'mejortorrent', 'http://www.mejortorrent.com/', 'http://www.mejortorrent.org/', '', '', '', '', '', '*', '', 'force'), ('1', 'plusdede', 'megadede', 'https://www.plusdede.com', 'https://www.megadede.com', '', '', '', '', '', '*', '', 'auto')", + "default": "('0', 'canal_org', 'canal_des', 'url_org', 'url_des', 'patron1', 'patron2', 'patron3', 'patron4', 'patron5', 'content_inc', 'content_exc', 'ow_force'), ('0', 'mejortorrent', 'mejortorrent1', 'http://www.mejortorrent.com/', 'https://mejortorrent1.com/', '(http.?:\/\/.*?\/)', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-(?:[^-]+-)([^0-9]+-)', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-(?:[^-]+-)[^0-9]+-\\d+-(Temporada-).html', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-(?:[^-]+-)[^0-9]+-(\\d+)-', '', 'tvshow, season', '', 'force'), ('0', 'mejortorrent', 'mejortorrent1', 'http://www.mejortorrent.com/', 'https://mejortorrent1.com/', '(http.?:\/\/.*?\/)', 'http.?:\/\/.*?\/.*?-torrent.?-[^-]+-([^.]+).html', '', '', '', 'movie', '', 'force'), ('0', 'mejortorrent', 'mejortorrent', 'http://www.mejortorrent.com/', 'http://www.mejortorrent.org/', '', '', '', '', '', '*', '', 'force'), ('0', 'plusdede', 'megadede', 'https://www.plusdede.com', 'https://www.megadede.com', '', '', '', '', '', '*', '', 'auto')", "enabled": true, "visible": false }, diff --git a/plugin.video.alfa/channels/newpct1.py b/plugin.video.alfa/channels/newpct1.py index ceabe4ea..ed1d74e2 100644 --- a/plugin.video.alfa/channels/newpct1.py +++ b/plugin.video.alfa/channels/newpct1.py @@ -544,15 +544,15 @@ def listado(item): if ("temp" in title.lower() or "cap" in title.lower()) and item_local.contentType != "movie": #Eliminamos Temporada de Series, solo nos interesa la serie completa - title = re.sub(r'-? [t|T]emp\w+ \d+ Comp\w+\d+[x|X]\d+', ' Completa', title) - title = re.sub(r'-? [t|T]emp\w+.?\d+.?[c|C]ap\w+.?\d+.?(?:al|Al|y).?\d+', '', title) - title = re.sub(r'-? [t|T]emp\w+ \d+x\d+', '', title) - title = re.sub(r'-? [t|T]emp\w+ \d+', '', title) - title = re.sub(r'-? [t|T]emp\w+.*?\d+', '', title) - title = re.sub(r' [t|T]emp.*?\d+[x|X]\d+', '', title) - title = re.sub(r' [t|T]emp.*?\d+', '', title) - title = re.sub(r' [c|C]ap.*?\d+ al \d+', '', title) - title = re.sub(r' [c|C]ap.*?\d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+ \d+ Comp\w+\d+[x|X]\d+', ' Completa', title) + title = re.sub(r'-?\s*[t|T]emp\w+.?\d+.?[c|C]ap\w+.?\d+.?(?:al|Al|y).?\d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+ \d+x\d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+ \d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+.*?\d+', '', title) + title = re.sub(r'\s*[t|T]emp.*?\d+[x|X]\d+', '', title) + title = re.sub(r'\s*[t|T]emp.*?\d+', '', title) + title = re.sub(r'\s*[c|C]ap.*?\d+ al \d+', '', title) + title = re.sub(r'\s*[c|C]ap.*?\d+', '', title) if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) @@ -1026,15 +1026,15 @@ def listado_busqueda(item): #Extraemos info adicional del título y la guardamos para después de TMDB if ("temp" in title.lower() or "cap" in title.lower()) and item_local.contentType != "movie": #Eliminamos Temporada de Series, solo nos interesa la serie completa - title = re.sub(r'-? [t|T]emp\w+ \d+ Comp\w+\d+[x|X]\d+', ' Completa', title) - title = re.sub(r'-? [t|T]emp\w+.?\d+.?[c|C]ap\w+.?\d+.?(?:al|Al|y).?\d+', '', title) - title = re.sub(r'-? [t|T]emp\w+ \d+x\d+', '', title) - title = re.sub(r'-? [t|T]emp\w+ \d+', '', title) - title = re.sub(r'-? [t|T]emp\w+.*?\d+', '', title) - title = re.sub(r' [t|T]emp.*?\d+[x|X]\d+', '', title) - title = re.sub(r' [t|T]emp.*?\d+', '', title) - title = re.sub(r' [c|C]ap.*?\d+ al \d+', '', title) - title = re.sub(r' [c|C]ap.*?\d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+ \d+ Comp\w+\d+[x|X]\d+', ' Completa', title) + title = re.sub(r'-?\s*[t|T]emp\w+.?\d+.?[c|C]ap\w+.?\d+.?(?:al|Al|y).?\d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+ \d+x\d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+ \d+', '', title) + title = re.sub(r'-?\s*[t|T]emp\w+.*?\d+', '', title) + title = re.sub(r'\s*[t|T]emp.*?\d+[x|X]\d+', '', title) + title = re.sub(r'\s*[t|T]emp.*?\d+', '', title) + title = re.sub(r'\s*[c|C]ap.*?\d+ al \d+', '', title) + title = re.sub(r'\s*[c|C]ap.*?\d+', '', title) if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) @@ -1250,7 +1250,7 @@ def findvideos(item): item.channel_host = host item.category = scrapertools.find_single_match(item.url, 'http.?\:\/\/(?:www.)?(\w+)\.\w+\/').capitalize() - verify_fo = True #Verificamos si el clone a usar está activo + verify_fo = True #Verificamos si el clone a usar está activo item, data = generictools.fail_over_newpct1(item, verify_fo) # Cualquiera de las tres opciones son válidas @@ -1259,113 +1259,115 @@ def findvideos(item): item.url = item.url.replace(".com/", ".com/descarga-torrent/") #Función para limitar la verificación de enlaces de Servidores para Ver online y Descargas - try: - #Inicializamos las variables por si hay un error en medio del proceso - channel_exclude = [] - ver_enlaces = [] - ver_enlaces_veronline = -1 #Ver todos los enlaces Ver Online - verificar_enlaces_veronline = -1 #Verificar todos los enlaces Ver Online - verificar_enlaces_veronline_validos = True #"¿Contar sólo enlaces 'verificados' en Ver Online?" - excluir_enlaces_veronline = [] #Lista vacía de servidores excluidos en Ver Online - ver_enlaces_descargas = 0 #Ver todos los enlaces Descargar - verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar - verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" - excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar + if not item.videolibray_emergency_urls: #Si es un proceso nomal... + try: + #Inicializamos las variables por si hay un error en medio del proceso + channel_exclude = [] + ver_enlaces = [] + ver_enlaces_veronline = -1 #Ver todos los enlaces Ver Online + verificar_enlaces_veronline = -1 #Verificar todos los enlaces Ver Online + verificar_enlaces_veronline_validos = True #"¿Contar sólo enlaces 'verificados' en Ver Online?" + excluir_enlaces_veronline = [] #Lista vacía de servidores excluidos en Ver Online + ver_enlaces_descargas = 0 #Ver todos los enlaces Descargar + verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar + verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" + excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar + + #Leemos las opciones de permitir Servidores para Ver Online y Descargas + #Cargamos en .json del canal para ver las listas de valores en settings + channel_exclude = channeltools.get_channel_json(item.channel) + for settings in channel_exclude['settings']: #Se recorren todos los settings + if settings['id'] == "clonenewpct1_excluir1_enlaces_veronline": #lista de enlaces a excluir + max_excl = int(settings['max_excl']) #Máximo número de servidores excluidos + channel_exclude = settings['lvalues'] #Cargamos la lista de servidores + if settings['id'] == "clonenewpct1_ver_enlaces_descargas": #Número de enlances a ver o verificar + ver_enlaces = settings['lvalues'] #Cargamos la lista de num. de enlaces - #Leemos las opciones de permitir Servidores para Ver Online y Descargas - #Cargamos en .json del canal para ver las listas de valores en settings - channel_exclude = channeltools.get_channel_json(item.channel) - for settings in channel_exclude['settings']: #Se recorren todos los settings - if settings['id'] == "clonenewpct1_excluir1_enlaces_veronline": #lista de enlaces a excluir - max_excl = int(settings['max_excl']) #Máximo número de servidores excluidos - channel_exclude = settings['lvalues'] #Cargamos la lista de servidores - if settings['id'] == "clonenewpct1_ver_enlaces_descargas": #Número de enlances a ver o verificar - ver_enlaces = settings['lvalues'] #Cargamos la lista de num. de enlaces - - #Primer loop para enlaces de Ver Online. - #Carga la variable de ver - ver_enlaces_veronline = int(config.get_setting("clonenewpct1_ver_enlaces_veronline", item.channel)) - if ver_enlaces_veronline == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 - ver_enlaces_veronline = -1 - if ver_enlaces_veronline > 1: #para los demás valores, tomamos los de la lista - ver_enlaces_veronline = int(ver_enlaces[ver_enlaces_veronline]) - - #Carga la variable de verificar - verificar_enlaces_veronline = int(config.get_setting("clonenewpct1_verificar_enlaces_veronline", item.channel)) - if verificar_enlaces_veronline == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 - verificar_enlaces_veronline = -1 - if verificar_enlaces_veronline > 1: #para los demás valores, tomamos los de la lista - verificar_enlaces_veronline = int(ver_enlaces[verificar_enlaces_veronline]) + #Primer loop para enlaces de Ver Online. + #Carga la variable de ver + ver_enlaces_veronline = int(config.get_setting("clonenewpct1_ver_enlaces_veronline", item.channel)) + if ver_enlaces_veronline == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 + ver_enlaces_veronline = -1 + if ver_enlaces_veronline > 1: #para los demás valores, tomamos los de la lista + ver_enlaces_veronline = int(ver_enlaces[ver_enlaces_veronline]) + + #Carga la variable de verificar + verificar_enlaces_veronline = int(config.get_setting("clonenewpct1_verificar_enlaces_veronline", item.channel)) + if verificar_enlaces_veronline == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 + verificar_enlaces_veronline = -1 + if verificar_enlaces_veronline > 1: #para los demás valores, tomamos los de la lista + verificar_enlaces_veronline = int(ver_enlaces[verificar_enlaces_veronline]) - #Carga la variable de contar sólo los servidores verificados - verificar_enlaces_veronline_validos = int(config.get_setting("clonenewpct1_verificar_enlaces_veronline_validos", item.channel)) + #Carga la variable de contar sólo los servidores verificados + verificar_enlaces_veronline_validos = int(config.get_setting("clonenewpct1_verificar_enlaces_veronline_validos", item.channel)) - #Carga la variable de lista de servidores excluidos - x = 1 - for x in range(1, max_excl+1): #recorremos todas las opciones de canales exluidos - valor = str(config.get_setting("clonenewpct1_excluir%s_enlaces_veronline" % x, item.channel)) - valor = int(valor) - if valor > 0: #Evitamos "No" - excluir_enlaces_veronline += [channel_exclude[valor]] #Añadimos el nombre de servidor excluido a la lista - x += 1 + #Carga la variable de lista de servidores excluidos + x = 1 + for x in range(1, max_excl+1): #recorremos todas las opciones de canales exluidos + valor = str(config.get_setting("clonenewpct1_excluir%s_enlaces_veronline" % x, item.channel)) + valor = int(valor) + if valor > 0: #Evitamos "No" + excluir_enlaces_veronline += [channel_exclude[valor]] #Añadimos el nombre de servidor excluido a la lista + x += 1 - #Segundo loop para enlaces de Descargar. - #Carga la variable de ver - ver_enlaces_descargas = int(config.get_setting("clonenewpct1_ver_enlaces_descargas", item.channel)) - if ver_enlaces_descargas == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 - ver_enlaces_descargas = -1 - if ver_enlaces_descargas > 1: #para los demás valores, tomamos los de la lista - ver_enlaces_descargas = int(ver_enlaces[ver_enlaces_descargas]) - - #Carga la variable de verificar - verificar_enlaces_descargas = int(config.get_setting("clonenewpct1_verificar_enlaces_descargas", item.channel)) - if verificar_enlaces_descargas == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 - verificar_enlaces_descargas = -1 - if verificar_enlaces_descargas > 1: #para los demás valores, tomamos los de la lista - verificar_enlaces_descargas = int(ver_enlaces[verificar_enlaces_descargas]) + #Segundo loop para enlaces de Descargar. + #Carga la variable de ver + ver_enlaces_descargas = int(config.get_setting("clonenewpct1_ver_enlaces_descargas", item.channel)) + if ver_enlaces_descargas == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 + ver_enlaces_descargas = -1 + if ver_enlaces_descargas > 1: #para los demás valores, tomamos los de la lista + ver_enlaces_descargas = int(ver_enlaces[ver_enlaces_descargas]) + + #Carga la variable de verificar + verificar_enlaces_descargas = int(config.get_setting("clonenewpct1_verificar_enlaces_descargas", item.channel)) + if verificar_enlaces_descargas == 1: #a "Todos" le damos valor -1. Para "No" dejamos 0 + verificar_enlaces_descargas = -1 + if verificar_enlaces_descargas > 1: #para los demás valores, tomamos los de la lista + verificar_enlaces_descargas = int(ver_enlaces[verificar_enlaces_descargas]) - #Carga la variable de contar sólo los servidores verificados - verificar_enlaces_descargas_validos = int(config.get_setting("clonenewpct1_verificar_enlaces_descargas_validos", item.channel)) + #Carga la variable de contar sólo los servidores verificados + verificar_enlaces_descargas_validos = int(config.get_setting("clonenewpct1_verificar_enlaces_descargas_validos", item.channel)) - #Carga la variable de lista de servidores excluidos - x = 1 - for x in range(1, max_excl+1): #recorremos todas las opciones de canales exluidos - valor = str(config.get_setting("clonenewpct1_excluir%s_enlaces_descargas" % x, item.channel)) - valor = int(valor) - if valor > 0: #Evitamos "No" - excluir_enlaces_descargas += [channel_exclude[valor]] #Añadimos el nombre de servidor excluido a la lista - x += 1 + #Carga la variable de lista de servidores excluidos + x = 1 + for x in range(1, max_excl+1): #recorremos todas las opciones de canales exluidos + valor = str(config.get_setting("clonenewpct1_excluir%s_enlaces_descargas" % x, item.channel)) + valor = int(valor) + if valor > 0: #Evitamos "No" + excluir_enlaces_descargas += [channel_exclude[valor]] #Añadimos el nombre de servidor excluido a la lista + x += 1 - except Exception, ex: #En caso de error, lo mostramos y reseteamos todas las variables - logger.error("Error en la lectura de parámentros del .json del canal: " + item.channel + " \n%s" % ex) - #Mostrar los errores - logger.error(ver_enlaces_veronline) - logger.error(verificar_enlaces_veronline) - logger.error(verificar_enlaces_veronline_validos) - logger.error(excluir_enlaces_veronline) - logger.error(ver_enlaces_descargas) - logger.error(verificar_enlaces_descargas) - logger.error(verificar_enlaces_descargas_validos) - logger.error(excluir_enlaces_descargas) - #Resetear las variables a sus valores por defecto - ver_enlaces_veronline = -1 #Ver todos los enlaces Ver Online - verificar_enlaces_veronline = -1 #Verificar todos los enlaces Ver Online - verificar_enlaces_veronline_validos = True #"¿Contar sólo enlaces 'verificados' en Ver Online?" - excluir_enlaces_veronline = [] #Lista vacía de servidores excluidos en Ver Online - ver_enlaces_descargas = 0 #Ver todos los enlaces Descargar - verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar - verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" - excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar + except Exception, ex: #En caso de error, lo mostramos y reseteamos todas las variables + logger.error("Error en la lectura de parámentros del .json del canal: " + item.channel + " \n%s" % ex) + #Mostrar los errores + logger.error(ver_enlaces_veronline) + logger.error(verificar_enlaces_veronline) + logger.error(verificar_enlaces_veronline_validos) + logger.error(excluir_enlaces_veronline) + logger.error(ver_enlaces_descargas) + logger.error(verificar_enlaces_descargas) + logger.error(verificar_enlaces_descargas_validos) + logger.error(excluir_enlaces_descargas) + #Resetear las variables a sus valores por defecto + ver_enlaces_veronline = -1 #Ver todos los enlaces Ver Online + verificar_enlaces_veronline = -1 #Verificar todos los enlaces Ver Online + verificar_enlaces_veronline_validos = True #"¿Contar sólo enlaces 'verificados' en Ver Online?" + excluir_enlaces_veronline = [] #Lista vacía de servidores excluidos en Ver Online + ver_enlaces_descargas = 0 #Ver todos los enlaces Descargar + verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar + verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" + excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar # Descarga la página data = '' + data_servidores = '' try: data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url, timeout=timeout).data) data = data.replace("$!", "#!").replace("'", "\"").replace("ñ", "ñ").replace("//pictures", "/pictures") url_servidores = item.url category_servidores = item.category - data_servidores = data #salvamos data para verificar servidores, si es necesario - except: + data_servidores = data #salvamos data para verificar servidores, si es necesario + except: #La web no responde. Probemos las urls de emergencia pass patron = 'class="btn-torrent">.*?window.location.href = "(.*?)";' #Patron para .torrent @@ -1375,15 +1377,20 @@ def findvideos(item): if not data or not scrapertools.find_single_match(data, patron): item = generictools.web_intervenida(item, data) #Verificamos que no haya sido clausurada if item.intervencion: #Sí ha sido clausurada judicialmente - item, itemlist = generictools.post_tmdb_findvideos(item, itemlist) #Llamamos al método para el pintado del error - return itemlist #Salimos - - logger.error("ERROR 01: FINDVIDEOS: La Web no responde o la URL es erronea: " + item.url + " / DATA: " + data) - - #Si no hay datos consistentes, llamamos al método de fail_over para que encuentre un canal que esté activo y pueda gestionar el vídeo - item, data = generictools.fail_over_newpct1(item, patron) + item, itemlist = generictools.post_tmdb_findvideos(item, itemlist) #Llamamos al método para el pintado del error + if item.emergency_urls: #Hay urls de emergencia? + item.url = item.emergency_urls[0] #Guardamos la url del .Torrent + enlaces_ver = item.emergency_urls[1] #Guardamos los datos iniciales de los Servidores Directos + item.armagedon = True #Marcamos la situación como catastrófica + else: + return itemlist #Salimos + else: + logger.error("ERROR 01: FINDVIDEOS: La Web no responde o la URL es erronea: " + item.url + " / DATA: " + data) + + #Si no hay datos consistentes, llamamos al método de fail_over para que encuentre un canal que esté activo y pueda gestionar el vídeo + item, data = generictools.fail_over_newpct1(item, patron) - if not data: #Si no ha logrado encontrar nada, verificamos si hay servidores + if not data: #Si no ha logrado encontrar nada, verificamos si hay servidores cnt_servidores = 0 item.category = category_servidores #restauramos valores originales item.url = url_servidores @@ -1395,8 +1402,8 @@ def findvideos(item): enlaces_ver = re.compile(patron, re.DOTALL).findall(data_servidores) enlaces_descargar = enlaces_ver - for logo, servidor, idioma, calidad, enlace, title in enlaces_ver: #buscamos enlaces de servidores de ver-online - if ver_enlaces_veronline == 0: #Si no se quiere Ver Online, se sale del bloque + for logo, servidor, idioma, calidad, enlace, title in enlaces_ver: #buscamos enlaces de servidores de ver-online + if ver_enlaces_veronline == 0: #Si no se quiere Ver Online, se sale del bloque break if "ver" in title.lower(): cnt_servidores += 1 @@ -1407,14 +1414,20 @@ def findvideos(item): #Miramos si ha servidores if not data_servidores: #Si no ha logrado encontrar nada nos vamos itemlist.append(item.clone(action='', title="[COLOR yellow]" + item.channel.capitalize() + '[/COLOR]: Ningún canal NewPct1 activo')) - itemlist.append(item.clone(action='', title=item.category + ': ERROR 01: FINDVIDEOS:. La Web no responde o la URL es erronea. Si la Web está activa, reportar el error con el log')) - return itemlist #si no hay más datos, algo no funciona, pintamos lo que tenemos + if item.emergency_urls: #Hay urls de emergencia? + item.url = str(item.emergency_urls[0]).replace ("'", "").replace ("[", "").replace ("]", "") #Guardamos la url del .Torrent + enlaces_ver = item.emergency_urls[1] #Guardamos los datos iniciales de los Servidores Directos + item.armagedon = True #Marcamos la situación como catastrófica + else: + itemlist.append(item.clone(action='', title=item.category + ': ERROR 01: FINDVIDEOS:. La Web no responde o la URL es erronea. Si la Web está activa, reportar el error con el log')) + return itemlist #si no hay más datos, algo no funciona, pintamos lo que tenemos data = data_servidores #restauramos los datos data = unicode(data, "iso-8859-1", errors="replace").encode("utf-8") data = data.replace("$!", "#!").replace("'", "\"").replace("ñ", "ñ").replace("//pictures", "/pictures") + #buscamos el tamaño del .torrent size = scrapertools.find_single_match(data, '