def showListBuilder(self, trakt_list, forceResume=False, info_only=False): try: if len(trakt_list) == 0: tools.log('We received no titles to build a list', 'error') return except: import traceback traceback.print_exc() return if 'show' in trakt_list[0]: trakt_list = [i['show'] for i in trakt_list] show_ids = [i['ids']['trakt'] for i in trakt_list] self.itemList = trakt_database.get_show_list(show_ids) self.itemList = [x for x in self.itemList if x is not None and 'info' in x] self.itemList = tools.sort_list_items(self.itemList, trakt_list) item_list = [] for item in self.itemList: try: # Add Arguments to pass with items args = {'trakt_id': item['ids']['trakt'], 'item_type': 'show'} args = tools.quote(json.dumps(args, sort_keys=True)) name = tools.display_string(item['info']['tvshowtitle']) if info_only: return args if not self.is_aired(item['info']): if tools.getSetting('general.hideUnAired') == 'true': continue name = tools.colorString(name, 'red') name = tools.italic_string(name) item['info'] = tools.clean_air_dates(item['info']) item['info']['title'] = item['info']['tvshowtitle'] if tools.getSetting('smartplay.clickresume') == 'true' or forceResume is True: action = 'playbackResume' else: if tools.getSetting('general.flatten.episodes') == 'true': action = 'flatEpisodes' else: action = 'showSeasons' except: import traceback traceback.print_exc() continue item_list.append(tools.addDirectoryItem(name, action, item['info'], item['art'], item['cast'], isFolder=True, isPlayable=False, actionArgs=args, bulk_add=True, set_ids=item['ids'])) tools.addMenuItems(syshandle, item_list, len(item_list))
def commonListBuilder(self, trakt_list, info_return=False): if len(trakt_list) == 0: return if 'movie' in trakt_list[0]: trakt_list = [i['movie'] for i in trakt_list] self.itemList = trakt_database.get_movie_list(trakt_list) self.itemList = [x for x in self.itemList if x is not None and 'info' in x] self.itemList = tools.sort_list_items(self.itemList, trakt_list) list_items = [] for item in self.itemList: try: name = tools.display_string(item['info']['title']) if not self.is_aired(item['info']): if tools.getSetting('general.hideUnAired') == 'true': continue name = tools.colorString(name, 'red') name = tools.italic_string(name) args = {'trakt_id': item['ids']['trakt'], 'item_type': 'movie'} args = tools.quote(json.dumps(args, sort_keys=True)) except: import traceback traceback.print_exc() continue if item is None: continue if 'trakt' in item['ids']: try: bookmark = bookmark_sync.get_bookmark(item['ids']['trakt']) item['info']['resumetime'] = bookmark['timeInSeconds'] if bookmark is not None else 0 item['info']['totaltime'] = item['info']['duration'] except: pass item['info']['title'] = item['info']['originaltitle'] = name list_items.append(tools.addDirectoryItem(name, 'getSources', item['info'], item['art'], item['cast'], isFolder=False, isPlayable=True, actionArgs=args, set_ids=item['ids'], bulk_add=True)) if info_return: return list_items tools.addMenuItems(syshandle, list_items, len(list_items))
def showListBuilder(self, trakt_list, forceResume=False, info_only=False): self.threadList = [] try: if len(trakt_list) == 0: return except: return if 'show' in trakt_list[0]: buildList = [i['show'] for i in trakt_list] trakt_list = buildList for item in trakt_list: if tools.getSetting('general.metalocation') == '1': self.threadList.append(Thread(target=self.tvdbShowListWorker, args=(item,))) else: self.threadList.append(Thread(target=self.tmdbShowListWorker, args=(item,))) self.runThreads() self.itemList = tools.sort_list_items(self.itemList, trakt_list) if tools.getSetting('trakt.auth') != '': traktWatched = trakt.json_response('sync/watched/shows?extended=full') for listItem in self.itemList: try: for show in traktWatched: if show['show']['ids']['trakt'] == listItem['ids']['trakt']: listItem['info']['playcount'] = 1 episodes = 0 for season in show['seasons']: episodes += len(season['episodes']) if episodes < show['show']['aired_episodes']: listItem['info']['playcount'] = 0 break except: pass for item in self.itemList: if item is None: continue try: args = {} cm = [] action = '' # Add Arguments to pass with items args['ids'] = item['ids'] args['info'] = item['info'] args['art'] = item['art'] name = item['info']['tvshowtitle'] args = tools.quote(json.dumps(args, sort_keys=True)) if info_only == True: return args if 'setCast' in item: set_cast = item['setCast'] else: set_cast = False if tools.getSetting('smartplay.clickresume') == 'true' or forceResume is True: action = 'smartPlay' else: action = 'showSeasons' # Context Menu Items cm.append((tools.lang(32070).encode('utf-8'), 'XBMC.RunPlugin(%s?action=shufflePlay&actionArgs=%s)' % (sysaddon, args))) cm.append((tools.lang(32020).encode('utf-8'), 'Container.Update(%s?action=showsRelated&actionArgs=%s)' % (sysaddon, item['ids']['trakt']))) cm.append( (tools.lang(32069).encode('utf-8'), 'XBMC.Container.Update(%s?action=showSeasons&actionArgs=%s)' % (sysaddon, args))) if tools.getSetting('trakt.auth') != '': cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)' % (sysaddon, tools.quote(json.dumps(item['trakt_object']))))) if tools.context_addon(): cm = [] try: if tools.kodiVersion > 17: item['info'].pop('seasonCount') item['info'].pop('episodeCount') item['info'].pop('showaliases') except: pass except: import traceback traceback.print_exc() continue tools.addDirectoryItem(name, action, item['info'], item['art'], all_fanart=None, cm=cm, isFolder=True, isPlayable=False, actionArgs=args, set_cast=set_cast, set_ids=item['ids'])
def showListBuilder(self, trakt_list, forceResume=False, info_only=False): try: if len(trakt_list) == 0: return except: return if 'show' in trakt_list[0]: trakt_list = [i['show'] for i in trakt_list] show_ids = [i['ids']['trakt'] for i in trakt_list] self.itemList = TraktSyncDatabase().get_show_list(show_ids) self.itemList = [ x for x in self.itemList if x is not None and 'info' in x ] self.itemList = tools.sort_list_items(self.itemList, trakt_list) item_list = [] for item in self.itemList: try: args = {} cm = [] # Add Arguments to pass with items args['ids'] = item['ids'] args['info'] = item['info'] args['art'] = item['art'] name = tools.display_string(item['info']['tvshowtitle']) args = tools.quote(json.dumps(args, sort_keys=True)) if info_only == True: return args if not self.is_aired(item['info']): if tools.getSetting('general.hideUnAired') == 'true': continue name = tools.colorString(name, 'red') name = tools.italic_string(name) item['info'] = tools.clean_air_dates(item['info']) if 'setCast' in item: set_cast = item['setCast'] else: set_cast = False if tools.getSetting('smartplay.clickresume' ) == 'true' or forceResume is True: action = 'smartPlay' else: action = 'showSeasons' # Context Menu Items cm.append( (tools.lang(32070), 'XBMC.PlayMedia(%s?action=shufflePlay&actionArgs=%s)' % (sysaddon, args))) cm.append( (tools.lang(32020), 'Container.Update(%s?action=showsRelated&actionArgs=%s)' % (sysaddon, item['ids']['trakt']))) cm.append((tools.lang( 32069 ), 'XBMC.Container.Update(%s?action=showSeasons&actionArgs=%s)' % (sysaddon, args))) if tools.getSetting('trakt.auth') != '': cm.append( ('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)' % (sysaddon, tools.quote(json.dumps(item['trakt_object']))))) cm.append((tools.lang( 40153 ), 'XBMC.PlayMedia(%s?aciton=playFromRandomPoint&actionArgs=%s' % (sysaddon, args))) if tools.context_addon(): cm = [] except: import traceback traceback.print_exc() continue item_list.append( tools.addDirectoryItem(name, action, item['info'], item['art'], cm=cm, isFolder=True, isPlayable=False, actionArgs=args, bulk_add=True, set_cast=set_cast, set_ids=item['ids'])) tools.addMenuItems(syshandle, item_list, len(item_list))
def commonListBuilder(self, trakt_list, nextPath=None): if len(trakt_list) == 0: return if 'movie' in trakt_list[0]: trakt_list = [i['movie'] for i in trakt_list] for item in trakt_list: self.threadList.append(Thread(target=self.tmdbListWorker, args=(item,))) self.runThreads() self.itemList = tools.sort_list_items(self.itemList, trakt_list) if tools.getSetting('trakt.auth') != '': traktWatched = trakt.json_response('sync/watched/movies') for listItem in self.itemList: for i in traktWatched: if i['movie']['ids']['trakt'] == listItem['ids']['trakt']: listItem['info']['playcount'] = i['plays'] for item in self.itemList: try: # Add Arguments to pass with item args = {} args['title'] = item['info']['title'] args['year'] = item['info']['year'] args['ids'] = item['ids'] args['fanart'] = item['art']['fanart'] args['info'] = item['info'] args['art'] = item['art'] args['imdb'] = item['info']['imdbnumber'] args['tagline'] = item['info']['tagline'] args['plot'] = item['info']['plot'] args['rating'] = item['info']['rating'] args['duration'] = item['info']['duration'] name = item['info']['title'] item['info']['title'] = item['info']['originaltitle'] = name args = tools.quote(json.dumps(args)) # Begin Building Context Menu Items cm = [] cm.append((tools.lang(32020).encode('utf-8'), 'Container.Update(%s?action=moviesRelated&actionArgs=%s)' % ( sysaddon, item['ids']['trakt']))) cm.append((tools.lang(32066).encode('utf-8'), 'PlayMedia(%s?action=getSources&source_select=true&actionArgs=%s)' % (sysaddon, args))) cm.append((tools.lang(33022).encode('utf-8'), 'PlayMedia(%s?action=getSources&seren_reload=true&actionArgs=%s)' % (sysaddon, args))) if tools.getSetting('trakt.auth') != '': cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)' % (sysaddon, tools.quote(json.dumps(item['trakt_object']))))) if tools.context_addon(): cm = [] except: import traceback traceback.print_exc() continue if item is None: continue tools.addDirectoryItem(name, 'getSources', item['info'], item['art'], cm=cm, isFolder=False, isPlayable=True, actionArgs=args, set_ids=item['ids'])
def commonListBuilder(self, trakt_list, info_return=False): if len(trakt_list) == 0: return if 'movie' in trakt_list[0]: trakt_list = [i['movie'] for i in trakt_list] self.itemList = trakt_database.get_movie_list(trakt_list) self.itemList = [x for x in self.itemList if x is not None and 'info' in x] self.itemList = tools.sort_list_items(self.itemList, trakt_list) list_items = [] for item in self.itemList: try: name = tools.display_string(item['info']['title']) if not self.is_aired(item['info']): if tools.getSetting('general.hideUnAired') == 'true': continue name = tools.colorString(name, 'red') name = tools.italic_string(name) args = {'trakt_id': item['ids']['trakt'], 'item_type': 'movie'} args = tools.quote(json.dumps(args, sort_keys=True)) # Begin Building Context Menu Items cm = [] cm.append((tools.lang(32020), 'Container.Update(%s?action=moviesRelated&actionArgs=%s)' % ( sysaddon, item['ids']['trakt']))) cm.append((tools.lang(32066), 'PlayMedia(%s?action=getSourcesWorkaround&source_select=true&actionArgs=%s)' % (sysaddon, args))) cm.append((tools.lang(33022), 'PlayMedia(%s?action=getSourcesWorkaround&seren_reload=true&actionArgs=%s)' % (sysaddon, args))) if tools.getSetting('trakt.auth') != '': cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)' % (sysaddon, tools.quote(json.dumps(item['trakt_object']))))) if tools.context_addon(): cm = [] except: import traceback traceback.print_exc() continue if item is None: continue item['info']['title'] = item['info']['originaltitle'] = name list_items.append(tools.addDirectoryItem(name, 'getSources', item['info'], item['art'], cm=cm, isFolder=False, isPlayable=True, actionArgs=args, set_ids=item['ids'], bulk_add=True)) if info_return: return list_items tools.addMenuItems(syshandle, list_items, len(list_items))