Merge remote-tracking branch 'alfa-addon/master' into explora

This commit is contained in:
unknown
2018-07-04 21:17:11 -03:00
72 changed files with 25017 additions and 3871 deletions
+546 -546
View File
File diff suppressed because it is too large Load Diff
+13 -1
View File
@@ -18,6 +18,9 @@ from core.cloudflare import Cloudflare
from platformcode import config, logger
from platformcode.logger import WebErrorException
## Obtiene la versión del addon
__version = config.get_addon_version()
cookies_lock = Lock()
cj = cookielib.MozillaCookieJar()
@@ -31,6 +34,10 @@ default_headers["Accept-Language"] = "es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3"
default_headers["Accept-Charset"] = "UTF-8"
default_headers["Accept-Encoding"] = "gzip"
# Tiempo máximo de espera para downloadpage, si no se especifica nada
HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT = config.get_setting('httptools_timeout', default=15)
if HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT == 0: HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT = None
def get_url_headers(url):
domain_cookies = cj._cookies.get("." + urlparse.urlparse(url)[1], {}).get("/", {})
@@ -122,8 +129,11 @@ def downloadpage(url, post=None, headers=None, timeout=None, follow_redirects=Tr
url = urllib.quote(url, safe="%/:=&?~#+!$,;'@()*[]")
# Limitar tiempo de descarga si no se ha pasado timeout y hay un valor establecido en la variable global
if timeout is None and HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT is not None: timeout = HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT
logger.info("----------------------------------------------")
logger.info("downloadpage")
logger.info("downloadpage Alfa: %s" %__version)
logger.info("----------------------------------------------")
logger.info("Timeout: %s" % timeout)
logger.info("URL: " + url)
@@ -270,3 +280,5 @@ class NoRedirectHandler(urllib2.HTTPRedirectHandler):
http_error_301 = http_error_302
http_error_303 = http_error_302
http_error_307 = http_error_302
+22 -23
View File
@@ -21,10 +21,10 @@ def find_and_set_infoLabels(item):
scraper = None
# logger.debug("item:\n" + item.tostring('\n'))
list_opciones_cuadro = ["Introducir otro nombre", "Completar información"]
list_opciones_cuadro = [config.get_localized_string(60223), config.get_localized_string(60224)]
# Si se añaden más scrapers hay q declararlos aqui-> "modulo_scraper": "Texto_en_cuadro"
scrapers_disponibles = {'tmdb': "Buscar en TheMovieDB.org",
'tvdb': "Buscar en TheTvDB.com"}
scrapers_disponibles = {'tmdb': config.get_localized_string(60225),
'tvdb': config.get_localized_string(60226)}
# Obtener el Scraper por defecto de la configuracion segun el tipo de contenido
if item.contentType == "movie":
@@ -63,10 +63,10 @@ def find_and_set_infoLabels(item):
return True
elif scraper_result:
# Contenido encontrado pero no hay 'code'
msg = "Identificador no encontrado para: %s" % title
msg = config.get_localized_string(60227) % title
else:
# Contenido no encontrado
msg = "No se ha encontrado informacion para: %s" % title
msg = config.get_localized_string(60228) % title
logger.info(msg)
# Mostrar cuadro con otras opciones:
@@ -80,7 +80,7 @@ def find_and_set_infoLabels(item):
elif index == 0:
# Pregunta el titulo
title = platformtools.dialog_input(title, "Introduzca el nombre de la %s a buscar" % tipo_contenido)
title = platformtools.dialog_input(title, config.get_localized_string(60229) % tipo_contenido)
if title:
if item.contentType == "movie":
item.contentTitle = title
@@ -125,19 +125,19 @@ def cuadro_completar(item):
COLOR = ["0xFF8A4B08", "0xFFF7BE81"]
# Creamos la lista de campos del infoLabel
controls = [("title", "text", "Titulo:"),
("originaltitle", "text", "Titulo original"),
("year", "text", "Año"),
("identificadores", "label", "Identificadores:"),
("tmdb_id", "text", " The Movie Database ID"),
("url_tmdb", "text", " URL Tmdb", "+!eq(-1,'')"),
("tvdb_id", "text", " The TVDB ID", "+eq(-7,'Serie')"),
("url_tvdb", "text", " URL TVDB", "+!eq(-1,'')+eq(-8,'Serie')"),
("imdb_id", "text", " IMDb ID"),
("otro_id", "text", " Otro ID", "+eq(-1,'')"),
("urls", "label", "Imágenes (urls):"),
("fanart", "text", " Fondo"),
("thumbnail", "text", " Miniatura")]
controls = [("title", "text", config.get_localized_string(60230)),
("originaltitle", "text", config.get_localized_string(60231)),
("year", "text", config.get_localized_string(60232)),
("identificadores", "label", config.get_localized_string(60233)),
("tmdb_id", "text", config.get_localized_string(60234)),
("url_tmdb", "text", config.get_localized_string(60235), "+!eq(-1,'')"),
("tvdb_id", "text", config.get_localized_string(60236), "+eq(-7,'Serie')"),
("url_tvdb", "text", config.get_localized_string(60237), "+!eq(-1,'')+eq(-8,'Serie')"),
("imdb_id", "text", config.get_localized_string(60238)),
("otro_id", "text", config.get_localized_string(60239), "+eq(-1,'')"),
("urls", "label", config.get_localized_string(60240)),
("fanart", "text", config.get_localized_string(60241)),
("thumbnail", "text", config.get_localized_string(60242))]
if item.infoLabels["mediatype"] == "movie":
mediatype_default = 0
@@ -146,12 +146,12 @@ def cuadro_completar(item):
listado_controles = [{'id': "mediatype",
'type': "list",
'label': "Tipo de contenido",
'label': config.get_localized_string(60243),
'color': COLOR[1],
'default': mediatype_default,
'enabled': True,
'visible': True,
'lvalues': ["Película", "Serie"]
'lvalues': [config.get_localized_string(60244), config.get_localized_string(60245)]
}]
for i, c in enumerate(controls):
@@ -188,7 +188,7 @@ def cuadro_completar(item):
'visible': True})
# logger.debug(dict_default)
if platformtools.show_channel_settings(list_controls=listado_controles, caption="Completar información", item=item,
if platformtools.show_channel_settings(list_controls=listado_controles, caption=config.get_localized_string(60246), item=item,
callback="core.scraper.callback_cuadro_completar",
custom_button={"visible": False}):
return True
@@ -263,7 +263,6 @@ def get_nfo(item):
def sort_episode_list(episodelist):
episodelist.sort(key=lambda e: e.title, reverse=True)
scraper_actual = ['tmdb', 'tvdb'][config.get_setting("scraper_tvshows", "videolibrary")]
if scraper_actual == "tmdb":
+20 -8
View File
@@ -706,21 +706,27 @@ def filter_servers(servers_list):
return servers_list
def check_list_links(itemlist, numero):
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Comprobación de enlaces
# -----------------------
def check_list_links(itemlist, numero='', timeout=3):
"""
Comprueba una lista de enlaces a videos y la devuelve modificando el titulo con la verificacion.
El segundo parametro (numero) indica cuantos enlaces hay que verificar (0:5, 1:10, 2:15, 3:20)
El parámetro numero indica cuantos enlaces hay que verificar (0:5, 1:10, 2:15, 3:20)
El parámetro timeout indica un tope de espera para descargar la página
"""
numero = ((int(numero) + 1) * 5) if numero != '' else 10
for it in itemlist:
if numero > 0 and it.server != '' and it.url != '':
verificacion = check_video_link(it.url, it.server)
verificacion = check_video_link(it.url, it.server, timeout)
it.title = verificacion + ', ' + it.title.strip()
it.alive = verificacion
numero -= 1
return itemlist
def check_video_link(url, server):
def check_video_link(url, server, timeout=3):
"""
Comprueba si el enlace a un video es valido y devuelve un string de 2 posiciones con la verificacion.
:param url, server: Link y servidor
@@ -734,17 +740,23 @@ def check_video_link(url, server):
return "??"
if hasattr(server_module, 'test_video_exists'):
ant_timeout = httptools.HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT
httptools.HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT = timeout # Limitar tiempo de descarga
try:
video_exists, message = server_module.test_video_exists(page_url=url)
if not video_exists:
logger.info("[check_video_link] No existe! %s %s %s" % (message, server, url))
return "NO"
resultado = "NO"
else:
logger.info("[check_video_link] comprovacion OK %s %s" % (server, url))
return "Ok"
logger.info("[check_video_link] comprobacion OK %s %s" % (server, url))
resultado = "Ok"
except:
logger.info("[check_video_link] No se puede comprobar ahora! %s %s" % (server, url))
return "??"
resultado = "??"
finally:
httptools.HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT = ant_timeout # Restaurar tiempo de descarga
return resultado
logger.info("[check_video_link] No hay test_video_exists para servidor: %s" % server)
return "??"
+8 -9
View File
@@ -116,7 +116,7 @@ def save_movie(item):
_id = item.infoLabels['code'][0]
# progress dialog
p_dialog = platformtools.dialog_progress('alfa', 'Añadiendo película...')
p_dialog = platformtools.dialog_progress(config.get_localized_string(20000), config.get_localized_string(60062))
if config.get_setting("original_title_folder", "videolibrary") == 1 and item.infoLabels['originaltitle']:
base_name = item.infoLabels['originaltitle']
@@ -197,7 +197,7 @@ def save_movie(item):
# Si llegamos a este punto es por q algo ha fallado
logger.error("No se ha podido guardar %s en la videoteca" % item.contentTitle)
p_dialog.update(100, 'Fallo al añadir...', item.contentTitle)
p_dialog.update(100, config.get_localized_string(60063), item.contentTitle)
p_dialog.close()
return 0, 0, -1
@@ -366,8 +366,8 @@ def save_episodes(path, episodelist, serie, silent=False, overwrite=True):
# Silent es para no mostrar progreso (para videolibrary_service)
if not silent:
# progress dialog
p_dialog = platformtools.dialog_progress('alfa', 'Añadiendo episodios...')
p_dialog.update(0, 'Añadiendo episodio...')
p_dialog = platformtools.dialog_progress(config.get_localized_string(20000), config.get_localized_string(60064))
p_dialog.update(0, config.get_localized_string(60065))
new_episodelist = []
# Obtenemos el numero de temporada y episodio y descartamos los q no lo sean
@@ -616,21 +616,20 @@ def add_tvshow(item, channel=None):
insertados, sobreescritos, fallidos, path = save_tvshow(item, itemlist)
if not insertados and not sobreescritos and not fallidos:
platformtools.dialog_ok("Videoteca", "ERROR, la serie NO se ha añadido a la videoteca",
"No se ha podido obtener ningun episodio")
platformtools.dialog_ok(config.get_localized_string(30131), config.get_localized_string(60067))
logger.error("La serie %s no se ha podido añadir a la videoteca. No se ha podido obtener ningun episodio"
% item.show)
elif fallidos == -1:
platformtools.dialog_ok("Videoteca", "ERROR, la serie NO se ha añadido a la videoteca")
platformtools.dialog_ok(config.get_localized_string(30131), config.get_localized_string(60068))
logger.error("La serie %s no se ha podido añadir a la videoteca" % item.show)
elif fallidos > 0:
platformtools.dialog_ok("Videoteca", "ERROR, la serie NO se ha añadido completa a la videoteca")
platformtools.dialog_ok(config.get_localized_string(30131), config.get_localized_string(60069))
logger.error("No se han podido añadir %s episodios de la serie %s a la videoteca" % (fallidos, item.show))
else:
platformtools.dialog_ok("Videoteca", "La serie se ha añadido a la videoteca")
platformtools.dialog_ok(config.get_localized_string(30131), config.get_localized_string(60070))
logger.info("Se han añadido %s episodios de la serie %s a la videoteca" %
(insertados, item.show))
if config.is_xbmc():