From 9135c2076e0283fd5f49d1a5faca222c305dba86 Mon Sep 17 00:00:00 2001 From: marco Date: Tue, 19 May 2020 19:41:29 +0200 Subject: [PATCH] ulteriore ottimizzazione support.server --- core/servertools.py | 46 +++++++++++++++++++++++++++++++++------------ core/support.py | 5 +++-- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/core/servertools.py b/core/servertools.py index 96081552..4d7a1eb2 100644 --- a/core/servertools.py +++ b/core/servertools.py @@ -153,8 +153,6 @@ def findvideos(data, skip=False): servers_list = list(get_servers_list().keys()) - # Ordenar segun favoriteslist si es necesario - servers_list = sort_servers(servers_list) is_filter_servers = False # Ejecuta el findvideos en cada servidor activo @@ -210,13 +208,40 @@ def guess_server_thumbnail(serverid): def get_server_from_url(url): - encontrado = findvideos(url, True) - if len(encontrado) > 0: - devuelve = encontrado[0][2] - else: - devuelve = "directo" + logger.info() + servers_list = list(get_servers_list().keys()) - return devuelve + # Ejecuta el findvideos en cada servidor activo + for serverid in servers_list: + '''if not is_server_enabled(serverid): + continue''' + if config.get_setting("filter_servers") == True and config.get_setting("black_list", server=serverid): + continue + serverid = get_server_name(serverid) + if not serverid: + return [] + + server_parameters = get_server_parameters(serverid) + if not server_parameters["active"]: + return [] + if "find_videos" in server_parameters: + # Recorre los patrones + for pattern in server_parameters["find_videos"].get("patterns", []): + msg = "%s\npattern: %s" % (serverid, pattern["pattern"]) + # Recorre los resultados + match = re.match(pattern["pattern"], url) + if match: + url = pattern["url"] + # Crea la url con los datos + for x in range(len(match.groups())): + url = url.replace("\\%s" % (x + 1), match.groups()[x]) + msg += "\nurl encontrada: %s" % url + value = server_parameters["name"], url, serverid, server_parameters.get("thumbnail", "") + if url not in server_parameters["find_videos"].get("ignore_urls", []): + logger.info(msg) + return value + + return None def resolve_video_urls_for_playing(server, url, video_password="", muestra_dialogo=False, background_dialog=False): @@ -659,7 +684,7 @@ def get_servers_list(): if server.endswith(".json") and not server == "version.json": server_parameters = get_server_parameters(server) server_list[server.split(".")[0]] = server_parameters - + server_list = sort_servers(server_list) return server_list @@ -725,9 +750,6 @@ def filter_servers(servers_list): config.get_localized_string(70281)): servers_list = servers_list_filter - if config.get_setting("favorites_servers") == True: - servers_list = sort_servers(servers_list) - return servers_list # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/core/support.py b/core/support.py index 5a765b6f..40ed8c43 100755 --- a/core/support.py +++ b/core/support.py @@ -1115,16 +1115,17 @@ def server(item, data='', itemlist=[], headers='', AutoPlay=True, CheckLinks=Tru itemList = servertools.find_video_items(data=str(data)) itemlist = itemlist + itemList verifiedItemlist = [] + def getItem(videoitem): if not videoitem.server: - findS = servertools.findvideos(videoitem.url) + findS = servertools.get_server_from_url(videoitem.url) if findS: findS = findS[0] elif item.channel == 'community': findS= ('Diretto', videoitem.url, 'directo') else: videoitem.url = unshortenit.unshorten_only(videoitem.url)[0] - findS = servertools.findvideos(videoitem.url) + findS = servertools.get_server_from_url(videoitem.url) if findS: findS = findS[0] else: