From 3c60b5c710b73c781f7a1a0ba391cf4ebdffc274 Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Fri, 1 Oct 2021 19:23:19 +0200 Subject: [PATCH] Fix News --- specials/news.py | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/specials/news.py b/specials/news.py index 78bd463b..717f6ce8 100644 --- a/specials/news.py +++ b/specials/news.py @@ -13,7 +13,6 @@ if sys.version_info[0] >= 3: else: from concurrent_py2 import futures -progress = None mode = config.get_setting('result_mode', 'news') def mainlist(item): @@ -77,22 +76,27 @@ def news(item): else: itemlist = [] - results = cache() + results = cache(item.extra) if not results: - - global progress progress = platformtools.dialog_progress(item.category, config.get_localized_string(60519)) channels = get_channels(item.extra) + channelNames = [c[0] for c in channels] + count = 0 + progress.update(int(count / len(channels)), ', '.join(c for c in channelNames)) + with futures.ThreadPoolExecutor() as executor: - itlist = [executor.submit(get_newest, i, channel, item.extra, len(channels)) for i, channel in enumerate(channels)] + itlist = [executor.submit(get_newest, channel, item.extra, channels) for channel in channels] for res in futures.as_completed(itlist): if res.result(): + name = res.result()[0] + channelNames.remove(name) + progress.update(int(count + 1 / len(channels)), ', '.join(c for c in channelNames)) results.append(res.result()) if progress: progress.close() - cache(results) + cache(item.extra, results) if mode in [2]: for res in results: @@ -136,17 +140,15 @@ def news(item): return itemlist -def get_newest(i, channel, category, total): +def get_newest(channel, category, channels): global progress - cat = {'movie':'movies', 'tvshow':'shows', 'anime':'anime'} name = channel[0] _id = channel[1] - - module = platformtools.channel_import(_id) - logger.debug('channel_id=', _id, 'category=', category) - if progress: progress.update(int(i + 1 / total), name) list_newest = [] try: + module = platformtools.channel_import(_id) + logger.debug('channel_id=', _id, 'category=', category) + if not module: return [] @@ -154,6 +156,8 @@ def get_newest(i, channel, category, total): for item in list_newest: item.channel = _id + + except: logger.error("No se pueden recuperar novedades de: " + name) import traceback @@ -168,20 +172,22 @@ def movies(item): return itemlist -def cache(results=None): +def cache(_type, results=None): from core import db from time import time news = db['news'] + # logger.dbg() if results != None: - news['time'] = time() - news['results'] = results + news[_type] = {} + news[_type]['time'] = time() + news[_type]['results'] = results db['news'] = news - elif news.get('time', 0) + 60 < time() : + elif news.get(_type, {}).get('time', 0) + 60 < time() : results = [] else: - results = news.get('results', []) + results = news.get(_type, {}).get('results', []) db.close() return results @@ -240,7 +246,7 @@ def setting_channel(item): def save_settings(item, dict_values): - cache([]) + cache({}) for v in dict_values: config.set_setting("include_in_newest_" + item.extra, dict_values[v], v)