From 297a894a641f449128e1830af5b87537fc6df244 Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Thu, 30 Jul 2020 17:54:04 +0200 Subject: [PATCH] Test Ricerca per canale in cache --- core/videolibrarytools.py | 2 ++ platformcode/launcher.py | 49 +++++++++++++++++++++++++++++++-------- specials/search.py | 29 ++++++++++++----------- 3 files changed, 56 insertions(+), 24 deletions(-) diff --git a/core/videolibrarytools.py b/core/videolibrarytools.py index f0ea0cb1..a3771bdc 100644 --- a/core/videolibrarytools.py +++ b/core/videolibrarytools.py @@ -988,6 +988,7 @@ def add_movie(item): @param item: item to be saved. """ logger.info() + from platformcode.launcher import set_search_temp; set_search_temp(item) # To disambiguate titles, TMDB is caused to ask for the really desired title # The user can select the title among those offered on the first screen @@ -1034,6 +1035,7 @@ def add_tvshow(item, channel=None): """ logger.info("show=#" + item.show + "#") + from platformcode.launcher import set_search_temp; set_search_temp(item) if item.channel == "downloads": itemlist = [item.clone()] diff --git a/platformcode/launcher.py b/platformcode/launcher.py index ecf9a451..e1e97ed4 100644 --- a/platformcode/launcher.py +++ b/platformcode/launcher.py @@ -8,8 +8,10 @@ PY3 = False if sys.version_info[0] >= 3:PY3 = True; unicode = str; unichr = chr; long = int from core.item import Item +from core import filetools from platformcode import config, logger, platformtools from platformcode.logger import WebErrorException +temp_search_file = config.get_temp_file('temp-search') def start(): @@ -242,6 +244,20 @@ def run(item=None): # Special action for searching, first asks for the words then call the "search" function elif item.action == "search": + # from core.support import dbg;dbg() + if filetools.isfile(temp_search_file): + itemlist = [] + f = filetools.read(temp_search_file) + strList = f.split(',') + if strList[0] == '[V]' and strList[1] == item.channel: + for it in strList: + if it and it not in ['[V]', item.channel]: + itemlist.append(Item().fromurl(it)) + filetools.write(temp_search_file, f[4:]) + return platformtools.render_items(itemlist, item) + else: + filetools.remove(temp_search_file) + logger.info("item.action=%s" % item.action.upper()) from core import channeltools @@ -250,15 +266,11 @@ def run(item=None): else: last_search = '' - tecleado = platformtools.dialog_input(last_search) + search_text = platformtools.dialog_input(last_search) - if tecleado is not None: - channeltools.set_channel_setting('Last_searched', tecleado, 'search') - if 'search' in dir(channel): - itemlist = channel.search(item, tecleado) - else: - from core import support - itemlist = support.search(channel, item, tecleado) + if search_text is not None: + channeltools.set_channel_setting('Last_searched', search_text, 'search') + itemlist = new_search(item.clone(text=search_text), channel) else: return @@ -276,8 +288,7 @@ def run(item=None): trakt_tools.auth_trakt() else: import xbmc - if not xbmc.getCondVisibility('System.HasAddon(script.trakt)') and config.get_setting( - 'install_trakt'): + if not xbmc.getCondVisibility('System.HasAddon(script.trakt)') and config.get_setting('install_trakt'): trakt_tools.ask_install_script() itemlist = trakt_tools.trakt_check(itemlist) else: @@ -330,6 +341,24 @@ def run(item=None): log_message) +def new_search(item, channel=None): + itemlist=[] + if 'search' in dir(channel): + itemlist = channel.search(item, item.text) + else: + from core import support + itemlist = support.search(channel, item, item.text) + + writelist = item.channel + for it in itemlist: + writelist += ',' + it.tourl() + filetools.write(temp_search_file, writelist) + return itemlist + +def set_search_temp(item): + if filetools.isfile(temp_search_file): + f = '[V],' + filetools.read(temp_search_file) + filetools.write(temp_search_file, f) def reorder_itemlist(itemlist): logger.info() diff --git a/specials/search.py b/specials/search.py index 00610faa..164f72e9 100644 --- a/specials/search.py +++ b/specials/search.py @@ -95,9 +95,9 @@ def saved_search(item): def new_search(item): logger.info() - filename = config.get_temp_file('temp-search') - if filetools.isfile(filename): - filetools.remove(filename) + temp_search_file = config.get_temp_file('temp-search') + if filetools.isfile(temp_search_file): + filetools.remove(temp_search_file) itemlist = [] if config.get_setting('last_search'): @@ -154,16 +154,15 @@ def new_search(item): if item.mode == 'all' or not itemlist: return channel_search(Item(channel=item.channel, - title=searched_text, - text=searched_text, - mode='all', - infoLabels={})) + title=searched_text, + text=searched_text, + mode='all', + infoLabels={})) return itemlist def channel_search(item): - from base64 import b64decode, b64encode logger.info(item) start = time.time() @@ -182,16 +181,17 @@ def channel_search(item): item.text = item.infoLabels['title'] item.title = item.text - filename = config.get_temp_file('temp-search') - if filetools.isfile(filename): + temp_search_file = config.get_temp_file('temp-search') + if filetools.isfile(temp_search_file): itemlist = [] - f = filetools.read(filename) + f = filetools.read(temp_search_file) if f.startswith(item.text): for it in f.split(','): - if it: itemlist.append(Item().fromurl(it)) + if it and it != item.text: + itemlist.append(Item().fromurl(it)) return itemlist else: - filetools.remove(filename) + filetools.remove(temp_search_file) searched_id = item.infoLabels['tmdb_id'] @@ -346,11 +346,12 @@ def channel_search(item): if results: results.insert(0, Item(title=typo(config.get_localized_string(30025), 'color kod bold'), thumbnail=get_thumb('search.png'))) # logger.debug(results_statistic) + itlist = valid + results writelist = item.text for it in itlist: writelist += ',' + it.tourl() - filetools.write(filename, str(writelist)) + filetools.write(temp_search_file, writelist) return itlist