def list_episodes_tvdb(id, season_num): id = int(id) season_num = int(season_num) show = TVDB[id] show_info = meta_info.get_tvshow_metadata_tvdb(show, banners=False) season = show[season_num] season_info = meta_info.get_season_metadata_tvdb(show_info, season, banners=True) items = [] for (episode_num, episode) in season.items(): if not season_num == 0 and not episode.has_aired(flexible=False): break episode_info = meta_info.get_episode_metadata_tvdb(season_info, episode) context_menu = [] properties = {} try: if traktenabled and countenabled: playdata = get_show_play_count(Trakt.find_trakt_ids('tvdb', show_info['tvdb_id'], 'show')['trakt']) season_index = nav_base.get_play_count_info(playdata, season_num) properties = { 'TotalSeasons': len(playdata['seasons']), 'TotalEpisodes': playdata['seasons'][season_index]['aired'], # 'WatchedEpisodes': playdata['seasons'][season_index]['completed'], # 'UnWatchedEpisodes': playdata['seasons'][season_index]['aired'] - playdata['seasons'][season_index]['completed'] } episode_info.update({'playcount': nav_base.get_play_count_info(playdata, season_num, episode_num)}) except: pass episodeitem = { 'label': episode_info['title'], 'path': plugin.url_for('tv_play', id=id, season=season_num, episode=episode_num, usedefault=True), 'context_menu': context_menu, 'info': episode_info, 'is_playable': True, 'info_type': 'video', 'stream_info': {'video': {}}, 'properties': properties, 'thumbnail': episode_info['poster'], 'poster': season_info['poster'], 'fanart': episode_info['fanart'] } if enablefanart: try: art = get_fanarttv_art(show_info['tvdb_id'], query='episode', season=season_num) art = checkart(art) episodeitem.update(art) except: pass items.append(episodeitem) return items
def list_seasons_tvdb(id, flatten): id = int(id) show = TVDB[id] show_info = meta_info.get_tvshow_metadata_tvdb(show, banners=False) items = [] for (season_num, season) in show.items(): if season_num == 0 and not specialsenabled: continue elif not season.has_aired(flexible=False): continue season_info = meta_info.get_season_metadata_tvdb(show_info, season) if flatten == 'none': if xbmc.getCondVisibility('system.hasaddon(script.extendedinfo)'): context_menu = [ ('OpenInfo', 'RunScript(script.extendedinfo,info=seasoninfo,tvshow=%s,season=%s)' % (show_info['name'], season_num))] else: context_menu = [] properties = {} try: if traktenabled and countenabled: playdata = get_show_play_count(Trakt.find_trakt_ids('tvdb', show_info['tvdb_id'], 'show')['trakt']) season_index = nav_base.get_play_count_info(playdata, season_num) properties = { 'TotalSeasons': len(playdata['seasons']), 'TotalEpisodes': playdata['seasons'][season_index]['aired'], 'WatchedEpisodes': playdata['seasons'][season_index]['completed'], 'UnWatchedEpisodes': playdata['seasons'][season_index]['aired'] - playdata['seasons'][season_index]['completed'] } if properties['UnWatchedEpisodes'] == 0: season_info.update({'playcount': 1}) except: pass seasonitem = { 'label': 'Season %s' % season_num, 'path': plugin.url_for('tv_season', id=id, season_num=season_num), 'context_menu': context_menu, 'info': season_info, 'properties': properties, 'thumbnail': season_info['poster'], 'poster': season_info['poster'], 'fanart': season_info['fanart'] } if enablefanart: try: art = get_fanarttv_art(show_info['tvdb_id'], query='season', season=season_num) art = checkart(art) seasonitem.update(art) except: pass items.append(seasonitem) elif flatten == 'all': items += list_episodes_tvdb(id, season_num) if flatten == 'one': items = list_episodes_tvdb(id, '1') return items
def list_trakt_episodes(result): genres_dict = dict([(x['slug'], x['name']) for x in Trakt.get_genres('shows')]) items = [] for item in result: if 'episode' in item: episode = item['episode'] else: episode = item if 'show' in item: show = item['show'] try: show_id = item['show']['ids']['tvdb'] except: show_id = item['ids'].get('tvdb') try: id = episode['show']['ids']['tvdb'] except: id = episode['ids'].get('tvdb') if not id: continue try: season_num = episode['season'] except: season_num = episode.get('season') try: episode_num = episode['number'] except: episode_num = episode.get('number') if show: tvshow_title = show.get('title').encode('utf-8') else: try: tvshow_title = (episode['show']['title']).encode('utf-8') except: tvshow_title = str(episode.get('title')).encode('utf-8') if episode['title'] != None: try: episode_title = episode['title'].encode('utf-8') except: episode_title = episode.get('title').encode('utf-8') else: episode_title = 'TBA' info = meta_info.get_tvshow_metadata_trakt(item['show'], genres_dict) episode_info = meta_info.get_episode_metadata_trakt(info, episode) episode_info['title'] = '%s (%02dx%02d): %s' % ( tvshow_title, season_num, episode_num, episode_title) context_menu = [] showdata = TVDB[int(show_id)] # extradata = play_tvshows.get_episode_parameters(showdata, season_num, episode_num) properties = {} try: if traktenabled and countenabled: playdata = get_show_play_count(info['trakt_id']) season_index = nav_base.get_play_count_info( playdata, season_num) properties = { 'TotalSeasons': len(playdata['seasons']), 'TotalEpisodes': playdata['seasons'][season_index]['aired'], # 'WatchedEpisodes': playdata['seasons'][season_index]['completed'], # 'UnWatchedEpisodes': playdata['seasons'][season_index]['aired'] - playdata['seasons'][season_index]['completed'] } episode_info.update({ 'playcount': nav_base.get_play_count_info(playdata, season_num, episode_num) }) except: pass episodeitem = { 'label': episode_info['title'], 'path': plugin.url_for('tv_play', id=id, season=season_num, episode=episode_num, usedefault=True), 'context_menu': context_menu, 'info': episode_info, 'is_playable': True, 'info_type': 'video', 'stream_info': { 'video': {} }, 'properties': properties, 'thumbnail': episode_info['fanart'], 'poster': episode_info['poster'], 'fanart': episode_info['fanart'] } if enablefanart: try: art = get_fanarttv_art(info['tvdb_id'], query='episode', season=season_num) art = checkart(art) episodeitem.update(art) except: pass items.append(episodeitem) return plugin.finish(items=items, sort_methods=SORTRAKT, cache_to_disc=False)
def _lists_trakt_show_tv_list(list_items): genres_dict = dict([(x['slug'], x['name']) for x in Trakt.get_genres('shows')]) items = [] for list_item in list_items: item = None item_type = list_item['type'] if item_type == 'show': tvdb_id = list_item['show']['ids']['tvdb'] if tvdb_id != '' and tvdb_id != None: show = list_item['show'] info = meta_info.get_tvshow_metadata_trakt(show, genres_dict) item = make_tvshow_item(info) else: item = None elif item_type == 'season': tvdb_id = list_item['show']['ids']['tvdb'] season = list_item['season'] show = list_item['show'] show_info = meta_info.get_tvshow_metadata_trakt(show, genres_dict) season_info = meta_info.get_season_metadata_trakt( show_info, season, genres_dict) label = '%s - Season %s' % (show['title'], season['number']) properties = {} try: if traktenabled and countenabled: if 'trakt' in list_item['show']['ids'].keys( ) and list_item['show']['ids']['trakt'] != '': id = list_item['show']['ids']['trakt'] else: id = Trakt.find_trakt_ids('tvdb', tvdb_id, 'show')['trakt'] playdata = get_show_play_count(id) season_index = nav_base.get_play_count_info( playdata, season['number']) properties = { 'TotalSeasons': len(playdata['seasons']), 'TotalEpisodes': playdata['seasons'][season_index]['aired'], 'WatchedEpisodes': playdata['seasons'][season_index]['completed'], 'UnWatchedEpisodes': playdata['seasons'][season_index]['aired'] - playdata['seasons'][season_index]['completed'] } if properties['UnWatchedEpisodes'] == 0: season_info.update({'playcount': 1}) except: pass item = ({ 'label': label, 'path': plugin.url_for('tv_season', id=tvdb_id, season_num=list_item['season']['number']), 'info': season_info, 'properties': properties, 'thumbnail': season_info['poster'], 'poster': season_info['poster'], 'fanart': season_info['fanart'] }) elif item_type == 'episode': tvdb_id = list_item['show']['ids']['tvdb'] episode = list_item['episode'] show = list_item['show'] season_number = episode['season'] episode_number = episode['number'] show_info = meta_info.get_tvshow_metadata_trakt(show, genres_dict) episode_info = meta_info.get_episode_metadata_trakt( show_info, episode) properties = {} try: if traktenabled and countenabled: if 'trakt' in list_item['show']['ids'].keys( ) and list_item['show']['ids']['trakt'] != '': id = list_item['show']['ids']['trakt'] else: id = Trakt.find_trakt_ids('tvdb', tvdb_id, 'show')['trakt'] playdata = get_show_play_count(id) season_index = nav_base.get_play_count_info( playdata, season_number, episode_number) properties = { 'TotalSeasons': len(playdata['seasons']), 'TotalEpisodes': playdata['seasons'][season_index]['aired'], # 'WatchedEpisodes': playdata['seasons'][season_index]['completed'], # 'UnWatchedEpisodes': playdata['seasons'][season_index]['aired'] - playdata['seasons'][season_index]['completed'] } episode_info.update({ 'playcount': nav_base.get_play_count_info(playdata, season_number, episode_number) }) except: pass label = '%s - S%sE%s - %s' % (show_info['title'], season_number, episode_number, episode_info['title']) item = ({ 'label': label, 'path': plugin.url_for('tv_play', id=tvdb_id, season=season_number, episode=episode_number), 'info': episode_info, 'is_playable': True, 'info_type': 'video', 'stream_info': { 'video': {} }, 'properties': properties, 'thumbnail': episode_info['poster'], 'poster': episode_info['poster'], 'fanart': episode_info['fanart'] }) if enablefanart: try: art = get_fanarttv_art(tvdb_id) art = checkart(art) item.update(art) except: pass if item is not None: items.append(item) return items