Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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