MejorTorrent: reparación desactivación automática del canal

This commit is contained in:
Kingbox
2018-07-19 18:41:07 +02:00
parent 2d1cca2918
commit 7ee6759948
3 changed files with 23 additions and 17 deletions

View File

@@ -810,19 +810,19 @@ def episodios(item):
# Carga la página
try:
data = re.sub(r"\n|\r|\t|\s{2}|(<!--.*?-->)", "", httptools.downloadpage(item.url).data)
data_alt = re.sub(r"\n|\r|\t|\s{2}|(<!--.*?-->)", "", httptools.downloadpage(item.url).data)
except: #Algún error de proceso, salimos
logger.error("ERROR 01: EPISODIOS: La Web no responde o la URL es erronea" + item.url)
itemlist.append(item.clone(action='', title=item.channel.capitalize() + ': ERROR 01: EPISODIOS:. La Web no responde o la URL es erronea. Si la Web está activa, reportar el error con el log'))
return itemlist
#Datos para crear el Post. Usado para documentales
total_capis = scrapertools.find_single_match(data, "<input type='hidden' name='total_capis' value='(\d+)'>")
tabla = scrapertools.find_single_match(data, "<input type='hidden' name='tabla' value='([^']+)'>")
titulo_post = scrapertools.find_single_match(data, "<input type='hidden' name='titulo' value='([^']+)'>")
total_capis = scrapertools.find_single_match(data_alt, "<input type='hidden' name='total_capis' value='(\d+)'>")
tabla = scrapertools.find_single_match(data_alt, "<input type='hidden' name='tabla' value='([^']+)'>")
titulo_post = scrapertools.find_single_match(data_alt, "<input type='hidden' name='titulo' value='([^']+)'>")
# Selecciona en tramo que nos interesa
data = scrapertools.find_single_match(data,
data = scrapertools.find_single_match(data_alt,
"(<form name='episodios' action='secciones.php\?sec=descargas\&ap=contar_varios' method='post'>.*?)</form>")
# Prepara el patrón de búsqueda de: URL, título, fechas y dos valores mas sin uso
@@ -836,9 +836,9 @@ def episodios(item):
matches = re.compile(patron, re.DOTALL).findall(data)
if not matches: #error
item = generictools.web_intervenida(item, data) #Verificamos que no haya sido clausurada
item = generictools.web_intervenida(item, data_alt) #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
item, itemlist = generictools.post_tmdb_episodios(item, itemlist) #Llamamos al método para el pintado del error
return itemlist #Salimos
logger.error("ERROR 02: EPISODIOS: Ha cambiado la estructura de la Web " + " / PATRON: " + patron + " / DATA: " + data)

View File

@@ -529,10 +529,9 @@ def listado_busqueda(item):
return itemlist #si no hay más datos, algo no funciona, pintamos lo que tenemos
cnt_next += 1
# busca series y Novedades
patron = '<tr.*?><a href="([^"]+)" style="[^>]+>([^<]+)<\/a>' #url
patron += '<span style="[^"]+">\(([^>]+)\)<\/a><\/td>' #título
patron += '<td align="[^"]+" width="[^"]+">([^>]+)<\/td><\/tr>' #calidad y tipo de contenido
patron = '<a href="([^"]+)" style="[^>]+>([^<]+)<\/a>' #url y título
patron += '<span style="[^"]+">\(([^>]+)?\)<\/a><\/td>' #calidad
patron += '<td align="[^"]+" width="[^"]+">([^>]+)<\/td><\/tr>' #tipo de contenido
matches_alt = scrapertools.find_multiple_matches(data, patron)
i = 0
@@ -846,8 +845,7 @@ def findvideos(item):
def episodios(item):
logger.info()
itemlist = []
logger.debug(item)
# Obtener la información actualizada de la Serie. TMDB es imprescindible para Videoteca
if not item.infoLabels['tmdb_id']:
tmdb.set_infoLabels(item, True)

View File

@@ -417,6 +417,8 @@ def post_tmdb_episodios(item, itemlist):
del item.url_alt
if item.title_from_channel:
del item.title_from_channel
if item.ow_force:
del item.ow_force
for item_local in itemlist: #Recorremos el Itemlist generado por el canal
if item_local.add_videolibrary:
@@ -443,6 +445,8 @@ def post_tmdb_episodios(item, itemlist):
del item_local.channel_host
if item_local.intervencion:
del item_local.intervencion
if item_local.ow_force:
del item_local.ow_force
#logger.debug(item_local)
#Ajustamos el nombre de la categoría si es un clone de NewPct1
@@ -1036,10 +1040,10 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, overwrite=False, path=F
- ow_force: indicador para la acción de "videolibrary_service.py". Puede crear la variable item.ow_force:
- force: indica al canal que analize toda la serie y que videolibrary_service la reescriba
- auto: indica a videolibrary_service que la reescriba
- no: no acción especial para videolibrary_service
- no: no acción para videolibrary_service, solo redirige en visionado de videolibrary
ejemplo: ('1', 'mejortorrent', 'mejortorrent1', 'http://www.mejortorrent.com/', 'https://mejortorrent1.com/', 'auto')
La llamada recibe el parámetro Item, el .nfoy los devuleve actualizados, así como opcionalmente el parámetro "overwrite· que puede forzar la reescritura de todos los archivos de la serie
La llamada recibe el parámetro Item, el .nfo y los devuleve actualizados, así como opcionalmente el parámetro "overwrite· que puede forzar la reescritura de todos los archivos de la serie, y el parámetro "path" si viene de videolibrary_service
"""
if not it:
@@ -1078,12 +1082,15 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, overwrite=False, path=F
if item.contentType == "list": #Si viene de Videolibrary, le cambiamos ya el canal
if item.channel != channel_py:
item.channel = canal_des #Cambiamos el canal. Si es clone, lo hace el canal
if item.contentType not in content_inc:
continue #Salimos sin hacer nada más. item está casi vacío
if item.contentType not in content_inc and "*" not in content_inc: #Está el contenido el la lista de incluidos
continue
if item.contentType in content_exc: #Es esta nuestra entrada?
if item.contentType in content_exc: #Está el contenido excluido?
continue
if channel_enabled and canal_org != canal_des: #Si el canal está activo, puede ser solo...
continue #... una intervención que afecte solo a una región
if ow_force == 'no' and path != False: #Queremos que el canal solo visualice sin migración?
continue #Salimos sin tocas archivos
item.url = item.url.replace(url_org, url_des) #reemplzamos una parte de url
if patron1: #Hay expresión regex?
url = scrapertools.find_single_match(item.url, patron1) #La aplicamos a url
@@ -1117,6 +1124,7 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, overwrite=False, path=F
if ow_force in ['force', 'auto']: #Sobreescribir la series?
overwrite = ow_force_param #Sí, lo marcamos
if item.contentType in ['tvshow', 'season'] and it.library_urls:
if path == False:
TVSHOWS_PATH = item.path