From 719642532286873b735f37e597923a840bf7bfe3 Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Fri, 17 Sep 2021 19:11:20 +0200 Subject: [PATCH] - Migliorie InfoPlus - Fix Ricerca Globale - Inizio riscrittura Ricerca Alternativa --- addon.xml | 2 +- core/support.py | 17 +- platformcode/infoplus.py | 130 ++++++++----- platformcode/launcher.py | 4 +- .../resource.language.en_gb/strings.po | 21 ++ .../resource.language.it_it/strings.po | 21 ++ resources/media/dark_background.jpg | Bin 0 -> 56626 bytes resources/media/fanart.jpg | Bin 133866 -> 0 bytes resources/skins/Default/720p/CastWindow.xml | 43 +---- .../skins/Default/720p/ChannelSettings.xml | 2 +- resources/skins/Default/720p/GlobalSearch.xml | 19 +- resources/skins/Default/720p/InfoPlus.xml | 179 ++++++++++++++---- specials/globalsearch.py | 29 ++- specials/tvmoviedb.py | 171 ++++++++++++++--- 14 files changed, 458 insertions(+), 180 deletions(-) create mode 100644 resources/media/dark_background.jpg delete mode 100644 resources/media/fanart.jpg diff --git a/addon.xml b/addon.xml index 0d58e475..77d5ac23 100644 --- a/addon.xml +++ b/addon.xml @@ -19,7 +19,7 @@ Kodi on Demand è un addon di Kodi per cercare e guardare contenuti sul web. resources/media/logo.png - resources/media/fanart.jpg + resources/media/dark_background.jpg resources/media/screenshot-1.png resources/media/screenshot-2.png resources/media/screenshot-3.png diff --git a/core/support.py b/core/support.py index cb160bc5..dd4cc11d 100755 --- a/core/support.py +++ b/core/support.py @@ -890,11 +890,20 @@ def nextPage(itemlist, item, function_or_level=1, **kwargs): # create Item if next_page or page: itemlist.append(item.clone(action = inspect.stack()[function_or_level][3] if type(function_or_level) == int else function_or_level, - title=typo(config.get_localized_string(30992), 'color kod bold'), + title=typo(config.get_localized_string(90006), 'color kod bold'), nextPage=True, page=page if page else item.page + 1 if item.page else 2, prevthumb = item.thumbnail, thumbnail=thumb())) + if total_pages: + itemlist.append(item.clone(action='gotopage', + real_action = inspect.stack()[function_or_level][3] if type(function_or_level) == int else function_or_level, + title=typo(config.get_localized_string(90007), 'color kod bold'), + nextPage=True, + total_pages = total_pages, + page=page if page else item.page + 1 if item.page else 2, + prevthumb = item.thumbnail, + thumbnail=thumb())) return itemlist @@ -957,7 +966,7 @@ def season_pagination(itemlist, item, seasons, function_level=1): itlist.append( Item(channel=item.channel, action=action, - title=typo('Stagione Successiva [{}]'.format(seasons[item.nextSeason + 1]), 'bold'), + title=typo(config.get_localized_string(90008), 'color kod bold'), allSeasons = seasons, nextSeason = item.nextSeason + 1, itemlist = True, @@ -967,7 +976,7 @@ def season_pagination(itemlist, item, seasons, function_level=1): Item(channel=item.channel, action='gotoseason', real_action=action, - title=typo('Vai alla stagione…', 'bold'), + title=typo(config.get_localized_string(90009), 'color kod bold'), allSeasons = seasons, nextSeason = item.nextSeason + 1, itemlist = True, @@ -1310,7 +1319,7 @@ def addQualityTag(item, itemlist, data, patron): def thumb(data=None, mode=None): ''' data = str, item or itemlist - mode = str, genre, live, quality + mode = genre, live, quality ''' if mode == 'live': diff --git a/platformcode/infoplus.py b/platformcode/infoplus.py index 0fd5eda8..af179d04 100644 --- a/platformcode/infoplus.py +++ b/platformcode/infoplus.py @@ -3,31 +3,25 @@ # infoplus window with item information # ------------------------------------------------------------ -from typing import List -import xbmc, xbmcgui, sys, requests, re -from core import httptools, support, tmdb, filetools, channeltools, servertools, jsontools +import xbmc, xbmcgui, sys +from core import httptools, tmdb from core.item import Item -from platformcode import config, platformtools, logger, xbmc_videolibrary -from platformcode.logger import log -from core.scrapertools import decodeHtmlentities, htmlclean +from platformcode import config, platformtools, logger -from core.support import typo, dbg +from core.support import match, typo, dbg -PY3 = False -if sys.version_info[0] >= 3: PY3 = True -if PY3: from concurrent import futures -else: from concurrent_py2 import futures info_list = [] SearchWindows = [] -api = 'k_0tdb8a8y' # Control ID LIST = 100 -CAST = 101 -RECOMANDED = 102 -TRAILERS = 103 -FANARTS = 104 +CAST = MOVIE = 101 +SET = SHOW = 102 +RECOMANDED = 103 +TRAILERS = 104 +FANARTS = 105 + SEARCH = 200 @@ -61,6 +55,7 @@ class InfoPlus(xbmcgui.WindowXML): self.trailers = [] self.images = [] self.fanarts = [] + self.collection = [] if not self.item.focus: self.item.focus = {} platformtools.dialog_busy(True) if self.item: @@ -84,7 +79,7 @@ class InfoPlus(xbmcgui.WindowXML): rating = self.info.get('rating', 'N/A') color = 'FFFFFFFF' if rating == 'N/A' else 'FFDB2360' if rating < 4 else 'FFD2D531' if rating < 7 else 'FF21D07A' self.listitem.setProperty('color',color) - + info = '' if self.info.get('year'): info = str(self.info.get('year')) if self.info.get('duration'): info = '{}[B]•[/B]{}'.format(info, self.info.get('duration')) @@ -93,8 +88,6 @@ class InfoPlus(xbmcgui.WindowXML): # Set infoLabels platformtools.set_infolabels(self.listitem, self.item) - - # Add Cast Info for cast in self.info.get('castandrole',[]): @@ -104,6 +97,21 @@ class InfoPlus(xbmcgui.WindowXML): self.cast.append(castitem) self.cast.sort(key=lambda c: c.getProperty('order')) + if self.info.get('setid'): + url = '{}/collection/{}?api_key={}&language={}'.format(tmdb.host, self.info.get('setid'), tmdb.api, tmdb.def_lang) + parts = match(url).response.json['parts'] + for part in parts: + poster = 'https://image.tmdb.org/t/p/original/' + part.get('poster_path') if part.get('poster_path') else '' + setitem = xbmcgui.ListItem(part.get('title'), self.info.get('set')) + setitem.setArt({'poster': poster}) + rating = part.get('vote_average', 'N/A') + color = 'FFFFFFFF' if rating == 'N/A' else 'FFDB2360' if rating < 4 else 'FFD2D531' if rating < 7 else 'FF21D07A' + + setitem.setProperties({'id':part.get('id'), 'mediatype':'movie', 'color':color}) + setitem.setInfo("video", {'plot':self.info.get('setoverview'), 'rating':rating}) + self.collection.append(setitem) + + directors = self.info.get('director') if directors: for i, director in enumerate(directors.split(',')): @@ -137,6 +145,9 @@ class InfoPlus(xbmcgui.WindowXML): self.getControl(TRAILERS).addItems(self.trailers) self.getControl(FANARTS).addItems(self.fanarts) + if self.collection: + self.getControl(SET).addItems(self.collection) + # Set Focus if self.item.focus: for k, v in self.item.focus.items(): @@ -149,13 +160,26 @@ class InfoPlus(xbmcgui.WindowXML): def onAction(self, action): action = action.getId() focus = self.getFocusId() + infoList = [LIST, CAST, SET, RECOMANDED, TRAILERS, FANARTS] + actionList = [SEARCH, BACK, CLOSE] if action in [EXIT]: self.close() elif action in [BACKSPACE]: back(self) - elif action in [UP, DOWN, LEFT, RIGHT] and focus not in [LIST, CAST, RECOMANDED, TRAILERS, FANARTS, SEARCH, BACK, CLOSE]: - self.setFocusId(LIST) - if focus > 0 and focus not in [SEARCH, BACK, CLOSE]: + elif action in [UP, DOWN]: + A = 1 if action == DOWN else -1 + if focus not in infoList or focus in actionList: + self.setFocusId(infoList[0]) + elif focus + A in infoList and not focus in actionList: + while focus in infoList: + focus += A + if self.getControl(focus).isVisible(): + self.setFocusId(focus) + break + else: + self.setFocusId(SEARCH) + + if focus > 0 and focus not in actionList: self.item.setFocus = focus self.item.focus[focus] = self.getControl(focus).getSelectedPosition() @@ -164,13 +188,23 @@ class InfoPlus(xbmcgui.WindowXML): global info_list if control in [SEARCH]: - from specials.globalsearch import new_search + selection = 0 + original = self.item.infoLabels.get('originaltitle') + if self.item.contentType == 'episode': self.item.contentType = 'tvshow' self.item.text = self.item.contentSerieName - self.item.mode = 'all' - self.item.type = self.item.contentType - new_search(self.item) + else: + self.item.text = self.item.contentTitle + titles = [self.item.text] + [original] if original else [] + if original and original != self.item.text: + selection = platformtools.dialog_select(config.get_localized_string(90010), titles) + if selection > -1: + self.item.text = titles[selection] + self.item.mode = 'search_' + self.item.contentType + item = self.item.clone(channel='globalsearch', action='new_search') + xbmc.executebuiltin("RunPlugin(plugin://plugin.video.kod/?" + item.tourl() + ")") + # new_search(self.item.clone()) elif control in [CLOSE]: self.close() @@ -185,9 +219,9 @@ class InfoPlus(xbmcgui.WindowXML): self.close() showCast(it) - elif control in [RECOMANDED]: + elif control in [RECOMANDED, SET]: info_list.append(self.item) - listitem = self.getControl(RECOMANDED).getSelectedItem() + listitem = self.getControl(control).getSelectedItem() it = Item(title=listitem.getLabel(), infoLabels={'tmdb_id':listitem.getProperty('id'), 'mediatype':listitem.getProperty('mediatype')}) self.close() start(it) @@ -255,8 +289,6 @@ class CastWindow(xbmcgui.WindowXML): self.item = kwargs.get('item') self.id = self.item.id self.item.InfoWindow = 'cast' - self.host = tmdb.host - self.api = tmdb.api self.movies = [] self.tvshows = [] self.movieItems = [] @@ -271,8 +303,8 @@ class CastWindow(xbmcgui.WindowXML): def get_person_info(self): # Function for Person Info - url = '{}/person/{}?api_key={}&language=en'.format(self.host, self.id, self.api) - translation_url = '{}/person/{}/translations?api_key={}'.format(self.host, self.id, self.api) + url = '{}/person/{}?api_key={}&language=en'.format(tmdb.host, self.id, tmdb.api) + translation_url = '{}/person/{}/translations?api_key={}'.format(tmdb.host, self.id, tmdb.api) info = httptools.downloadpage(url).json @@ -295,8 +327,8 @@ class CastWindow(xbmcgui.WindowXML): def onInit(self): self.getControl(LIST).addItem(self.castitem) - self.getControl(CAST).addItems(self.movies) - self.getControl(RECOMANDED).addItems(self.tvshows) + self.getControl(MOVIE).addItems(self.movies) + self.getControl(SHOW).addItems(self.tvshows) # Set Focus xbmc.sleep(200) @@ -309,17 +341,29 @@ class CastWindow(xbmcgui.WindowXML): def onAction(self, action): action = action.getId() focus = self.getFocusId() + infoList = [LIST, MOVIE, SHOW] + actionList = [BACK, CLOSE] if action in [EXIT]: self.close() elif action in [BACKSPACE]: back(self) - elif action in [UP, DOWN, LEFT, RIGHT] and focus not in [LIST, CAST, RECOMANDED, TRAILERS, FANARTS, SEARCH, BACK, CLOSE]: - self.setFocusId(LIST) - if focus > 0: + elif action in [UP, DOWN] and focus in infoList + actionList: + A = 1 if action == DOWN else -1 + if focus not in infoList or focus in actionList: + self.setFocusId(infoList[0]) + elif focus + A in infoList and not focus in actionList: + while focus in infoList: + focus += A + if self.getControl(focus).isVisible(): + self.setFocusId(focus) + break + else: + self.setFocusId(BACK) + + if focus > 0 and focus not in actionList: self.item.setFocus = focus self.item.focus[focus] = self.getControl(focus).getSelectedPosition() - def onClick(self, control): global info_list @@ -329,20 +373,20 @@ class CastWindow(xbmcgui.WindowXML): elif control in [BACK]: back(self) - elif control in [CAST]: + elif control in [MOVIE]: info_list.append(self.item) self.close() - start(self.movieItems[self.getControl(CAST).getSelectedPosition()]) + start(self.movieItems[self.getControl(MOVIE).getSelectedPosition()]) - elif control in [RECOMANDED]: + elif control in [SHOW]: info_list.append(self.item) self.close() - start(self.tvshowItems[self.getControl(RECOMANDED).getSelectedPosition()]) + start(self.tvshowItems[self.getControl(SHOW).getSelectedPosition()]) def get_credits(self): # Function for Credits Info - url = '{}/person/{}/combined_credits?api_key={}&language=it'.format(self.host, self.id, self.api) + url = '{}/person/{}/combined_credits?api_key={}&language='.format(tmdb.host, self.id, tmdb.api, tmdb.def_lang) info = httptools.downloadpage(url).json for video in info.get('cast',[]) + info.get('crew',[]): diff --git a/platformcode/launcher.py b/platformcode/launcher.py index ed546144..a0261191 100644 --- a/platformcode/launcher.py +++ b/platformcode/launcher.py @@ -151,6 +151,7 @@ def run(item=None): else: platformtools.dialog_ok(config.get_localized_string(20000), config.get_localized_string(70740) % "\n".join([item.url[j:j+57] for j in range(0, len(item.url), 57)])) elif item.action == "gotopage": + # from core.support import dbg;dbg() from core import scrapertools head = config.get_localized_string(70511) scraped_page = scrapertools.find_single_match(item.url,'[=/]([0-9]+)') @@ -166,7 +167,8 @@ def run(item=None): item.page = page import re item.url = re.sub('([=/])[0-9]+(/?)$', '\g<1>{}\g<2>'.format(page), item.url) - xbmc.executebuiltin("Container.Update(%s?%s)" % (sys.argv[0], item.tourl())) + run(item) + # xbmc.executebuiltin("Container.Update(%s?%s)" % (sys.argv[0], item.tourl())) elif item.action == "gotoseason": head = 'Seleziona la stagione' seasons = [str(s) for s in item.allSeasons] diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 0e909ecc..a611f721 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -6535,3 +6535,24 @@ msgstr "No options" msgctxt "#90005" msgid "Search on KOD" msgstr "Search with KOD" + + +msgctxt "#90006" +msgid "Next page >" +msgstr "" + +msgctxt "#90007" +msgid "Go to page…" +msgstr "" + +msgctxt "#90008" +msgid "Next Season >" +msgstr "" + +msgctxt "#90009" +msgid "Go to season…" +msgstr "" + +msgctxt "#90010" +msgid "What title do you want to search for?" +msgstr "" \ No newline at end of file diff --git a/resources/language/resource.language.it_it/strings.po b/resources/language/resource.language.it_it/strings.po index b515bb2c..85b5a7ca 100644 --- a/resources/language/resource.language.it_it/strings.po +++ b/resources/language/resource.language.it_it/strings.po @@ -6536,3 +6536,24 @@ msgstr "Nessuna opzione possibile" msgctxt "#90005" msgid "Search on KOD" msgstr "Cerca con KOD" + + +msgctxt "#90006" +msgid "Next page >" +msgstr "Pagina successiva >" + +msgctxt "#90007" +msgid "Go to page…" +msgstr "Vai a pagina…" + +msgctxt "#90008" +msgid "Next Season >" +msgstr "Stagione successiva >" + +msgctxt "#90009" +msgid "Go to season…" +msgstr "Vai alla stagione…" + +msgctxt "#90010" +msgid "What title do you want to search for?" +msgstr "Quale titolo vuoi cercare?" \ No newline at end of file diff --git a/resources/media/dark_background.jpg b/resources/media/dark_background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0c9fc632f59c15dfddac8cd9e55f07cedb3c30e GIT binary patch literal 56626 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 literal 0 HcmV?d00001 diff --git a/resources/media/fanart.jpg b/resources/media/fanart.jpg deleted file mode 100644 index b5883c02c13dfe413a2cf72a28fea0b909b7c8ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133866 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 diff --git a/resources/skins/Default/720p/CastWindow.xml b/resources/skins/Default/720p/CastWindow.xml index 2d51af29..9350e551 100644 --- a/resources/skins/Default/720p/CastWindow.xml +++ b/resources/skins/Default/720p/CastWindow.xml @@ -97,8 +97,6 @@ horizontal - 201 - 101 Birth @@ -134,7 +132,7 @@ Movie Group - + Integer.IsGreater(Container(102).NumItems, 0) 241 Movie Title @@ -143,15 +141,14 @@ font13 ffFFFFFF 00000000 - + left center Movie List + Integer.IsGreater(Container(102).NumItems, 0) 30 - 100 - 102 200 horizontal 10 @@ -236,25 +233,16 @@ Rating 20 - 50 + 15 40 30 font13 - ffFFFFFF + Container(101).ListItem.Property(color) 00000000 right center - - Rating Circle - 20 - 15 - 30 - 30 - Circular/$INFO[Container(101).ListItem.Property(rating)].png - scale - Separator @@ -267,7 +255,7 @@ Show Group - + Integer.IsGreater(Container(102).NumItems, 0) 241 Show Title @@ -276,14 +264,14 @@ font13 ffFFFFFF 00000000 - + left center Show List + Integer.IsGreater(Container(102).NumItems, 0) 30 - 101 200 horizontal 10 @@ -368,36 +356,25 @@ Rating 20 - 50 + 15 40 30 font13 - ffFFFFFF + Container(102).ListItem.Property(color) 00000000 right center - - Rating Circle - 20 - 15 - 30 - 30 - Circular/$INFO[Container(102).ListItem.Property(rating)].png - scale - - 100 30 30 40 80 - horizontal diff --git a/resources/skins/Default/720p/ChannelSettings.xml b/resources/skins/Default/720p/ChannelSettings.xml index b2acb97a..63eef84d 100644 --- a/resources/skins/Default/720p/ChannelSettings.xml +++ b/resources/skins/Default/720p/ChannelSettings.xml @@ -31,7 +31,7 @@ FFFFFFFF left center - + Close diff --git a/resources/skins/Default/720p/GlobalSearch.xml b/resources/skins/Default/720p/GlobalSearch.xml index d7309149..a9f7a208 100644 --- a/resources/skins/Default/720p/GlobalSearch.xml +++ b/resources/skins/Default/720p/GlobalSearch.xml @@ -46,9 +46,10 @@ $INFO[Container(103).ListItem.Art(thumb)] Control.IsVisible(2) + !String.IsEmpty(Container(103).ListItem.Art(thumb)) - + Title + Control.IsVisible(500) 480 270 1000 @@ -56,7 +57,6 @@ font13 FFFFFFFF 00000000 - left center Conditional @@ -674,21 +674,6 @@ Conditional - - Progress Count - 270 - 450 - 180 - 30 - font13 - FFFFFFFF - 00000000 - right - center - Conditional - - - No Results 340 diff --git a/resources/skins/Default/720p/InfoPlus.xml b/resources/skins/Default/720p/InfoPlus.xml index 4a822471..d39a0abf 100644 --- a/resources/skins/Default/720p/InfoPlus.xml +++ b/resources/skins/Default/720p/InfoPlus.xml @@ -39,6 +39,7 @@ + 30 @@ -246,8 +247,6 @@ horizontal - 200 - 101 Cast Title @@ -256,16 +255,14 @@ font13 ffFFFFFF 00000000 - + left center Cast List + Integer.IsGreater(Container(101).NumItems, 0) 30 - 100 - 102 - 200 horizontal 10 @@ -342,27 +339,26 @@ white.pngù - + - Recomanded Group - + Collection Group + Integer.IsGreater(Container(102).NumItems, 0) 241 - Cast Title + Collection Title 10 30 font13 ffFFFFFF 00000000 - + left center - Recomanded List + Collection List + Integer.IsGreater(Container(102).NumItems, 0) 30 - 101 - 103 200 horizontal 10 @@ -434,15 +430,6 @@ right center - Plot 60 @@ -466,10 +453,124 @@ white.png + + + Recomanded Group + Integer.IsGreater(Container(103).NumItems, 0) + 241 + + Cast Title + 10 + 30 + font13 + ffFFFFFF + 00000000 + + left + center + + + Recomanded List + Integer.IsGreater(Container(103).NumItems, 0) + 30 + 200 + horizontal + 10 + + + Infoplus/no_photo.png + 10 + scale + + + $INFO[ListItem.Art(poster)] + 10 + scale + + + + + white.png + 5 + scale + Control.HasFocus(103) + + + Infoplus/no_photo.png + 10 + scale + + + $INFO[ListItem.Art(poster)] + 10 + scale + + + + + 30 + 133 + 200 + Control.HasFocus(103) + Conditional + Conditional + + white.png + + + Name + 20 + 40 + 30 + 450 + font13 + ffFFFFFF + 00000000 + + left + center + + + Name + 20 + 15 + 40 + 30 + font13 + true + Container(103).ListItem.Property(color) + 00000000 + + right + center + + + Plot + 60 + 40 + 100 + 520 + font13 + ffFFFFFF + 00000000 + + True + left + center + + + + Separator + 240 + 0 + 0.5 + white.png + + Trailers Group - Integer.IsGreater(Container(103).NumItems, 0) + Integer.IsGreater(Container(104).NumItems, 0) 241 @@ -483,11 +584,10 @@ left center - + Trailers List + Integer.IsGreater(Container(104).NumItems, 0) 30 - 102 - 104 200 horizontal 10 @@ -503,7 +603,7 @@ white.png 5 scale - Control.HasFocus(103) + Control.HasFocus(104) $INFO[ListItem.Art(thumb)] @@ -516,9 +616,9 @@ 30 340 200 - Control.HasFocus(103) - Conditional - Conditional + Control.HasFocus(104) + Conditional + Conditional white.png @@ -531,7 +631,7 @@ font13 ffFFFFFF 00000000 - + True left center @@ -548,7 +648,7 @@ Fanart Group - Integer.IsGreater(Container(104).NumItems, 0) + Integer.IsGreater(Container(105).NumItems, 0) 241 @@ -558,14 +658,14 @@ font13 ffFFFFFF 00000000 - + left center - + Fanart List - 30 - 103 + Integer.IsGreater(Container(105).NumItems, 0) + 30> 200 horizontal 10 @@ -581,7 +681,7 @@ white.png 5 scale - Control.HasFocus(104) + Control.HasFocus(105) $INFO[ListItem.Art(fanart)] @@ -591,15 +691,14 @@ + - 100 30 30 40 120 - horizontal search diff --git a/specials/globalsearch.py b/specials/globalsearch.py index f2228503..2ce5ac7a 100644 --- a/specials/globalsearch.py +++ b/specials/globalsearch.py @@ -90,7 +90,7 @@ class SearchWindow(xbmcgui.WindowXML): self.next = None self.previous = None self.FOCUS = False - + self.mode = self.item.mode.split('_')[-1] if not thActions and not self.searchActions: self.thActions = Thread(target=self.getActionsThread) @@ -129,7 +129,7 @@ class SearchWindow(xbmcgui.WindowXML): try: module = __import__('channels.%s' % channel, fromlist=["channels.%s" % channel]) mainlist = getattr(module, 'mainlist')(Item(channel=channel, global_search=True)) - actions = [elem for elem in mainlist if elem.action == "search" and (self.item.mode in ['all', 'person'] or elem.contentType in [self.item.mode, 'undefined'])] + actions = [elem for elem in mainlist if elem.action == "search" and (self.mode in ['all', 'person'] or elem.contentType in [self.mode, 'undefined'])] self.moduleDict[channel] = module self.searchActions.append(actions) except: @@ -157,20 +157,20 @@ class SearchWindow(xbmcgui.WindowXML): logger.debug() self.PROGRESS.setVisible(False) self.items = [] - if self.item.mode == 'filmography': + if self.mode == 'filmography': tmdb_info = tmdb.discovery(self.item, dict_=self.item.discovery) results = tmdb_info.results.get('cast',[]) else: - tmdb_info = tmdb.Tmdb(searched_text=self.item.text, search_type=self.item.mode.replace('show', '')) + tmdb_info = tmdb.Tmdb(searched_text=self.item.text, search_type=self.mode.replace('show', '')) results = tmdb_info.results def make(n, result): result = tmdb_info.get_infoLabels(result, origen=result) - if self.item.mode == 'movie': + if self.mode == 'movie': title = result['title'] result['mode'] = 'movie' - elif self.item.mode == 'tvshow': + elif self.mode == 'tvshow': title = result['name'] result['mode'] = 'tvshow' else: @@ -189,7 +189,7 @@ class SearchWindow(xbmcgui.WindowXML): text=title, infoLabels=result) - if self.item.mode == 'movie': + if self.mode == 'movie': new_item.contentTitle = result['title'] else: new_item.contentSerieName = result['name'] @@ -284,7 +284,7 @@ class SearchWindow(xbmcgui.WindowXML): self.setFocusId(CLOSE) def get_channels(self): - logger.debug() + logger.debug('MODE:', self.mode) channels_list = [] all_channels = channelselector.filterchannels('all') @@ -302,7 +302,7 @@ class SearchWindow(xbmcgui.WindowXML): n = list_cat.index('anime') list_cat[n] = 'tvshow' - if self.item.mode in ['all', 'person'] or self.item.mode in list_cat: + if self.mode in ['all', 'person'] or self.mode in list_cat: if config.get_setting("include_in_global_search", channel) and ch_param.get("active", False): channels_list.append(channel) @@ -374,7 +374,7 @@ class SearchWindow(xbmcgui.WindowXML): if not results[0].action or results[0].nextPage: results = [] - if self.item.mode != 'all': + if self.mode != 'all': for elem in results: if elem.infoLabels.get('tmdb_id') == self.item.infoLabels.get('tmdb_id'): elem.from_channel = elem.channel @@ -404,7 +404,7 @@ class SearchWindow(xbmcgui.WindowXML): dummy, valid, dummy = channel_search(self.item.text + " " + str(self.item.infoLabels['year'])) # some channels may use original title - if self.item.mode != 'all' and not valid and self.item.infoLabels.get('originaltitle'): + if self.mode != 'all' and not valid and self.item.infoLabels.get('originaltitle'): logger.debug('retring with original title on channel ') dummy, valid, dummy = channel_search(self.item.infoLabels.get('originaltitle')) except: @@ -509,13 +509,12 @@ class SearchWindow(xbmcgui.WindowXML): if self.item.mode.split('_')[0] in ['all', 'search']: if 'search' in self.item.mode: - self.item.mode = self.item.mode.split('_')[-1] self.item.text = scrapertools.title_unify(self.item.text) self.thread = Thread(target=self.search) self.thread.start() - elif self.item.mode in ['movie', 'tvshow', 'filmography']: + elif self.mode in ['movie', 'tvshow', 'filmography']: self.select() - elif self.item.mode in ['person']: + elif self.mode in ['person']: self.actors() def Focus(self, focusid): @@ -612,7 +611,7 @@ class SearchWindow(xbmcgui.WindowXML): self.close() else: item = Item().fromurl(self.RESULTS.getSelectedItem().getProperty('item')) - if self.item.mode == 'movie': item.contentTitle = self.RESULTS.getSelectedItem().getLabel() + if self.mode == 'movie': item.contentTitle = self.RESULTS.getSelectedItem().getLabel() else: item.contentSerieName = self.RESULTS.getSelectedItem().getLabel() new_search(item, self.moduleDict, self.searchActions) diff --git a/specials/tvmoviedb.py b/specials/tvmoviedb.py index 1c40343b..d203d188 100644 --- a/specials/tvmoviedb.py +++ b/specials/tvmoviedb.py @@ -6,8 +6,8 @@ from core import filetools, jsontools, trakt_tools from core import support, tmdb from core.tmdb import Tmdb from core.scrapertools import htmlclean, decodeHtmlentities -from core.support import thumb, typo, match, dbg -from platformcode import config, logger +from core.support import nextPage, thumb, typo, match, dbg +from platformcode import config, logger, platformtools langs = Item(tmdb=[tmdb.def_lang, 'de', 'fr', 'pt', 'it', 'es-MX', 'ca', 'en', 'es'], @@ -24,13 +24,8 @@ mal_key = 'MzE1MDQ2cGQ5N2llYTY4Z2xwbGVzZjFzbTY=' def mainlist(item): logger.debug() - itemlist = [item.clone(title='TMDB', action='tmdb_menu'), - item.clone(title='IMDB', action='imdb_menu')] - # itemlist = [item.clone(title=config.get_localized_string(70021) % (config.get_localized_string(30122), 'TMDB'), action='tmdb_menu', args='movie'), - # item.clone(title=config.get_localized_string(70021) % (config.get_localized_string(30123), 'TMDB'), action='tmdb_menu', args='tv'), - # item.clone(title=config.get_localized_string(70021) % (config.get_localized_string(30122), 'IMDB'), action='imdb', args='movie', url='&title_type=feature,tv_movie'), - # item.clone(title=config.get_localized_string(70021) % (config.get_localized_string(30123), 'IMDB'), action='imdb', args='tv', url='&title_type=tv_series,tv_special,mini_series')] - support.thumb(itemlist) + itemlist = [item.clone(title='TMDB', action='tmdbMenu', thumbnail=support.thumb('tmdb')), + item.clone(title='IMDB', action='imdbMenu', thumbnail=support.thumb('imdb'))] itemlist += [item.clone(title=config.get_localized_string(70415), action='trakt', thumbnail=support.thumb('trakt')), item.clone(title=config.get_localized_string(70026), action='mal', thumbnail=support.thumb('mal')), item.clone(title=typo(config.get_localized_string(70027), 'bold'), action='configuracion', folder=False, thumbnail=support.thumb('setting'))] @@ -38,41 +33,43 @@ def mainlist(item): -def tmdb_menu(item): +def tmdbMenu(item): if not item.args: - return [item.clone(title=config.get_localized_string(70741) % config.get_localized_string(30122), args='movie'), - item.clone(title=config.get_localized_string(70741) % config.get_localized_string(30123), args='tv')] + return thumb([item.clone(title=config.get_localized_string(70741) % config.get_localized_string(30122), args='movie'), + item.clone(title=config.get_localized_string(70741) % config.get_localized_string(30123), args='tv')]) item.contentType = item.args.replace('tv', 'tvshow') - itemlist = [item.clone(title=config.get_localized_string(70028), action='peliculas', args=item.args + '/popular'), - item.clone(title=config.get_localized_string(70029), action='peliculas', args=item.args + '/top_rated'), - item.clone(title=config.get_localized_string(50001), action='peliculas', args=item.args + '/now_playing' if item.args == 'movie' else '/on_the_air'), - item.clone(title=config.get_localized_string(70032), action='indices_tmdb'), - item.clone(title=config.get_localized_string(70042), action='indices_tmdb')] + itemlist = [item.clone(title=config.get_localized_string(70028), action='tmdbResults', args=item.args + '/popular'), + item.clone(title=config.get_localized_string(70029), action='tmdbResults', args=item.args + '/top_rated'), + item.clone(title=config.get_localized_string(50001), action='tmdbResults', args=item.args + '/now_playing' if item.args == 'movie' else '/on_the_air'), + item.clone(title=config.get_localized_string(70032), action='tmdbIndex', mode='genre'), + item.clone(title=config.get_localized_string(70042), action='tmdbIndex', mode='year')] if item.args == 'movie': - itemlist.extend([item.clone(title=config.get_localized_string(70033), action='peliculas', args='person/popular'), - item.clone(title=config.get_localized_string(70034), action='list_tmdb', args=item.args + '/upcoming')]) + itemlist.extend([item.clone(title=config.get_localized_string(70033), action='tmdbResults', args='person/popular'), + item.clone(title=config.get_localized_string(70034), action='tmdbResults', args=item.args + '/upcoming')]) - itemlist.extend([item.clone(title=config.get_localized_string(70035) % config.get_localized_string(60244 if item.args == 'movie' else 60245).lower(), action='search_', search={'url': 'search/%s' % item.args, 'language': lang.tmdb, 'page': 1}), - item.clone(title=config.get_localized_string(70036), action='search_', search={'url': 'search/person', 'language': lang.tmdb, 'page': 1})]) + itemlist.extend([item.clone(title=config.get_localized_string(70035) % config.get_localized_string(60244 if item.args == 'movie' else 60245).lower(), action='_search', search={'url': 'search/%s' % item.args, 'language': lang.tmdb, 'page': 1}), + item.clone(title=config.get_localized_string(70036), action='_search', search={'url': 'search/person', 'language': lang.tmdb, 'page': 1})]) - if item.args == 'movie': itemlist.append(item.clone(title=config.get_localized_string(70037), action='search_', search={'url': 'search/person', 'language': lang.tmdb, 'page': 1}, crew=True)) + if item.args == 'movie': itemlist.append(item.clone(title=config.get_localized_string(70037), action='_search', search={'url': 'search/person', 'language': lang.tmdb, 'page': 1}, crew=True)) itemlist.extend([item.clone(title=typo(config.get_localized_string(70038),'bold'), action='filter', ), item.clone(title=typo(config.get_localized_string(70039),'bold'), action='filter', )]) return thumb(itemlist) -def peliculas(item): + +def tmdbResults(item): itemlist = [] - _search = {'url': item.args, 'language': lang.tmdb, 'page': item.page if item.page else 1} + if not item.page: item.page = 1 + _search = item.search if item.search else {'url': item.args, 'language': lang.tmdb, 'page': item.page} obj = tmdb.discovery(item, _search) for result in obj.results: - if 'person' in item.args: + if 'person' in _search['url']: it = item.clone(action='showCast', channel='infoplus', folder=False) it.id = result.get('id') else: @@ -81,4 +78,128 @@ def peliculas(item): for k in ['title', 'thumbnail', 'fanart']: it.__setattr__(k, it.infoLabels.get(k)) itemlist.append(it) + + if item.page < obj.total_pages: + support.nextPage(itemlist, item, 'peliculas', page=item.page + 1, total_pages=obj.total_pages) return itemlist + +def tmdbIndex(item): + itemlist = [] + from datetime import datetime + if item.mode == 'genre': + url = '{}/{}/list?api_key={}&language={}'.format(tmdb.host, item.mode, tmdb.api, lang.tmdb) + genres = match(url, cookies=False).response.json['genres'] + + date = datetime.now().strftime('%Y-%m-%d') + sort_by = 'release_date.desc' + param_year = 'release_date.lte' + if item.contentType == 'tvshow': + sort_by = 'first_air_date.desc' + param_year = 'air_date.lte' + for genre in genres: + search = {'url': 'discover/{}'.format(item.args), 'with_genres': genre['id'], 'sort_by': sort_by, param_year: date,'language': lang.tmdb, 'page': 1} + new_item = item.clone(title=genre['name'], action='tmdbResults', search=search, mode='') + itemlist.append(new_item) + + itemlist.sort(key=lambda item: item.title) + thumb(itemlist, mode='genre') + else: + year = datetime.now().year + 3 + for i in range(year, 1899, -1): + if item.contentType == 'tvshow': + param_year = 'first_air_date_year' + else: + param_year = 'primary_release_year' + search = {'url': 'discover/{}'.format(item.args), param_year: i, 'language': lang.tmdb, 'page': 1} + itemlist.append(item.clone(title=str(i), action='tmdbResults', search=search)) + + return itemlist + +def _search(item): + text = platformtools.dialog_input(heading=item.title) + if text: + item.search['query'] = text + return tmdbResults(item) + + + +############################################################ + +def filter(item): + logger.debug() + + from datetime import datetime + list_controls = [] + valores = {} + + dict_values = None + + list_controls.append({'id': 'years', 'label': config.get_localized_string(60232), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) + list_controls[0]['lvalues'] = [] + valores['years'] = [] + year = datetime.now().year + 1 + for i in range(1900, year + 1): + list_controls[0]['lvalues'].append(str(i)) + valores['years'].append(str(i)) + list_controls[0]['lvalues'].append(config.get_localized_string(70450)) + valores['years'].append('') + + if config.get_localized_string(70038) in item.title: + # Se utilizan los valores por defecto/guardados + saved_values = config.get_setting("default_filter_" + item.args, item.channel) + if saved_values: + dict_values = saved_values + # dbg() + url = '{}/genre/{}/list?api_key={}&language={}'.format(tmdb.host, item.args, tmdb.api, lang.tmdb) + # try: + lista = support.match(url, cookies=False).response.json["genres"] + if lista: + list_controls.append({'id': 'labelgenre', 'enabled': True, 'type': 'label', 'default': None, 'label': config.get_localized_string(70451), 'visible': True}) + for l in lista: + list_controls.append({'id': 'genre' + str(l["id"]), 'label': l["name"], 'enabled': True, 'type': 'bool', 'default': False, 'visible': True}) + # except: + # pass + + list_controls.append({'id': 'orden', 'label': config.get_localized_string(70455), 'enabled': True, 'type': 'list', 'default': -1, 'visible': True}) + orden = [config.get_localized_string(70456), config.get_localized_string(70457), config.get_localized_string(70458), config.get_localized_string(70459), config.get_localized_string(70460), config.get_localized_string(70461)] + if item.args == "movie": + orden.extend([config.get_localized_string(70462), config.get_localized_string(70463)]) + orden_tmdb = ['popularity.desc', 'popularity.asc', 'release_date.desc', 'release_date.asc', 'vote_average.desc', 'vote_average.asc', 'original_title.asc', 'original_title.desc'] + valores['orden'] = [] + list_controls[-1]['lvalues'] = [] + for i, tipo_orden in enumerate(orden): + list_controls[-1]['lvalues'].insert(0, tipo_orden) + valores['orden'].insert(0, orden_tmdb[i]) + + list_controls.append({'id': 'espacio', 'label': '', 'enabled': False, 'type': 'label', 'default': None, 'visible': True}) + list_controls.append({'id': 'save', 'label': config.get_localized_string(70464), 'enabled': True, 'type': 'bool', 'default': False, 'visible': True}) + else: + list_controls.append({'id': 'keyword', 'label': config.get_localized_string(70465), 'enabled': True, 'type': 'text', 'default': '', 'visible': True}) + + item.valores = valores + return platformtools.show_channel_settings(list_controls=list_controls, dict_values=dict_values, caption=config.get_localized_string(70320), item=item, callback='filtered') + +def filtered(item, values): + values_copy = values.copy() + # Save the filter to be the one loaded by default + if "save" in values and values["save"]: + values_copy.pop("save") + config.set_setting("default_filter_" + item.args, values_copy, item.channel) + + year = item.valores["years"][values["years"]] + if config.get_localized_string(70038) in item.title: + orden = item.valores["orden"][values["orden"]] + if item.args == "tv": orden = orden.replace('release_date', 'first_air_date') + + genre_ids = [] + for v in values: + if "genre" in v: + if values[v]: genre_ids.append(v.replace('genre', '')) + genre_ids = ",".join(genre_ids) + + if config.get_localized_string(70465).lower() in item.title.lower(): item.search = {'url': 'search/%s' % item.args, 'year': year, 'query': values["keyword"], 'language': lang.tmdb, 'page': 1} + elif item.args == "movie": item.search = {'url': 'discover/%s' % item.args, 'sort_by': orden, 'primary_release_year': year, 'with_genres': genre_ids, 'vote_count.gte': '10', 'language': lang.tmdb, 'page': 1} + else: item.search = {'url': 'discover/%s' % item.args, 'sort_by': orden, 'first_air_date_year': year, 'with_genres': genre_ids, 'vote_count.gte': '10', 'language': lang.tmdb, 'page': 1} + + item.action = "list_tmdb" + return tmdbResults(item) \ No newline at end of file