initial background downloader support

This commit is contained in:
marco
2019-06-17 19:56:36 +02:00
parent a0d0c9e855
commit f676ab0fb4
2 changed files with 14 additions and 14 deletions

View File

@@ -92,9 +92,9 @@ class Downloader:
# Funciones # Funciones
def start_dialog(self, title=config.get_localized_string(60200)): def start_dialog(self, title=config.get_localized_string(60200)):
from platformcode import platformtools from platformcode import platformtools
progreso = platformtools.dialog_progress(title, config.get_localized_string(60201)) progreso = platformtools.dialog_progress_bg(title, config.get_localized_string(60201))
self.start() self.start()
while self.state == self.states.downloading and not progreso.iscanceled(): while self.state == self.states.downloading:
time.sleep(0.1) time.sleep(0.1)
line1 = "%s" % (self.filename) line1 = "%s" % (self.filename)
line2 = config.get_localized_string(59983) % ( line2 = config.get_localized_string(59983) % (
@@ -102,10 +102,7 @@ class Downloader:
self.speed[1], self.speed[2], self.connections[0], self.connections[1]) self.speed[1], self.speed[2], self.connections[0], self.connections[1])
line3 = config.get_localized_string(60202) % (self.remaining_time) 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): def start(self):
if self._state == self.states.error: return if self._state == self.states.error: return

View File

@@ -7,12 +7,14 @@ import os
import re import re
import time import time
import unicodedata import unicodedata
from threading import Thread
from core import filetools, jsontools, scraper, scrapertools, servertools, videolibrarytools, support from core import filetools, jsontools, scraper, scrapertools, servertools, videolibrarytools, support
from core.downloader import Downloader from core.downloader import Downloader
from core.item import Item from core.item import Item
from platformcode import config, logger from platformcode import config, logger
from platformcode import platformtools from platformcode import platformtools
from platformcode.launcher import downloaderObj
STATUS_COLORS = {0: "orange", 1: "orange", 2: "green", 3: "red"} STATUS_COLORS = {0: "orange", 1: "orange", 2: "green", 3: "red"}
STATUS_CODES = type("StatusCode", (), {"stoped": 0, "canceled": 1, "completed": 2, "error": 3}) STATUS_CODES = type("StatusCode", (), {"stoped": 0, "canceled": 1, "completed": 2, "error": 3})
@@ -244,7 +246,8 @@ def menu(item):
# Opcion inicaiar descarga # Opcion inicaiar descarga
if opciones[seleccion] == op[0]: if opciones[seleccion] == op[0]:
start_download(item) th = Thread(target=start_download, args=(item,))
th.start()
# Elegir Servidor # Elegir Servidor
if opciones[seleccion] == op[3]: if opciones[seleccion] == op[3]:
@@ -343,14 +346,14 @@ def get_match_list(data, match_list, order_list=None, only_ascii=False, ignoreca
{ "ID1" : ["Cadena 1", "Cadena 2", "Cadena 3"], { "ID1" : ["Cadena 1", "Cadena 2", "Cadena 3"],
"ID2" : ["Cadena 4", "Cadena 5", "Cadena 6"] "ID2" : ["Cadena 4", "Cadena 5", "Cadena 6"]
} }
El diccionario no pude contener una misma cadena de busqueda en varías IDs. 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, 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: 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. coincidira con "Idioma Español" pero no con "Español" ya que la coincidencia mas larga tiene prioridad.
""" """
match_dict = dict() match_dict = dict()
matches = [] matches = []
@@ -400,7 +403,7 @@ def get_match_list(data, match_list, order_list=None, only_ascii=False, ignoreca
def sort_method(item): def sort_method(item):
""" """
Puntua cada item en funcion de varios parametros: Puntua cada item en funcion de varios parametros:
@type item: item @type item: item
@param item: elemento que se va a valorar. @param item: elemento que se va a valorar.
@return: puntuacion otenida @return: puntuacion otenida
@@ -467,7 +470,7 @@ def download_from_url(url, item):
d.start_dialog(config.get_localized_string(60332)) d.start_dialog(config.get_localized_string(60332))
# Descarga detenida. Obtenemos el estado: # 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: if d.state == d.states.error:
logger.info("Error trying to download %s" % (url)) logger.info("Error trying to download %s" % (url))
status = STATUS_CODES.error status = STATUS_CODES.error
@@ -668,7 +671,7 @@ def start_download(item):
def get_episodes(item): def get_episodes(item):
logger.info("contentAction: %s | contentChannel: %s | contentType: %s" % ( logger.info("contentAction: %s | contentChannel: %s | contentType: %s" % (
item.contentAction, item.contentChannel, item.contentType)) item.contentAction, item.contentChannel, item.contentType))
# El item que pretendemos descargar YA es un episodio # El item que pretendemos descargar YA es un episodio
if item.contentType == "episode": if item.contentType == "episode":
episodes = [item.clone()] episodes = [item.clone()]