示例#1
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
示例#2
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
示例#3
0
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
示例#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
示例#5
0
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
示例#6
0
def get_trakt_ids(id_type, id, type):
    try:
        return Trakt.find_trakt_ids(id_type, id, type)
    except:
        return None
示例#7
0
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
示例#8
0
def get_trakt_ids(*args, **kwargs):
    try:
        return Trakt.find_trakt_ids(*args, **kwargs)
    except:
        return None