From 5730cb6e7ba30df747b1336c0d007f84c6dae13a Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Wed, 13 Feb 2019 13:59:56 +0100 Subject: [PATCH] Torrents: soporte de .torrent en archivos .zip y/o con POST --- plugin.video.alfa/channels/mejortorrent1.json | 2 +- plugin.video.alfa/channels/mejortorrent1.py | 59 +++++++----- plugin.video.alfa/core/videolibrarytools.py | 90 ++++++++++++++++--- plugin.video.alfa/core/ziptools.py | 9 +- plugin.video.alfa/lib/generictools.py | 8 +- .../platformcode/platformtools.py | 8 +- 6 files changed, 132 insertions(+), 44 deletions(-) diff --git a/plugin.video.alfa/channels/mejortorrent1.json b/plugin.video.alfa/channels/mejortorrent1.json index c5d2aa2f..410891e3 100644 --- a/plugin.video.alfa/channels/mejortorrent1.json +++ b/plugin.video.alfa/channels/mejortorrent1.json @@ -18,7 +18,7 @@ "id": "domain_name", "type": "text", "label": "URL actual de la Web Mejor Torrent", - "default": "https://mejortorrent1.com/", + "default": "https://mejortorrent1.net/", "enabled": true, "visible": true }, diff --git a/plugin.video.alfa/channels/mejortorrent1.py b/plugin.video.alfa/channels/mejortorrent1.py index 23062782..1c82174a 100644 --- a/plugin.video.alfa/channels/mejortorrent1.py +++ b/plugin.video.alfa/channels/mejortorrent1.py @@ -809,10 +809,10 @@ def listado_busqueda(item): def findvideos(item): logger.info() itemlist = [] - itemlist_t = [] #Itemlist total de enlaces - itemlist_f = [] #Itemlist de enlaces filtrados + itemlist_t = [] #Itemlist total de enlaces + itemlist_f = [] #Itemlist de enlaces filtrados if not item.language: - item.language = ['CAST'] #Castellano por defecto + item.language = ['CAST'] #Castellano por defecto matches = [] #logger.debug(item) @@ -827,7 +827,7 @@ def findvideos(item): #Si es un lookup para cargar las urls de emergencia en la Videoteca... if item.videolibray_emergency_urls: item.emergency_urls = [] - item.emergency_urls.append([]) #Reservamos el espacio para los .torrents locales + item.emergency_urls.append([]) #Reservamos el espacio para los .torrents locales #Bajamos los datos de la página de todo menos de Documentales y Varios if not item.post: @@ -836,7 +836,7 @@ def findvideos(item): data = data.replace('"', "'") patron = "
', '_').replace('|', '_').replace('"', '_').replace('?', '_').replace('*', '_') + logger.info("name=%s" % nameo) if not name.endswith('/'): logger.info("no es un directorio") try: @@ -62,9 +63,9 @@ class ziptools: shutil.copy2(outfilename, os.path.join(backup, os.path.basename(outfilename))) outfile = open(outfilename, 'wb') - outfile.write(zf.read(name)) + outfile.write(zf.read(nameo)) except: - logger.error("Error en fichero " + name) + logger.error("Error en fichero " + nameo) def _createstructure(self, file, dir): self._makedirs(self._listdirs(file), dir) diff --git a/plugin.video.alfa/lib/generictools.py b/plugin.video.alfa/lib/generictools.py index 75945af6..2c07d74c 100644 --- a/plugin.video.alfa/lib/generictools.py +++ b/plugin.video.alfa/lib/generictools.py @@ -1217,7 +1217,7 @@ def post_tmdb_findvideos(item, itemlist): return (item, itemlist) -def get_torrent_size(url, data_torrent=False): +def get_torrent_size(url, referer=None, post=None, data_torrent=False): logger.info() from core import videolibrarytools @@ -1230,6 +1230,8 @@ def get_torrent_size(url, data_torrent=False): Llamada: generictools.get_torrent_size(url, data_torrent=False) Entrada: url: url del archivo .torrent + Entrada: referer: url de referer en caso de llamada con post + Entrada: post: contenido del post en caso de llamada con post Entrada: data_torrent: Flag por si se quiere el contenido del .torretn de vuelta Salida: size: str con el tamaño y tipo de medida ( MB, GB, etc) Salida: torrent: dict() con el contenido del .torrent (opcional) @@ -1309,11 +1311,11 @@ def get_torrent_size(url, data_torrent=False): #urllib.urlretrieve(url, torrents_path + "/generictools.torrent") #desacargamos el .torrent a la carpeta #torrent_file = open(torrents_path + "/generictools.torrent", "rb").read() #leemos el .torrent - torrents_path, torrent_file = videolibrarytools.caching_torrents(url, timeout=2, lookup=True, data_torrent=True) + torrents_path, torrent_file = videolibrarytools.caching_torrents(url, referer=referer, post=post, timeout=2, lookup=True, data_torrent=True) if not torrent_file: if data_torrent: return (size, torrent) - return size #Si hay un error, devolvemos el "size" y "torrent" vacíos + return size #Si hay un error, devolvemos el "size" y "torrent" vacíos torrent = decode(torrent_file) #decodificamos el .torrent diff --git a/plugin.video.alfa/platformcode/platformtools.py b/plugin.video.alfa/platformcode/platformtools.py index 51140971..eda11d9a 100644 --- a/plugin.video.alfa/platformcode/platformtools.py +++ b/plugin.video.alfa/platformcode/platformtools.py @@ -1109,6 +1109,8 @@ def play_torrent(item, xlistitem, mediaurl): url = '' url_stat = False torrents_path = '' + referer = None + post = None videolibrary_path = config.get_videolibrary_path() #Calculamos el path absoluto a partir de la Videoteca if videolibrary_path.lower().startswith("smb://"): #Si es una conexión SMB, usamos userdata local videolibrary_path = config.get_data_path() #Calculamos el path absoluto a partir de Userdata @@ -1124,7 +1126,11 @@ def play_torrent(item, xlistitem, mediaurl): timeout = 10 if item.torrent_alt: timeout = 5 - url = videolibrarytools.caching_torrents(item.url, torrents_path=torrents_path, timeout=timeout) #Descargamos el .torrent + #Si es una llamada con POST, lo preparamos + if item.referer: referer = item.referer + if item.post: post = item.post + #Descargamos el .torrent + url = videolibrarytools.caching_torrents(item.url, referer, post, torrents_path=torrents_path, timeout=timeout) if url: url_stat = True item.url = url