diff --git a/core/downloader.py b/core/downloader.py index ddcc8bac..ea918462 100644 --- a/core/downloader.py +++ b/core/downloader.py @@ -92,9 +92,9 @@ class Downloader: # Funciones def start_dialog(self, title=config.get_localized_string(60200)): from platformcode import platformtools - progreso = platformtools.dialog_progress_bg(title, config.get_localized_string(60201)) + progreso = platformtools.dialog_progress(title, config.get_localized_string(60201)) self.start() - while self.state == self.states.downloading: + while self.state == self.states.downloading and not progreso.iscanceled(): time.sleep(0.1) line1 = "%s" % (self.filename) line2 = config.get_localized_string(59983) % ( @@ -102,7 +102,10 @@ class Downloader: self.speed[1], self.speed[2], self.connections[0], self.connections[1]) line3 = config.get_localized_string(60202) % (self.remaining_time) - progreso.update(int(self.progress), line1, line2 + line3) + progreso.update(int(self.progress), line1, line2, line3) + if self.state == self.states.downloading: + self.stop() + progreso.close() def start(self): if self._state == self.states.error: return diff --git a/specials/downloads.py b/specials/downloads.py index 1e12852f..0673d1d6 100644 --- a/specials/downloads.py +++ b/specials/downloads.py @@ -7,7 +7,6 @@ import os import re import time import unicodedata -from threading import Thread from core import filetools, jsontools, scraper, scrapertools, servertools, videolibrarytools, support from core.downloader import Downloader @@ -245,8 +244,7 @@ def menu(item): # Opcion inicaiar descarga if opciones[seleccion] == op[0]: - th = Thread(target=start_download, args=(item,)) - th.start() + start_download(item) # Elegir Servidor if opciones[seleccion] == op[3]: @@ -345,14 +343,14 @@ def get_match_list(data, match_list, order_list=None, only_ascii=False, ignoreca { "ID1" : ["Cadena 1", "Cadena 2", "Cadena 3"], "ID2" : ["Cadena 4", "Cadena 5", "Cadena 6"] } - + El diccionario no pude contener una misma cadena de busqueda en varías IDs. - + La busqueda se realiza por orden de tamaño de cadena de busqueda (de mas larga a mas corta) si una cadena coincide, se elimina de la cadena a buscar para las siguientes, para que no se detecten dos categorias si una cadena es parte de otra: - por ejemplo: "Idioma Español" y "Español" si la primera aparece en la cadena "Pablo sabe hablar el Idioma Español" + por ejemplo: "Idioma Español" y "Español" si la primera aparece en la cadena "Pablo sabe hablar el Idioma Español" coincidira con "Idioma Español" pero no con "Español" ya que la coincidencia mas larga tiene prioridad. - + """ match_dict = dict() matches = [] @@ -402,7 +400,7 @@ def get_match_list(data, match_list, order_list=None, only_ascii=False, ignoreca def sort_method(item): """ - Puntua cada item en funcion de varios parametros: + Puntua cada item en funcion de varios parametros: @type item: item @param item: elemento que se va a valorar. @return: puntuacion otenida @@ -469,7 +467,7 @@ def download_from_url(url, item): d.start_dialog(config.get_localized_string(60332)) # Descarga detenida. Obtenemos el estado: - # Se ha producido un error en la descarga + # Se ha producido un error en la descarga if d.state == d.states.error: logger.info("Error trying to download %s" % (url)) status = STATUS_CODES.error @@ -670,7 +668,7 @@ def start_download(item): def get_episodes(item): logger.info("contentAction: %s | contentChannel: %s | contentType: %s" % ( item.contentAction, item.contentChannel, item.contentType)) - + # El item que pretendemos descargar YA es un episodio if item.contentType == "episode": episodes = [item.clone()]