From 0b5c0cd617ed4e0e970438e9b12b29289c62b5ae Mon Sep 17 00:00:00 2001 From: marco Date: Mon, 12 Oct 2020 18:02:04 +0200 Subject: [PATCH] tmdb: Ottimizzazione nella ricerca globale, no cache in sezione discover --- core/support.py | 5 +++-- core/tmdb.py | 10 ++++----- specials/search.py | 53 ++++++++++++++++++++++++---------------------- 3 files changed, 36 insertions(+), 32 deletions(-) diff --git a/core/support.py b/core/support.py index b9ea1f9a..84e95746 100755 --- a/core/support.py +++ b/core/support.py @@ -491,6 +491,9 @@ def scrape(func): else: break + if action != 'play' and function != 'episodios' and 'patronMenu' not in args and item.contentType in ['movie', 'tvshow', 'episode', 'undefined'] and not disabletmdb: + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + if (pagination and len(matches) <= pag * pagination) or not pagination: # next page with pagination if patronNext and inspect.stack()[1][3] not in ['newest']: nextPage(itemlist, item, data, patronNext, function) @@ -509,8 +512,6 @@ def scrape(func): args=item.args, page=pag + 1, thumbnail=thumb())) - if action != 'play' and function != 'episodios' and 'patronMenu' not in args and item.contentType in ['movie', 'tvshow', 'episode', 'undefined'] and not disabletmdb: - tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) if anime: from platformcode import autorenumber diff --git a/core/tmdb.py b/core/tmdb.py index c85d90d1..e640e073 100644 --- a/core/tmdb.py +++ b/core/tmdb.py @@ -92,7 +92,7 @@ def cache_response(fn): # import time # start_time = time.time() - def wrapper(*args): + def wrapper(*args, **kwargs): import base64 def check_expired(ts): @@ -143,7 +143,8 @@ def cache_response(fn): try: # cache is not active - if not config.get_setting("tmdb_cache", default=False): + if not config.get_setting("tmdb_cache", default=False) or not kwargs.get('cache', True): + logger.debug('no cache') result = fn(*args) else: @@ -861,8 +862,7 @@ class Tmdb(object): @staticmethod @cache_response - def get_json(url): - + def get_json(url, cache=True): try: result = httptools.downloadpage(url, cookies=False, ignore_response_code=True) @@ -1045,7 +1045,7 @@ class Tmdb(object): % (type_search, "&".join(params))) logger.info("[Tmdb.py] Searcing %s:\n%s" % (type_search, url)) - resultado = self.get_json(url) + resultado = self.get_json(url, cache=False) if not isinstance(resultado, dict): resultado = ast.literal_eval(resultado.decode('utf-8')) diff --git a/specials/search.py b/specials/search.py index c19d6c59..7ed9c915 100644 --- a/specials/search.py +++ b/specials/search.py @@ -235,6 +235,8 @@ def channel_search(item): if channel not in ch_list: ch_list[channel] = [] ch_list[channel].extend(res.result()[1]) + if res.result()[2]: + valid.extend(res.result()[2]) if progress.iscanceled(): break @@ -261,21 +263,7 @@ def channel_search(item): ch_name = channel_titles[channel_list.index(key)] grouped = list() cnt += 1 - progress.update(old_div((cnt * 100), len(ch_list)), config.get_localized_string(60295) + '\n' + config.get_localized_string(60293)) - if item.mode != 'all': - if len(value) == 1: - if not value[0].action or config.get_localized_string(70006).lower() in value[0].title.lower(): - continue - for elem in value: - if not elem.infoLabels.get('year', ""): - elem.infoLabels['year'] = '-' - tmdb.set_infoLabels_itemlist(value, True, forced=True) - for elem in value: - if elem.infoLabels['tmdb_id'] == searched_id: - elem.from_channel = key - if not config.get_setting('unify'): - elem.title += ' [%s]' % key - valid.append(elem) + progress.update(old_div((cnt * 100), len(ch_list)), config.get_localized_string(60295)) for it in value: if it.channel == item.channel: @@ -355,24 +343,39 @@ def channel_search(item): def get_channel_results(item, module_dict, search_action): ch = search_action.channel - max_results = 10 results = list() + valid = list() module = module_dict[ch] + searched_id = item.infoLabels['tmdb_id'] try: results.extend(module.search(search_action, item.text)) + if len(results) == 1: + if not results[0].action or config.get_localized_string(70006).lower() in results[0].title.lower(): + results.clear() + elif item.mode != 'all': + for elem in results: + if not elem.infoLabels.get('year', ""): + elem.infoLabels['year'] = '-' + tmdb.set_infoLabels_item(elem) + if elem.infoLabels['tmdb_id'] == searched_id: + elem.from_channel = ch + if not config.get_setting('unify'): + elem.title += ' [%s]' % ch + valid.append(elem) + break - if len(results) < 0 and len(results) < max_results and item.mode != 'all': + # if len(results) < 0 and len(results) < max_results and item.mode != 'all': + # + # if len(results) == 1: + # if not results[0].action or config.get_localized_string(30992).lower() in results[0].title.lower(): + # return [ch, []] + # + # results = get_info(results) - if len(results) == 1: - if not results[0].action or config.get_localized_string(30992).lower() in results[0].title.lower(): - return [ch, []] - - results = get_info(results) - - return [search_action, results] + return [search_action, results, valid] except: - return [search_action, results] + return [search_action, results, valid] def get_servers(item, module_dict):