Generictools: mejoras internas
Añadido método "privatedecrypt" (Delta) Añadido método temporal "regenerate_clones": permite regerar la vidoteca donde había dos o más clones de Newpct1 en una película
This commit is contained in:
@@ -25,6 +25,7 @@ from core import filetools
|
|||||||
from core.item import Item
|
from core.item import Item
|
||||||
from platformcode import config, logger, platformtools
|
from platformcode import config, logger, platformtools
|
||||||
from core import tmdb
|
from core import tmdb
|
||||||
|
from lib import jsunpack
|
||||||
|
|
||||||
channel_py = "newpct1"
|
channel_py = "newpct1"
|
||||||
intervenido_judicial = 'Dominio intervenido por la Autoridad Judicial'
|
intervenido_judicial = 'Dominio intervenido por la Autoridad Judicial'
|
||||||
@@ -1773,17 +1774,18 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
canal_org_des_list = []
|
canal_org_des_list = []
|
||||||
json_path_list = []
|
json_path_list = []
|
||||||
emergency_urls_force = False
|
emergency_urls_force = False
|
||||||
|
status_migration = False
|
||||||
|
|
||||||
#if item.ow_force == '1': #Ha podido qudar activado de una pasada anteriores
|
#if item.ow_force == '1': #Ha podido qudar activado de una pasada anteriores
|
||||||
# del item.ow_force
|
# del item.ow_force
|
||||||
# logger.error('** item.ow_force: ' + item.path) #aviso que ha habido una incidencia
|
# logger.error('** item.ow_force: ' + item.path) #aviso que ha habido una incidencia
|
||||||
if it.ow_force == '1': #Ha podido qudar activado de una pasada anteriores
|
if it.ow_force == '1': #Ha podido quedar activado de una pasada anterior
|
||||||
del it.ow_force
|
del it.ow_force
|
||||||
if path and it.contentType != 'movies':
|
if path and it.infoLabels['mediatype'] == 'tvshow':
|
||||||
try:
|
try:
|
||||||
nfo = filetools.join(path, '/tvshow.nfo')
|
nfo = filetools.join(path, '/tvshow.nfo')
|
||||||
filetools.write(nfo, head_nfo + it.tojson()) #escribo el .nfo de la peli por si aborta update
|
filetools.write(nfo, head_nfo + it.tojson()) #escribo el .nfo de la peli por si aborta update
|
||||||
logger.error('** .nfo ACTUALIZADO: it.ow_force: ' + nfo) #aviso que ha habido una incidencia
|
logger.error('** .nfo ACTUALIZADO: it.ow_force: ' + nfo) #aviso que ha habido una incidencia
|
||||||
except:
|
except:
|
||||||
logger.error('** .nfo ERROR actualizar: it.ow_force: ' + nfo) #aviso que ha habido una incidencia
|
logger.error('** .nfo ERROR actualizar: it.ow_force: ' + nfo) #aviso que ha habido una incidencia
|
||||||
logger.error(traceback.format_exc())
|
logger.error(traceback.format_exc())
|
||||||
@@ -1828,6 +1830,9 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
#automáticamente. En el caso de peliculas, se general aquí el json actualizado y se marca el .nfo como actualizado.
|
#automáticamente. En el caso de peliculas, se general aquí el json actualizado y se marca el .nfo como actualizado.
|
||||||
#Cuando en el .json se activa "Borrar", "emergency_urls = 2", se borran todos los enlaces existentes
|
#Cuando en el .json se activa "Borrar", "emergency_urls = 2", se borran todos los enlaces existentes
|
||||||
#Cuando en el .json se activa "Actualizar", "emergency_urls = 3", se actualizan todos los enlaces existentes
|
#Cuando en el .json se activa "Actualizar", "emergency_urls = 3", se actualizan todos los enlaces existentes
|
||||||
|
|
||||||
|
status_migration = regenerate_clones() #TEMPORAL: Reparación de Videoteca con Newpct1
|
||||||
|
|
||||||
"""
|
"""
|
||||||
verify_cached_torrents() #TEMPORAL: verificamos si los .torrents son correctos
|
verify_cached_torrents() #TEMPORAL: verificamos si los .torrents son correctos
|
||||||
try: #Si ha habido errores, vemos la lista y los reparamos
|
try: #Si ha habido errores, vemos la lista y los reparamos
|
||||||
@@ -1904,7 +1909,7 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
logger.error(traceback.format_exc())
|
logger.error(traceback.format_exc())
|
||||||
|
|
||||||
#Ahora tratamos las webs intervenidas, tranformamos la url, el nfo y borramos los archivos obsoletos de la serie
|
#Ahora tratamos las webs intervenidas, tranformamos la url, el nfo y borramos los archivos obsoletos de la serie
|
||||||
if (channel not in intervencion and channel_py_alt not in intervencion and category not in intervencion and channel_alt != 'videolibrary') or not item.infoLabels: #lookup
|
if (channel not in intervencion and channel_py_alt not in intervencion and category not in intervencion and channel_alt != 'videolibrary') or not item.infoLabels or status_migration: #lookup o migración
|
||||||
return (item, it, overwrite) #... el canal/clone está listado
|
return (item, it, overwrite) #... el canal/clone está listado
|
||||||
|
|
||||||
import ast
|
import ast
|
||||||
@@ -2053,32 +2058,35 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
|
|
||||||
#Verificamos que las webs de los canales estén activas antes de borrar los .json, para asegurar que se pueden regenerar
|
#Verificamos que las webs de los canales estén activas antes de borrar los .json, para asegurar que se pueden regenerar
|
||||||
i = 0
|
i = 0
|
||||||
for canal_org_def, canal_des_def, url_total, opt_def, ow_force_def in canal_org_des_list: #pasamos por las "parejas" a borrar
|
canal_org_des_list_ALT = [] #Creamos esta lista para salvar las parejas
|
||||||
|
canal_org_des_list_ALT.extend(canal_org_des_list) #... y borrar de la original las web caidas
|
||||||
|
for canal_org_def, canal_des_def, url_total, opt_def, ow_force_def in canal_org_des_list_ALT: #pasamos por las "parejas" a borrar
|
||||||
if "magnet:" in url_total or type(url_total) != str: #Si la url es un Magnet, o es una lista, pasamos
|
if "magnet:" in url_total or type(url_total) != str: #Si la url es un Magnet, o es una lista, pasamos
|
||||||
i += 1
|
i += 1
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
response = httptools.downloadpage(url_total, only_headers=True)
|
response = httptools.downloadpage(url_total)
|
||||||
except:
|
except:
|
||||||
logger.error(traceback.format_exc())
|
logger.error(traceback.format_exc())
|
||||||
logger.error('Web ' + canal_des_def.upper() + ' ERROR. Regla no procesada: ' + str(canal_org_des_list[i]))
|
logger.error('Web ' + canal_des_def.upper() + ' ERROR. Regla no procesada: ' + str(canal_org_des_list[i]))
|
||||||
item = item_back.clone() #Restauro las imágenes inciales
|
del canal_org_des_list[i] #Borro regla
|
||||||
it = it_back.clone()
|
continue #... y paso a la siguiente
|
||||||
item.torrent_caching_fail = True #Marcamos el proceso como fallido
|
if not response:
|
||||||
return (item, it, False)
|
|
||||||
if not response.sucess:
|
|
||||||
logger.error('Web ' + canal_des_def.upper() + ' INACTIVA. Regla no procesada: ' + str(canal_org_des_list[i]))
|
logger.error('Web ' + canal_des_def.upper() + ' INACTIVA. Regla no procesada: ' + str(canal_org_des_list[i]))
|
||||||
item = item_back.clone() #Restauro las imágenes inciales
|
del canal_org_des_list[i] #Borro regla
|
||||||
it = it_back.clone()
|
continue #... y paso a la siguiente
|
||||||
item.torrent_caching_fail = True #Marcamos el proceso como fallido
|
|
||||||
return (item, it, False)
|
|
||||||
i += 1
|
i += 1
|
||||||
|
if i == 0:
|
||||||
|
item = item_back.clone() #Restauro las imágenes inciales
|
||||||
|
it = it_back.clone()
|
||||||
|
item.torrent_caching_fail = True #Marcamos el proceso como fallido
|
||||||
|
return (item, it, False)
|
||||||
|
|
||||||
# Listamos todos los ficheros de la serie, asi evitamos tener que comprobar si existe uno por uno
|
# Listamos todos los ficheros de la serie, asi evitamos tener que comprobar si existe uno por uno
|
||||||
canal_erase_list = []
|
canal_erase_list = []
|
||||||
from core import videolibrarytools
|
from core import videolibrarytools
|
||||||
raiz, carpetas_series, ficheros = filetools.walk(path).next()
|
raiz, carpetas_series, ficheros = filetools.walk(path).next()
|
||||||
ficheros = [filetools.join(path, f) for f in ficheros] #Almacenamos la lista de archivos de la carpeta
|
ficheros = [filetools.join(path, f) for f in ficheros] #Almacenamos la lista de archivos de la carpeta
|
||||||
#logger.error(ficheros)
|
#logger.error(ficheros)
|
||||||
for archivo in ficheros:
|
for archivo in ficheros:
|
||||||
for canal_org_def, canal_des_def, url_total, opt_def, ow_force_def in canal_org_des_list: #pasamos por las "parejas" a borrar
|
for canal_org_def, canal_des_def, url_total, opt_def, ow_force_def in canal_org_des_list: #pasamos por las "parejas" a borrar
|
||||||
@@ -2089,9 +2097,12 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
if archivo_alt == "''": archivo_alt = "'xyz123'"
|
if archivo_alt == "''": archivo_alt = "'xyz123'"
|
||||||
#logger.error(canal_erase + canal_new + archivo + archivo_alt)
|
#logger.error(canal_erase + canal_new + archivo + archivo_alt)
|
||||||
#Borramos los .json que sean de los canal afectados, incluidos todos los de los clones de newpct1 si éste es el canal
|
#Borramos los .json que sean de los canal afectados, incluidos todos los de los clones de newpct1 si éste es el canal
|
||||||
if canal_erase in archivo or (ow_force_def == 'emerg' and canal_erase_alt in fail_over_list and archivo_alt in fail_over_list):
|
if canal_erase in archivo or (ow_force_def == 'emerg' and canal_erase_alt in fail_over_list and archivo_alt in fail_over_list and it.contentType != 'movie'):
|
||||||
if canal_des_def and it.contentType == 'movie' and not '.torrent' in archivo: #Si es película ...
|
if canal_des_def and it.contentType == 'movie' and not '.torrent' in archivo: #Si es película ...
|
||||||
|
item_json = ''
|
||||||
item_json = Item().fromjson(filetools.read(archivo)) #leemos el .json ante de borrarlo para salvar...
|
item_json = Item().fromjson(filetools.read(archivo)) #leemos el .json ante de borrarlo para salvar...
|
||||||
|
if not item_json: #error al leer el .json. Algo no funciona...
|
||||||
|
continue
|
||||||
title = item_json.title #... el título con su formato
|
title = item_json.title #... el título con su formato
|
||||||
language = item_json.language #... los idiomas, que no están en el .nfo
|
language = item_json.language #... los idiomas, que no están en el .nfo
|
||||||
wanted = item_json.wanted #... y wanted con el título original
|
wanted = item_json.wanted #... y wanted con el título original
|
||||||
@@ -2133,7 +2144,7 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
|
|
||||||
if json_path_list:
|
if json_path_list:
|
||||||
logger.error('** .json LIST: ' + str(json_path_list))
|
logger.error('** .json LIST: ' + str(json_path_list))
|
||||||
for canal_org_def, canal_des_def, url_total, json_path, title, language, wanted, ow_force_def, opt_def, archivo in json_path_list: #pasamos por todos canales
|
for canal_org_def, canal_des_def, url_total, json_path, title, language, wanted, ow_force_def, opt_def, archivo in json_path_list: #pasamos por todos canales
|
||||||
logger.error('** ESCRIBIMOS: ' + json_path)
|
logger.error('** ESCRIBIMOS: ' + json_path)
|
||||||
item_movie.emergency_urls = False
|
item_movie.emergency_urls = False
|
||||||
del item_movie.emergency_urls
|
del item_movie.emergency_urls
|
||||||
@@ -2156,6 +2167,7 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
if not it.emergency_urls: #... lo actualizamos en el .nfo
|
if not it.emergency_urls: #... lo actualizamos en el .nfo
|
||||||
it.emergency_urls = dict() #... iniciamos la variable si no existe
|
it.emergency_urls = dict() #... iniciamos la variable si no existe
|
||||||
it.emergency_urls.update({canal_des_def: True}) #... se marca como activo
|
it.emergency_urls.update({canal_des_def: True}) #... se marca como activo
|
||||||
|
if it.ow_force: del it.ow_force
|
||||||
filetools.write(archivo_nfo, head_nfo + it.tojson()) #actualizo el .nfo de la peli
|
filetools.write(archivo_nfo, head_nfo + it.tojson()) #actualizo el .nfo de la peli
|
||||||
else:
|
else:
|
||||||
logger.error('Error en FINDVIDEOS: ' + archivo + ' / Regla: ' + canal_org_def + ', ' + opt_def + ', ' + ow_force_def)
|
logger.error('Error en FINDVIDEOS: ' + archivo + ' / Regla: ' + canal_org_def + ', ' + opt_def + ', ' + ow_force_def)
|
||||||
@@ -2165,6 +2177,7 @@ def redirect_clone_newpct1(item, head_nfo=None, it=None, path=False, overwrite=F
|
|||||||
del it.emergency_urls
|
del it.emergency_urls
|
||||||
if it.emergency_urls and it.emergency_urls.get(item_movie.channel, False):
|
if it.emergency_urls and it.emergency_urls.get(item_movie.channel, False):
|
||||||
it.emergency_urls.pop(item_movie.channel, None) #borramos la entrada del .nfo
|
it.emergency_urls.pop(item_movie.channel, None) #borramos la entrada del .nfo
|
||||||
|
if it.ow_force: del it.ow_force
|
||||||
filetools.write(archivo_nfo, head_nfo + it.tojson()) #actualizo el .nfo de la peli
|
filetools.write(archivo_nfo, head_nfo + it.tojson()) #actualizo el .nfo de la peli
|
||||||
|
|
||||||
filetools.write(json_path, item_movie.tojson()) #Salvamos el nuevo .json de la película
|
filetools.write(json_path, item_movie.tojson()) #Salvamos el nuevo .json de la película
|
||||||
@@ -2200,7 +2213,7 @@ def verify_cached_torrents():
|
|||||||
json_error_path = filetools.join(config.get_runtime_path(), 'error_cached_torrents.json')
|
json_error_path = filetools.join(config.get_runtime_path(), 'error_cached_torrents.json')
|
||||||
json_error_path_BK = filetools.join(config.get_runtime_path(), 'error_cached_torrents_BK.json')
|
json_error_path_BK = filetools.join(config.get_runtime_path(), 'error_cached_torrents_BK.json')
|
||||||
|
|
||||||
videolibrary_path = config.get_videolibrary_path() #Calculamos el path absoluto a partir de la Videoteca
|
videolibrary_path = config.get_videolibrary_path() #Calculamos el path absoluto a partir de la Videoteca
|
||||||
movies = config.get_setting("folder_movies")
|
movies = config.get_setting("folder_movies")
|
||||||
series = config.get_setting("folder_tvshows")
|
series = config.get_setting("folder_tvshows")
|
||||||
torrents_movies = filetools.join(videolibrary_path, config.get_setting("folder_movies")) #path de CINE
|
torrents_movies = filetools.join(videolibrary_path, config.get_setting("folder_movies")) #path de CINE
|
||||||
@@ -2273,6 +2286,170 @@ def verify_cached_torrents():
|
|||||||
logger.error('Lista de .torrents en ERROR: ' + str(errores))
|
logger.error('Lista de .torrents en ERROR: ' + str(errores))
|
||||||
|
|
||||||
|
|
||||||
|
def regenerate_clones():
|
||||||
|
logger.info()
|
||||||
|
import json
|
||||||
|
from core import videolibrarytools
|
||||||
|
|
||||||
|
"""
|
||||||
|
Regenera los archivos .json que ha sido machacado con la migración. También borrar los archivos tvshow.nfo en
|
||||||
|
películas.
|
||||||
|
|
||||||
|
Método para uso temporal y controlado
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
#Localiza los paths donde dejar el archivo .json de control, y de la Videoteca
|
||||||
|
json_path = filetools.exists(filetools.join(config.get_runtime_path(), 'verify_cached_torrents.json'))
|
||||||
|
if json_path:
|
||||||
|
logger.info('Videoteca reparada anteriormente: NOS VAMOS')
|
||||||
|
return False
|
||||||
|
json_path = filetools.join(config.get_runtime_path(), 'verify_cached_torrents.json')
|
||||||
|
filetools.write(json_path, json.dumps({"CINE_verify": True})) #Evita que se lance otro proceso simultaneo
|
||||||
|
json_error_path = filetools.join(config.get_runtime_path(), 'error_cached_torrents.json')
|
||||||
|
json_error_path_BK = filetools.join(config.get_runtime_path(), 'error_cached_torrents_BK.json')
|
||||||
|
|
||||||
|
videolibrary_path = config.get_videolibrary_path() #Calculamos el path absoluto a partir de la Videoteca
|
||||||
|
movies = config.get_setting("folder_movies")
|
||||||
|
series = config.get_setting("folder_tvshows")
|
||||||
|
torrents_movies = filetools.join(videolibrary_path, config.get_setting("folder_movies")) #path de CINE
|
||||||
|
torrents_series = filetools.join(videolibrary_path, config.get_setting("folder_tvshows")) #path de SERIES
|
||||||
|
|
||||||
|
#Cargamos en .json de Newpct1 para ver las listas de valores en settings
|
||||||
|
fail_over_list = channeltools.get_channel_json(channel_py)
|
||||||
|
for settings in fail_over_list['settings']: #Se recorren todos los settings
|
||||||
|
if settings['id'] == "clonenewpct1_channels_list": #Encontramos en setting
|
||||||
|
fail_over_list = settings['default'] #Carga lista de clones
|
||||||
|
|
||||||
|
#Inicializa variables
|
||||||
|
torren_list = []
|
||||||
|
torren_list.append(torrents_movies)
|
||||||
|
#torren_list.append(torrents_series)
|
||||||
|
i = 0
|
||||||
|
j = 0
|
||||||
|
k = 0
|
||||||
|
descomprimidos = []
|
||||||
|
errores = []
|
||||||
|
json_data = dict()
|
||||||
|
|
||||||
|
#Recorre las carpetas de CINE y SERIES de la Videoteca, leyendo, descomprimiendo y regrabando los archivos .torrent
|
||||||
|
for contentType in torren_list:
|
||||||
|
for root, folders, files in filetools.walk(contentType):
|
||||||
|
nfo = ''
|
||||||
|
newpct1 = False
|
||||||
|
file_list = str(files)
|
||||||
|
logger.error(file_list)
|
||||||
|
|
||||||
|
#Borra los archivos Tvshow.nfo y verifica si el .nfo tiene más de un canal y uno es clone Newpct1
|
||||||
|
for file in files:
|
||||||
|
#logger.info('file - nfos: ' + file)
|
||||||
|
if 'tvshow.nfo' in file:
|
||||||
|
file_path = filetools.join(root, 'tvshow.nfo')
|
||||||
|
filetools.remove(file_path)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if '.nfo' in file:
|
||||||
|
peli_name = file.replace('.nfo', '')
|
||||||
|
nfo = ''
|
||||||
|
try:
|
||||||
|
head_nfo, nfo = videolibrarytools.read_nfo(filetools.join(root, file))
|
||||||
|
except:
|
||||||
|
logger.error('** NFO: error de lectura en: ' + file)
|
||||||
|
break
|
||||||
|
if not nfo:
|
||||||
|
logger.error('** NFO: error de lectura en: ' + file)
|
||||||
|
break
|
||||||
|
if nfo.ow_force: #Si tiene ow_force lo quitamos para evitar futuros problemas
|
||||||
|
del nfo.ow_force
|
||||||
|
try:
|
||||||
|
filetools.write(filetools.join(root, file), head_nfo + nfo.tojson()) #actualizo el .nfo
|
||||||
|
except:
|
||||||
|
logger.error('** NFO: error de escritura en: ' + file)
|
||||||
|
break
|
||||||
|
|
||||||
|
if '.torrent' not in file_list and nfo.emergency_urls:
|
||||||
|
del nfo.emergency_urls #Si tiene emergency_urls, lo reseteamos
|
||||||
|
try:
|
||||||
|
filetools.write(filetools.join(root, file), head_nfo + nfo.tojson()) #actualizo el .nfo
|
||||||
|
except:
|
||||||
|
logger.error('** NFO: error de escritura en: ' + file)
|
||||||
|
break
|
||||||
|
newpct1 = True #marcamos par a resetar los .jsons
|
||||||
|
|
||||||
|
if len(nfo.library_urls) > 1: #Tiene más de un canal?
|
||||||
|
for canal, url in nfo.library_urls.items():
|
||||||
|
canal_json = "[%s].json" % canal
|
||||||
|
if canal_json not in file_list: #Canal zomby, lo borramos
|
||||||
|
logger.error('pop: ' + canal)
|
||||||
|
nfo.library_urls.pop(canal, None)
|
||||||
|
if nfo.emergency_urls:
|
||||||
|
del nfo.emergency_urls #Si tiene emergency_urls, lo reseteamos
|
||||||
|
try:
|
||||||
|
filetools.write(filetools.join(root, file), head_nfo + nfo.tojson()) #actualizo el .nfo
|
||||||
|
except:
|
||||||
|
logger.error('** NFO: error de escritura en: ' + file)
|
||||||
|
break
|
||||||
|
newpct1 = True #marcamos par a resetar los .jsons
|
||||||
|
|
||||||
|
canal_nwepct1 = "'%s'" % canal
|
||||||
|
if canal_nwepct1 in fail_over_list: #Algún canal es clone de Newpct1
|
||||||
|
newpct1 = True #Si es que sí, lo marcamos
|
||||||
|
if nfo.emergency_urls:
|
||||||
|
del nfo.emergency_urls #Si tiene emergency_urls, lo reseteamos
|
||||||
|
try:
|
||||||
|
filetools.write(filetools.join(root, file), head_nfo + nfo.tojson()) #actualizo el .nfo
|
||||||
|
except:
|
||||||
|
logger.error('** NFO: error de escritura en: ' + file)
|
||||||
|
break
|
||||||
|
|
||||||
|
#Zona para arrelgar los archivos .json
|
||||||
|
if not newpct1:
|
||||||
|
continue
|
||||||
|
for file in files:
|
||||||
|
file_path = filetools.join(root, file)
|
||||||
|
if '.json' in file:
|
||||||
|
logger.info('** file: ' + file)
|
||||||
|
canal_json = scrapertools.find_single_match(file, '\[(\w+)\].json')
|
||||||
|
if canal_json not in nfo.library_urls:
|
||||||
|
filetools.remove(file_path) #borramos el .json es un zomby
|
||||||
|
item_movie = ''
|
||||||
|
try:
|
||||||
|
item_movie = Item().fromjson(filetools.read(file_path)) #leemos el .json
|
||||||
|
except:
|
||||||
|
logger.error('** JSON: error de lectura en: ' + file)
|
||||||
|
continue
|
||||||
|
if not item_movie:
|
||||||
|
logger.error('** JSON: error de lectura en: ' + file)
|
||||||
|
continue
|
||||||
|
if item_movie.emergency_urls: del item_movie.emergency_urls
|
||||||
|
item_movie.channel = canal_json #mombre del canal
|
||||||
|
item_movie.category = canal_json.capitalize() #categoría
|
||||||
|
item_movie.url = nfo.library_urls[canal_json] #url
|
||||||
|
if scrapertools.find_single_match(item_movie.title, '(.*?)\[\d+.\d+\s*.\s*B\]'):
|
||||||
|
item_movie.title = scrapertools.find_single_match(item_movie.title, '(.*?)\[\d+.\d+\s*.\s*B\]').strip() #quitamos Size
|
||||||
|
if item_movie.added_replacing: del item_movie.added_replacing #quitamos traza del canal reemplazado
|
||||||
|
try:
|
||||||
|
filetools.write(file_path, item_movie.tojson()) #Salvamos el nuevo .json de la película
|
||||||
|
except:
|
||||||
|
logger.error('** JSON: error de escritura en: ' + file)
|
||||||
|
else:
|
||||||
|
errores += [file]
|
||||||
|
if '.torrent' in file:
|
||||||
|
filetools.remove(file_path) #borramos los .torrent salvados
|
||||||
|
|
||||||
|
|
||||||
|
logger.error('** Lista de peliculas reparadas: ' + str(errores))
|
||||||
|
filetools.write(json_error_path, json.dumps(json_data))
|
||||||
|
filetools.write(json_error_path_BK, json.dumps(json_data))
|
||||||
|
filetools.write(json_path, json.dumps({"CINE_verify": True}))
|
||||||
|
except:
|
||||||
|
filetools.remove(json_path) #borramos el bloqueo para que se pueda lanzar de nuevo
|
||||||
|
logger.error('Error en el proceso de REPARACIÓN de Videoteca de CINE')
|
||||||
|
logger.error(traceback.format_exc())
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def dejuice(data):
|
def dejuice(data):
|
||||||
logger.info()
|
logger.info()
|
||||||
# Metodo para desobfuscar datos de JuicyCodes
|
# Metodo para desobfuscar datos de JuicyCodes
|
||||||
@@ -2286,3 +2463,22 @@ def dejuice(data):
|
|||||||
dejuiced = jsunpack.unpack(b64_decode)
|
dejuiced = jsunpack.unpack(b64_decode)
|
||||||
|
|
||||||
return dejuiced
|
return dejuiced
|
||||||
|
|
||||||
|
|
||||||
|
def privatedecrypt(url, headers=None):
|
||||||
|
|
||||||
|
data = httptools.downloadpage(url, headers=headers, follow_redirects=False).data
|
||||||
|
data = re.sub(r'\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||||
|
packed = scrapertools.find_single_match(data, '(eval\(.*?);var')
|
||||||
|
unpacked = jsunpack.unpack(packed)
|
||||||
|
server = scrapertools.find_single_match(unpacked, "src:.'(http://\D+)/")
|
||||||
|
id = scrapertools.find_single_match(unpacked, "src:.'http://\D+/.*?description:.'(.*?).'")
|
||||||
|
if server == '':
|
||||||
|
if 'powvideo' in unpacked:
|
||||||
|
id = scrapertools.find_single_match(unpacked, ",description:.'(.*?).'")
|
||||||
|
server = 'https://powvideo.net'
|
||||||
|
if server != '' and id != '':
|
||||||
|
url = '%s/%s' % (server, id)
|
||||||
|
else:
|
||||||
|
url = ''
|
||||||
|
return url
|
||||||
Reference in New Issue
Block a user