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_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 make_tvshow_item(info): from resources.lib.TheMovieDB import TV, Find try: tvdb_id = info['tvdb'] except: tvdb_id = '' if tvdb_id == '': try: tvdb_id = info['tvdb_id'] except: tvdb_id = '' try: tmdb_id = info['tmdb'] except: tmdb_id = '' if tmdb_id == '': try: tmdb_id = info['id'] except: tmdb_id = '' try: imdb_id = info['imdb_id'] except: imdb_id = '' if imdb_id == '': try: imdb_id = info['imdb'] except: imdb_id = '' if not info['poster']: info['poster'] = None if not info['fanart']: info['fanart'] = None if info['poster'] == None or info['poster'] == '': if tmdb_id != None and tmdb_id != '': show = TV(tmdb_id).info() if show['poster_path'] != None and show['poster_path'] != '': info['poster'] = u'https://image.tmdb.org/t/p/w500' + show[ 'poster_path'] if info['fanart'] == None or info['fanart'] == '': if show['backdrop_path'] != None and show[ 'backdrop_path'] != '': info[ 'fanart'] = u'https://image.tmdb.org/t/p/original' + show[ 'backdrop_path'] if info['poster'] == None or info['poster'] == '': if tvdb_id != None and tvdb_id != '': show = TVDB.get_show(int(tvdb_id), full=False) if show != None: if show['seriesname'] != None and show['seriesname'] != '': if show.get('poster', '') != None and show.get( 'poster', '') != '': info['poster'] = show.get('poster', '') if info['fanart'] == None or info['fanart'] == '': if show.get('fanart', '') != None and show.get( 'fanart', '') != '': info['fanart'] = show.get('fanart', '') if info['poster'] == None or info['poster'] == '': if imdb_id != None and imdb_id != '': preshow = Find(imdb_id).info(external_source='imdb_id') proshow = preshow['tv_results'] if proshow != []: show = proshow[0] else: show = [] if show != []: if show['poster_path'] != None and show['poster_path'] != '': info['poster'] = u'https://image.tmdb.org/t/p/w500' + show[ 'poster_path'] if info['fanart'] == None or info['fanart'] == '': if show['backdrop_path'] != None and show[ 'backdrop_path'] != '': info[ 'fanart'] = u'https://image.tmdb.org/t/p/original' + show[ 'backdrop_path'] if info['fanart'] == None or info['fanart'] == '': info['fanart'] = plugin.get_addon_fanart() if xbmc.getCondVisibility('system.hasaddon(script.extendedinfo)'): context_menu = [ ('OpenInfo', 'RunScript(script.extendedinfo,info=extendedtvinfo,tvdb_id=%s)' % tvdb_id), ('TV trailer', 'RunScript(script.extendedinfo,info=playtvtrailer,tvdb_id=%s)' % tvdb_id), ('Add to library', 'RunPlugin(%s)' % plugin.url_for('tv_add_to_library', id=tvdb_id)) ] else: context_menu = [ ('Add to library', 'RunPlugin(%s)' % plugin.url_for('tv_add_to_library', id=tvdb_id)) ] properties = {} try: if traktenabled and countenabled: if 'trakt_id' in info.keys() and info['trakt_id'] != '': id = info['trakt_id'] else: id = Trakt.find_trakt_ids('tvdb', tvdb_id, 'show')['trakt'] playdata = get_show_play_count(id) properties = { 'TotalSeasons': len(playdata['seasons']), 'TotalEpisodes': playdata['aired'], 'WatchedEpisodes': playdata['completed'], 'UnWatchedEpisodes': playdata['aired'] - playdata['completed'] } if properties['UnWatchedEpisodes'] == 0: info.update({'playcount': 1}) except: pass showitem = { 'label': text.to_utf8(info['title']), 'path': plugin.url_for('tv_tvshow', id=tvdb_id), 'context_menu': context_menu, 'thumbnail': info['poster'], 'poster': info['poster'], 'fanart': info['fanart'], 'info_type': 'video', 'stream_info': { 'video': {} }, 'properties': properties, 'info': info } if enablefanart: try: art = get_fanarttv_art(tvdb_id, query='show') art = checkart(art) showitem.update(art) except: pass return showitem
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
def make_movie_item(movie_info): try: tmdb_id = movie_info.get('tmdb') except: tmdb_id = '' if tmdb_id == '': try: tmdb_id = info['tmdb'] except: tmdb_id = False try: imdb_id = movie_info.get('imdbnumber') except: imdb_id = '' if imdb_id == '': try: imdb_id = info['imdb_id'] except: imdb_id = False if tmdb_id: id = tmdb_id src = 'tmdb' elif imdb_id: id = imdb_id src = 'imdb' else: plugin.notify('tmdb or imdb id', 'not found', plugin.get_addon_icon(), 3000) context_menu = [('Add to library', 'RunPlugin(%s)' % plugin.url_for('movies_add_to_library', src=src, id=id))] try: if traktenabled and countenabled: if 'trakt_id' in movie_info.keys( ) and movie_info['trakt_id'] != '': movie_id = movie_info['trakt_id'] elif tmdb_id != '': movie_id = Trakt.find_trakt_ids('tmdb', tmdb_id, 'movie')['trakt'] else: movie_id = Trakt.find_trakt_ids('imdb', imdb_id, 'movie')['trakt'] playdata = Trakt.get_movie_history(movie_id) movie_info.update({ 'playcount': len([ k for d in playdata for k in d.keys() if k == 'watched_at' ]) }) except: pass movieitem = { 'label': movie_info['title'], 'path': plugin.url_for('movies_play', src=src, id=id, usedefault=True), 'context_menu': context_menu, 'thumbnail': movie_info['poster'], 'banner': movie_info['fanart'], 'poster': movie_info['poster'], 'fanart': movie_info['fanart'], 'is_playable': True, 'info_type': 'video', 'stream_info': { 'video': {} }, 'info': movie_info } if enablefanart: try: art = get_fanarttv_art(id) art = checkart(art) movieitem.update(art) except: pass return movieitem
def get_trakt_ids(id_type, id, type): try: return Trakt.find_trakt_ids(id_type, id, type) except: return None
def get_trakt_ids(id_type, id, type): # xbmc.log(str('def get_trakt_ids(id_type, id, type):')+'===>OPENMETA', level=xbmc.LOGNOTICE) try: return Trakt.find_trakt_ids(id_type, id, type) except: return None
def get_trakt_ids(*args, **kwargs): try: return Trakt.find_trakt_ids(*args, **kwargs) except: return None