def getSeasonCount(imdb, season = None, season_special = False, limit = False): if not imdb.startswith('tt'): return None try: if traktIndicators is False: raise Exception() result = trakt.seasonCount(imdb) if season is None: if limit and result: for i in range(len(result)): result[i]['unwatched'] = min(99, result[i]['unwatched']) return result else: if control.setting('tv.specials') == 'true' and season_special is True: result = result[int(season)] else: result = result[int(season) - 1] if limit: result['unwatched'] = min(99, result['unwatched']) return result except: pass return None
def getSeasonCount(imdb, season=None, season_special=False, limit=False): try: if trakt.getTraktIndicatorsInfo() is False: raise Exception() result = trakt.seasonCount(imdb) if season is None: if limit and result: for i in range(len(result)): result[i]['unwatched'] = min(99, result[i]['unwatched']) return result else: if control.setting( 'tv.specials') == 'true' and season_special == True: result = result[int(season)] else: result = result[int(season) - 1] # if int(season) > 1: # result = result[int(season) - 1] # else: # result = result[int(season)] if limit: result['unwatched'] = min(99, result['unwatched']) return result except: pass return None
def getSeasonCount(imdb, season=None): if not imdb.startswith('tt'): return None try: if not traktIndicators: return None result = trakt.seasonCount(imdb=imdb, refresh=False) # do not refresh for browsing if not result: return None if not season: return result else: return result.get(int(season)) except: from resources.lib.modules import log_utils log_utils.error() return None
def getSeasonCount(imdb, season=None, season_special=False): if not imdb.startswith('tt'): return None try: if not traktIndicators: return None result = trakt.seasonCount(imdb=imdb) if not result: return None if not season: return result else: if control.setting('tv.specials') == 'true' and season_special: result = result[int(season)] else: if int(season) > len(result): return None result = result[int(season) - 1] return result except: log_utils.error() return None
def getSeasonCount(imdb, season=None, limit=False): try: if trakt.getTraktIndicatorsInfo() == False: raise Exception() result = trakt.seasonCount(imdb) if season == None: if limit and result: for i in range(len(result)): result[i]['unwatched'] = min(99, result[i]['unwatched']) return result else: result = result[int(season) - 1] if limit: result['unwatched'] = min(99, result['unwatched']) return result except: pass return None
def tvshowDirectory(self, items, next=True): control.playlist.clear() if not items: # with reuselanguageinvoker on an empty directory must be loaded, do not use sys.exit() control.hide() ; control.notification(title=32002, message=33049) sysaddon, syshandle = argv[0], int(argv[1]) is_widget = 'plugin' not in control.infoLabel('Container.PluginName') settingFanart = control.setting('fanart') == 'true' addonPoster, addonFanart, addonBanner = control.addonPoster(), control.addonFanart(), control.addonBanner() indicators = getTVShowIndicators(refresh=True) unwatchedEnabled = control.setting('tvshows.unwatched.enabled') == 'true' flatten = control.setting('flatten.tvshows') == 'true' if trakt.getTraktIndicatorsInfo(): watchedMenu, unwatchedMenu = control.lang(32068), control.lang(32069) else: watchedMenu, unwatchedMenu = control.lang(32066), control.lang(32067) traktManagerMenu, queueMenu = control.lang(32070), control.lang(32065) showPlaylistMenu, clearPlaylistMenu = control.lang(35517), control.lang(35516) playRandom, addToLibrary = control.lang(32535), control.lang(32551) nextMenu = control.lang(32053) for i in items: try: imdb, tmdb, tvdb, year, trailer = i.get('imdb', ''), i.get('tmdb', ''), i.get('tvdb', ''), i.get('year', ''), i.get('trailer', '') title = i.get('tvshowtitle') or i.get('title') systitle = quote_plus(title) meta = dict((k, v) for k, v in iter(i.items()) if v is not None and v != '') meta.update({'code': imdb, 'imdbnumber': imdb, 'mediatype': 'tvshow', 'tag': [imdb, tmdb]}) # "tag" and "tagline" for movies only, but works in my skin mod so leave if unwatchedEnabled: trakt.seasonCount(imdb) # pre-cache season counts for the listed shows try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass try: if 'tvshowtitle' not in meta: meta.update({'tvshowtitle': title}) except: pass poster = meta.get('poster3') or meta.get('poster2') or meta.get('poster') or addonPoster landscape = meta.get('landscape') fanart = '' if settingFanart: fanart = meta.get('fanart3') or meta.get('fanart2') or meta.get('fanart') or landscape or addonFanart thumb = meta.get('thumb') or poster or landscape icon = meta.get('icon') or poster banner = meta.get('banner3') or meta.get('banner2') or meta.get('banner') or addonBanner art = {} art.update({'poster': poster, 'tvshow.poster': poster, 'fanart': fanart, 'icon': icon, 'thumb': thumb, 'banner': banner, 'clearlogo': meta.get('clearlogo', ''), 'tvshow.clearlogo': meta.get('clearlogo', ''), 'clearart': meta.get('clearart', ''), 'tvshow.clearart': meta.get('clearart', ''), 'landscape': landscape}) for k in ('poster2', 'poster3', 'fanart2', 'fanart3', 'banner2', 'banner3', 'trailer'): meta.pop(k, None) meta.update({'poster': poster, 'fanart': fanart, 'banner': banner, 'thumb': thumb, 'icon': icon}) ####-Context Menu and Overlays-#### cm = [] try: overlay = int(getTVShowOverlay(indicators, imdb, tvdb)) watched = (overlay == 5) if self.traktCredentials: cm.append((traktManagerMenu, 'RunPlugin(%s?action=tools_traktManager&name=%s&imdb=%s&tvdb=%s&watched=%s)' % (sysaddon, systitle, imdb, tvdb, watched))) if watched: meta.update({'playcount': 1, 'overlay': 5}) cm.append((unwatchedMenu, 'RunPlugin(%s?action=playcount_TVShow&name=%s&imdb=%s&tvdb=%s&query=4)' % (sysaddon, systitle, imdb, tvdb))) else: meta.update({'playcount': 0, 'overlay': 4}) cm.append((watchedMenu, 'RunPlugin(%s?action=playcount_TVShow&name=%s&imdb=%s&tvdb=%s&query=5)' % (sysaddon, systitle, imdb, tvdb))) except: pass sysmeta, sysart = quote_plus(jsdumps(meta)), quote_plus(jsdumps(art)) cm.append(('Find similar', 'ActivateWindow(10025,%s?action=tvshows&url=https://api.trakt.tv/shows/%s/related,return)' % (sysaddon, imdb))) cm.append((playRandom, 'RunPlugin(%s?action=play_Random&rtype=season&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&art=%s)' % (sysaddon, systitle, year, imdb, tmdb, tvdb, sysart))) cm.append((queueMenu, 'RunPlugin(%s?action=playlist_QueueItem&name=%s)' % (sysaddon, systitle))) cm.append((showPlaylistMenu, 'RunPlugin(%s?action=playlist_Show)' % sysaddon)) cm.append((clearPlaylistMenu, 'RunPlugin(%s?action=playlist_Clear)' % sysaddon)) cm.append((addToLibrary, 'RunPlugin(%s?action=library_tvshowToLibrary&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s)' % (sysaddon, systitle, year, imdb, tmdb, tvdb))) cm.append(('[COLOR red]Venom Settings[/COLOR]', 'RunPlugin(%s?action=tools_openSettings)' % sysaddon)) #################################### if flatten: url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&meta=%s' % (sysaddon, systitle, year, imdb, tmdb, tvdb, sysmeta) else: url = '%s?action=seasons&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&art=%s' % (sysaddon, systitle, year, imdb, tmdb, tvdb, sysart) if trailer: meta.update({'trailer': trailer}) else: meta.update({'trailer': '%s?action=play_Trailer&type=%s&name=%s&year=%s&imdb=%s' % (sysaddon, 'show', systitle, year, imdb)}) item = control.item(label=title, offscreen=True) if 'castandart' in i: item.setCast(i['castandart']) item.setArt(art) if unwatchedEnabled: try: count = getShowCount(indicators, imdb, tvdb) # this is threaded without .join() so not all results are immediately seen if count: item.setProperties({'WatchedEpisodes': str(count['watched']), 'UnWatchedEpisodes': str(count['unwatched'])}) item.setProperties({'TotalSeasons': str(meta.get('total_seasons', '')), 'TotalEpisodes': str(count['total'])}) else: item.setProperties({'WatchedEpisodes': '0', 'UnWatchedEpisodes': str(meta.get('total_aired_episodes', ''))}) # temp use TMDb's "total_aired_episodes" for threads not finished....next load counts will update with trakt data item.setProperties({'TotalSeasons': str(meta.get('total_seasons', '')), 'TotalEpisodes': str(meta.get('total_aired_episodes', ''))}) except: pass item.setProperty('IsPlayable', 'false') item.setProperty('tmdb_id', str(tmdb)) if is_widget: item.setProperty('isVenom_widget', 'true') item.setUniqueIDs({'imdb': imdb, 'tmdb': tmdb, 'tvdb': tvdb}) item.setInfo(type='video', infoLabels=control.metadataClean(meta)) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: from resources.lib.modules import log_utils log_utils.error() if next: try: if not items: raise Exception() url = items[0]['next'] if not url: raise Exception() url_params = dict(parse_qsl(urlsplit(url).query)) if 'imdb.com' in url and 'start' in url_params: page = ' [I](%s)[/I]' % str(int(((int(url_params.get('start')) - 1) / int(self.page_limit)) + 1)) else: page = ' [I](%s)[/I]' % url_params.get('page') nextMenu = '[COLOR skyblue]' + nextMenu + page + '[/COLOR]' u = urlparse(url).netloc.lower() if u in self.imdb_link or u in self.trakt_link: url = '%s?action=tvshowPage&url=%s' % (sysaddon, quote_plus(url)) elif u in self.tmdb_link: url = '%s?action=tmdbTvshowPage&url=%s' % (sysaddon, quote_plus(url)) elif u in self.tvmaze_link: url = '%s?action=tvmazeTvshowPage&url=%s' % (sysaddon, quote_plus(url)) item = control.item(label=nextMenu, offscreen=True) icon = control.addonNext() item.setProperty('IsPlayable', 'false') item.setArt({'icon': icon, 'thumb': icon, 'poster': icon, 'banner': icon}) item.setProperty ('SpecialSort', 'bottom') control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: from resources.lib.modules import log_utils log_utils.error() control.content(syshandle, 'tvshows') control.directory(syshandle, cacheToDisc=True) # control.sleep(500) views.setView('tvshows', {'skin.estuary': 55, 'skin.confluence': 500})