Exemple #1
0
def tv_trakt_popular(page, raw=False):
    results, pages = Trakt.get_popular_shows_paginated(page)
    if raw:
        return results
    else:
        genres_dict = dict([(x['slug'], x['name'])
                            for x in Trakt.get_genres('shows')])
        shows = [
            meta_info.get_tvshow_metadata_trakt(item, genres_dict)
            for item in results
        ]
        items = [
            make_tvshow_item(show) for show in shows if show.get('tvdb_id')
        ]
        page = int(page)
        pages = int(pages)
        if pages > 1:
            items.append({
                'label':
                '%s/%s  [I]Next page[/I]  >>' % (page + 1, pages + 1),
                'path':
                plugin.url_for('tv_trakt_popular', page=page + 1),
                'thumbnail':
                plugin.get_media_icon('item_next'),
                'fanart':
                plugin.get_addon_fanart()
            })
        return plugin.finish(items=items, sort_methods=SORT)
Exemple #2
0
def trakt_movies_latest_releases(raw=False):
    results = sorted(Trakt.get_latest_releases_movies(),
                     key=lambda k: k['listed_at'],
                     reverse=True)
    if raw:
        return results
    else:
        genres_dict = dict([(x['slug'], x['name'])
                            for x in Trakt.get_genres('movies')])
        movies = [
            meta_info.get_trakt_movie_metadata(item['movie'], genres_dict)
            for item in results
        ]
        items = [make_movie_item(movie) for movie in movies]
        return items
Exemple #3
0
def lists_trakt_liked_tv_lists(page):
    lists, pages = Trakt.get_liked_lists(page)
    items = []
    for list in lists:
        info = list['list']
        name = info['name']
        user = info['user']['username']
        slug = info['ids']['slug']
        items.append({
            'label':
            name,
            'path':
            plugin.url_for('lists_trakt_show_tv_list', user=user, slug=slug),
            'thumbnail':
            plugin.get_media_icon('traktlikedlists'),
            'fanart':
            plugin.get_addon_fanart()
        })
    nextpage = int(page) + 1
    if pages > page:
        items.append({
            'label':
            '%s/%s  [I]Next page[/I]  >>' % (nextpage, pages),
            'path':
            plugin.url_for('lists_trakt_liked_tv_lists', page=int(page) + 1),
            'thumbnail':
            plugin.get_media_icon('item_next'),
            'fanart':
            plugin.get_addon_fanart()
        })
    return plugin.finish(items=items, sort_methods=SORT)
Exemple #4
0
def list_trakt_tvshows(results, pages, page):
    genres_dict = dict([(x['slug'], x['name'])
                        for x in Trakt.get_genres('shows')])
    try:
        shows = [
            meta_info.get_tvshow_metadata_trakt(item['show'], genres_dict)
            for item in results
        ]
    except KeyError:
        shows = [
            meta_info.get_tvshow_metadata_trakt(item, genres_dict)
            for item in results
        ]
    items = [make_tvshow_item(show) for show in shows if show.get('tvdb_id')]
    page = int(page)
    pages = int(pages)
    if pages > 1:
        args = nav_base.caller_args()
        args['page'] = page + 1
        args['confirm'] = 'yes'
        items.append({
            'label':
            '%s/%s  [I]Next page[/I]  >>' % (page + 1, pages + 1),
            'path':
            plugin.url_for(nav_base.caller_name(), **args),
            'thumbnail':
            plugin.get_media_icon('item_next'),
            'fanart':
            plugin.get_addon_fanart()
        })
    return plugin.finish(items=items, sort_methods=SORT)
Exemple #5
0
def lists_trakt_tv_collection(raw=False):
	results = sorted(Trakt.get_collection('shows'), key=lambda k: k['last_collected_at'], reverse=True)
	if raw:
		return results
	shows = [meta_info.get_tvshow_metadata_trakt(item['show']) for item in results]
	items = [make_tvshow_item(show) for show in shows if show.get('tvdb_id')]
	return items
Exemple #6
0
def list_trakt_movies(results, pages=1, page=1):
    genres_dict = dict([(x['slug'], x['name'])
                        for x in Trakt.get_genres('movies')])
    try:
        movies = [
            meta_info.get_trakt_movie_metadata(item['movie'], genres_dict)
            for item in results
        ]
    except KeyError:
        movies = [
            meta_info.get_trakt_movie_metadata(item, genres_dict)
            for item in results
        ]
    items = [make_movie_item(movie) for movie in movies]
    page = int(page)
    pages = int(pages)
    if pages > 1:
        args = nav_base.caller_args()
        args['page'] = page + 1
        args['confirm'] = 'yes'
        items.append({
            'label': '%s/%s  [I]Next page[/I]  >>' % (page, pages + 1),
            'path': plugin.url_for(nav_base.caller_name(), **args),
            'thumbnail': plugin.get_media_icon('item_next'),
            'fanart': plugin.get_addon_fanart()
        })
    return plugin.finish(items=items, sort_methods=SORTRAKT)
Exemple #7
0
def lists_trakt_movies_collection(raw=False):
	results = sorted(Trakt.get_collection('movies'), key=lambda k: k['collected_at'], reverse=True)
	if raw:
		return results
	movies = [meta_info.get_trakt_movie_metadata(item['movie']) for item in results]
	items = [make_movie_item(movie) for movie in movies]
	return items
Exemple #8
0
def trakt_movies_latest_releases(raw=False):
    results = sorted(Trakt.get_latest_releases_movies(),
                     key=lambda k: k['listed_at'],
                     reverse=True)
    if raw:
        return results
    else:
        return list_trakt_movies(results)
Exemple #9
0
def list_trakt_persons(results):
    genres_dict = dict([(x['slug'], x['name'])
                        for x in Trakt.get_genres('movies')])
    movies = [
        meta_info.get_trakt_movie_metadata(item['movie'], genres_dict)
        for item in results
    ]
    items = [make_movie_item(movie) for movie in movies]
    return items
Exemple #10
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 #11
0
def trakt_tv_next_episodes(raw=False):
	items = []
	result = Trakt.get_next_episodes()
	for episode in result:
		trakt_id = episode['show']['ids']['trakt']
		episode_info = Trakt.get_episode(trakt_id, episode['season'], episode['number'])
		first_aired_string = episode_info.get('first_aired', '')
		if not first_aired_string:
			continue
		episode['first_aired'] = first_aired_string
		if int(first_aired_string[:4]) < 1970:
			items.append(episode)
		elif first_aired_string:
			first_aired = time.mktime(time.strptime(first_aired_string[:19], '%Y-%m-%dT%H:%M:%S'))
			if first_aired < time.time():
				items.append(episode)
	if raw:
		return items
	else:
		return list_trakt_episodes(items)
Exemple #12
0
def lists_search_for_lists_term(term, page):
    lists, pages = Trakt.search_for_list(term, page)
    items = []
    for list in lists:
        if 'list' in list:
            list_info = list['list']
        else:
            continue
        name = list_info['name']
        user = list_info['username']
        slug = list_info['ids']['slug']
        total = list_info['item_count']
        info = {}
        info['title'] = name
        if 'description' in list_info:
            info['plot'] = list_info['description']
        else:
            info['plot'] = 'No description available'
        if user != None and total != None and total != 0:
            items.append({
                'label':
                '%s - %s (%s)' %
                (text.to_utf8(name), text.to_utf8(user), total),
                'path':
                plugin.url_for('lists_trakt_show_list', user=user, slug=slug),
                'thumbnail':
                plugin.get_media_icon('traktlikedlists'),
                'context_menu':
                [('Play (random)', 'RunPlugin(%s)' % plugin.url_for(
                    'lists_trakt_play_random', user=user, slug=slug))],
                'info':
                info
            })
            for item in items:
                item['properties'] = {
                    'fanart_image': plugin.get_addon_fanart()
                }
    nextpage = int(page) + 1
    if pages > page:
        items.append({
            'label':
            '%s/%s  [I]Next page[/I]  >>' % (nextpage, pages),
            'path':
            plugin.url_for('lists_search_for_lists_term',
                           term=term,
                           page=int(page) + 1),
            'thumbnail':
            plugin.get_media_icon('item_next'),
            'properties': {
                'fanart_image': plugin.get_addon_fanart()
            }
        })
    return plugin.finish(items=items, sort_methods=SORT)
Exemple #13
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 #14
0
def lists_trakt_my_movie_lists():
	lists = Trakt.get_lists()
	items = []
	for list in lists:
		name = list['name']
		user = list['user']['username']
		slug = list['ids']['slug']
		items.append(
			{
				'label': name,
				'path': plugin.url_for('lists_trakt_show_movie_list', user=user, slug=slug),
				'thumbnail': plugin.get_media_icon('traktmylists'),
				'fanart': plugin.get_addon_fanart()
			})
	return plugin.finish(items=items, sort_methods=SORT)
Exemple #15
0
def get_show_play_count(id):
    if specialsenabled:
        return Trakt.get_show_play_count_specials(id)
    else:
        return Trakt.get_show_play_count(id)
Exemple #16
0
def trakt_tv_collected(page, raw=False):
    results, pages = Trakt.get_collected_shows_paginated(page)
    if raw:
        return results
    else:
        return list_trakt_tvshows(results, pages, page)
Exemple #17
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 #18
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
Exemple #19
0
def trakt_tv_search_term(term, page):
    results, pages = Trakt.search_for_tvshow_paginated(term, page)
    return list_trakt_search_items(results, pages, page)
Exemple #20
0
def trakt_movies_person(person_id, raw=False):
	result = Trakt.get_person_movies(person_id)['cast']
	if raw:
		return result
	else:
		return list_trakt_persons(result)
Exemple #21
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
Exemple #22
0
def trakt_tv_trending(page, raw=False):
    results, pages = Trakt.get_trending_shows_paginated(page)
    if raw:
        return results
    else:
        list_trakt_tvshows(results, pages, page)
Exemple #23
0
def lists_trakt_show_tv_list(user, slug, raw=False):
    list_items = Trakt.get_list(user, slug)
    if raw:
        return list_items
    return _lists_trakt_show_tv_list(list_items)
Exemple #24
0
def lists_trakt_tv_collection_to_library():
    tv_add_all_to_library(Trakt.get_collection('shows'))
Exemple #25
0
def trakt_movies_recommendations(raw=False):
	result = Trakt.get_recommendations('movies')
	if raw:
		return result
	else:
		return list_trakt_movies(result, '1', '1')
Exemple #26
0
def trakt_movies_watchlist(raw=False):
	result = Trakt.get_watchlist('movies')
	if raw:
		return result
	else:
		return list_trakt_movies(result, '1', '1')
Exemple #27
0
def trakt_tv_watchlist(raw=False):
    result = Trakt.get_watchlist('shows')
    if raw:
        return result
    else:
        return list_trakt_tvshows(result, '1', '1')
Exemple #28
0
def trakt_tv_upcoming_episodes(raw=False):
    result = Trakt.get_calendar()
    if raw:
        return result
    else:
        return list_trakt_episodes(result)
Exemple #29
0
def lists_trakt_movies_collection_to_library():
	movies_add_all_to_library(Trakt.get_collection('movies'))
Exemple #30
0
def trakt_tv_recommendations(raw=False):
    result = Trakt.get_recommendations('shows')
    if raw:
        return result
    else:
        return list_trakt_tvshows(result, '1', '1')
Exemple #31
0
def start_info_actions(info, params):
    if "artistname" in params:
        params["artistname"] = params.get("artistname", "").split(" feat. ")[0].strip()
        if not params.get("artist_mbid"):
            params["artist_mbid"] = utils.fetch_musicbrainz_id(params["artistname"])
    utils.log(info)
    utils.pp(params)
    if "prefix" in params and not params["prefix"].endswith('.'):
        params["prefix"] = params["prefix"] + '.'

    # Audio
    if info == 'discography':
        discography = AudioDB.get_artist_discography(params["artistname"])
        if not discography:
            discography = LastFM.get_artist_albums(params.get("artist_mbid"))
        return discography
    elif info == 'mostlovedtracks':
        return AudioDB.get_most_loved_tracks(params["artistname"])
    elif info == 'trackdetails':
        return AudioDB.get_track_details(params.get("id", ""))
    elif info == 'topartists':
        return LastFM.get_top_artists()
    #  The MovieDB
    elif info == 'incinemamovies':
        return tmdb.get_movies("now_playing")
    elif info == 'upcomingmovies':
        return tmdb.get_movies("upcoming")
    elif info == 'topratedmovies':
        return tmdb.get_movies("top_rated")
    elif info == 'popularmovies':
        return tmdb.get_movies("popular")
    elif info == 'ratedmovies':
        return tmdb.get_rated_media_items("movies")
    elif info == 'starredmovies':
        return tmdb.get_fav_items("movies")
    elif info == 'accountlists':
        return tmdb.handle_lists(tmdb.get_account_lists())
    elif info == 'listmovies':
        return tmdb.get_movies_from_list(params["id"])
    elif info == 'airingtodaytvshows':
        return tmdb.get_tvshows("airing_today")
    elif info == 'onairtvshows':
        return tmdb.get_tvshows("on_the_air")
    elif info == 'topratedtvshows':
        return tmdb.get_tvshows("top_rated")
    elif info == 'populartvshows':
        return tmdb.get_tvshows("popular")
    elif info == 'ratedtvshows':
        return tmdb.get_rated_media_items("tv")
    elif info == 'ratedepisodes':
        return tmdb.get_rated_media_items("tv/episodes")
    elif info == 'starredtvshows':
        return tmdb.get_fav_items("tv")
    elif info == 'similarmovies':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.get_similar_movies(movie_id)
    elif info == 'similartvshows':
        tvshow_id = None
        dbid = params.get("dbid")
        name = params.get("name")
        tmdb_id = params.get("tmdb_id")
        tvdb_id = params.get("tvdb_id")
        imdb_id = params.get("imdb_id")
        if tmdb_id:
            tvshow_id = tmdb_id
        elif dbid and int(dbid) > 0:
            tvdb_id = local_db.get_imdb_id("tvshow", dbid)
            if tvdb_id:
                tvshow_id = tmdb.get_show_tmdb_id(tvdb_id)
        elif tvdb_id:
            tvshow_id = tmdb.get_show_tmdb_id(tvdb_id)
        elif imdb_id:
            tvshow_id = tmdb.get_show_tmdb_id(imdb_id, "imdb_id")
        elif name:
            tvshow_id = tmdb.search_media(media_name=name,
                                          year="",
                                          media_type="tv")
        if tvshow_id:
            return tmdb.get_similar_tvshows(tvshow_id)
    elif info == 'studio':
        if params.get("id"):
            return tmdb.get_company_data(params["id"])
        elif params.get("studio"):
            company_data = tmdb.search_companies(params["studio"])
            if company_data:
                return tmdb.get_company_data(company_data[0]["id"])
    elif info == 'set':
        if params.get("dbid"):
            name = local_db.get_set_name(params["dbid"])
            if name:
                params["setid"] = tmdb.get_set_id(name)
        if params.get("setid"):
            set_data, _ = tmdb.get_set_movies(params["setid"])
            return set_data
    elif info == 'movielists':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.get_movie_lists(movie_id)
    elif info == 'keywords':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.get_keywords(movie_id)
    elif info == 'trailers':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.handle_videos(tmdb.get_movie_videos(movie_id))
    elif info == 'popularpeople':
        return tmdb.get_popular_actors()
    elif info == 'personmovies':
        person = tmdb.get_person_info(person_label=params.get("person"),
                                      skip_dialog=True)
        if person and person.get("id"):
            movies = tmdb.get_person_movies(person["id"])
            if not movies:
                return None
            for item in movies:
                del item["credit_id"]
            return movies.reduce(key="department")
    elif info == 'traktsimilarmovies':
        if params.get("id") or params.get("dbid"):
            if params.get("dbid"):
                movie_id = local_db.get_imdb_id("movie", params["dbid"])
            else:
                movie_id = params["id"]
            return Trakt.get_similar("movie", movie_id)
    elif info == 'traktsimilartvshows':
        if params.get("id") or params.get("dbid"):
            if params.get("dbid"):
                if params.get("type") == "episode":
                    tvshow_id = local_db.get_tvshow_id_by_episode(params["dbid"])
                else:
                    tvshow_id = local_db.get_imdb_id(media_type="tvshow",
                                                     dbid=params["dbid"])
            else:
                tvshow_id = params["id"]
            return Trakt.get_similar("show", tvshow_id)
    elif info == 'airingepisodes':
        return Trakt.get_episodes("shows")
    elif info == 'premiereepisodes':
        return Trakt.get_episodes("premieres")
    elif info == 'trendingshows':
        return Trakt.get_shows("trending")
    elif info == 'popularshows':
        return Trakt.get_shows("popular")
    elif info == 'anticipatedshows':
        return Trakt.get_shows("anticipated")
    elif info == 'mostcollectedshows':
        return Trakt.get_shows_from_time("collected")
    elif info == 'mostplayedshows':
        return Trakt.get_shows_from_time("played")
    elif info == 'mostwatchedshows':
        return Trakt.get_shows_from_time("watched")
    elif info == 'trendingmovies':
        return Trakt.get_movies("trending")
    elif info == 'traktpopularmovies':
        return Trakt.get_movies("popular")
    elif info == 'mostplayedmovies':
        return Trakt.get_movies_from_time("played")
    elif info == 'mostwatchedmovies':
        return Trakt.get_movies_from_time("watched")
    elif info == 'mostcollectedmovies':
        return Trakt.get_movies_from_time("collected")
    elif info == 'mostanticipatedmovies':
        return Trakt.get_movies("anticipated")
    elif info == 'traktboxofficemovies':
        return Trakt.get_movies("boxoffice")
    elif info == 'similarartistsinlibrary':
        return local_db.get_similar_artists(params.get("artist_mbid"))
    elif info == 'trackinfo':
        addon.clear_global('%sSummary' % params.get("prefix", ""))
        if params["artistname"] and params["trackname"]:
            track_info = LastFM.get_track_info(artist_name=params["artistname"],
                                               track=params["trackname"])
            addon.set_global('%sSummary' % params.get("prefix", ""), track_info["summary"])
    elif info == 'topartistsnearevents':
        artists = local_db.get_artists()
        import BandsInTown
        return BandsInTown.get_near_events(artists[0:49])
    elif info == 'youtubesearchvideos':
        addon.set_global('%sSearchValue' % params.get("prefix", ""), params.get("id", ""))
        if params.get("id"):
            return youtube.search(search_str=params.get("id", ""),
                                  hd=params.get("hd"),
                                  orderby=params.get("orderby", "relevance"))
    elif info == 'youtubeplaylistvideos':
        return youtube.get_playlist_videos(params.get("id", ""))
    elif info == 'youtubeusersearchvideos':
        user_name = params.get("id")
        if user_name:
            playlists = youtube.get_user_playlists(user_name)
            return youtube.get_playlist_videos(playlists["uploads"])
    elif info == 'favourites':
        if params.get("id"):
            items = favs.get_favs_by_type(params["id"])
        else:
            items = favs.get_favs()
            addon.set_global('favourite.count', str(len(items)))
            if items:
                addon.set_global('favourite.1.name', items[-1]["label"])
        return items
    elif info == "addonsbyauthor":
        items = favs.get_addons_by_author(params.get("id"))
    elif info == 'similarlocalmovies' and "dbid" in params:
        return local_db.get_similar_movies(params["dbid"])
    elif info == 'iconpanel':
        return favs.get_icon_panel(int(params["id"])), "IconPanel" + str(params["id"])
    # ACTIONS
    if params.get("handle"):
        xbmcplugin.setResolvedUrl(handle=int(params.get("handle")),
                                  succeeded=False,
                                  listitem=xbmcgui.ListItem())
    if info in ['playmovie', 'playepisode', 'playmusicvideo', 'playalbum', 'playsong']:
        kodijson.play_media(media_type=info.replace("play", ""),
                            dbid=params.get("dbid"),
                            resume=params.get("resume", "true"))
    elif info == "openinfodialog":
        if xbmc.getCondVisibility("System.HasActiveModalDialog"):
            container_id = ""
        else:
            container_id = "Container(%s)" % utils.get_infolabel("System.CurrentControlId")
        dbid = utils.get_infolabel("%sListItem.DBID" % container_id)
        db_type = utils.get_infolabel("%sListItem.DBType" % container_id)
        if db_type == "movie":
            params = {"dbid": dbid,
                      "id": utils.get_infolabel("%sListItem.Property(id)" % container_id),
                      "name": utils.get_infolabel("%sListItem.Title" % container_id)}
            start_info_actions("extendedinfo", params)
        elif db_type == "tvshow":
            params = {"dbid": dbid,
                      "tvdb_id": utils.get_infolabel("%sListItem.Property(tvdb_id)" % container_id),
                      "id": utils.get_infolabel("%sListItem.Property(id)" % container_id),
                      "name": utils.get_infolabel("%sListItem.Title" % container_id)}
            start_info_actions("extendedtvinfo", params)
        elif db_type == "season":
            params = {"tvshow": utils.get_infolabel("%sListItem.TVShowTitle" % container_id),
                      "season": utils.get_infolabel("%sListItem.Season" % container_id)}
            start_info_actions("seasoninfo", params)
        elif db_type == "episode":
            params = {"tvshow": utils.get_infolabel("%sListItem.TVShowTitle" % container_id),
                      "season": utils.get_infolabel("%sListItem.Season" % container_id),
                      "episode": utils.get_infolabel("%sListItem.Episode" % container_id)}
            start_info_actions("extendedepisodeinfo", params)
        elif db_type in ["actor", "director"]:
            params = {"name": utils.get_infolabel("%sListItem.Label" % container_id)}
            start_info_actions("extendedactorinfo", params)
        else:
            utils.notify("Error", "Could not find valid content type")
    elif info == "ratedialog":
        if xbmc.getCondVisibility("System.HasModalDialog"):
            container_id = ""
        else:
            container_id = "Container(%s)" % utils.get_infolabel("System.CurrentControlId")
        dbid = utils.get_infolabel("%sListItem.DBID" % container_id)
        db_type = utils.get_infolabel("%sListItem.DBType" % container_id)
        if db_type == "movie":
            params = {"dbid": dbid,
                      "id": utils.get_infolabel("%sListItem.Property(id)" % container_id),
                      "type": "movie"}
            start_info_actions("ratemedia", params)
        elif db_type == "tvshow":
            params = {"dbid": dbid,
                      "id": utils.get_infolabel("%sListItem.Property(id)" % container_id),
                      "type": "tv"}
            start_info_actions("ratemedia", params)
        if db_type == "episode":
            params = {"tvshow": utils.get_infolabel("%sListItem.TVShowTitle" % container_id),
                      "season": utils.get_infolabel("%sListItem.Season" % container_id),
                      "type": "episode"}
            start_info_actions("ratemedia", params)
    elif info == 'youtubebrowser':
        wm.open_youtube_list(search_str=params.get("id", ""))
    elif info == 'moviedbbrowser':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        search_str = params.get("id", "")
        if not search_str and params.get("search"):
            result = xbmcgui.Dialog().input(heading=addon.LANG(16017),
                                            type=xbmcgui.INPUT_ALPHANUM)
            if result and result > -1:
                search_str = result
            else:
                addon.clear_global('infodialogs.active')
                return None
        wm.open_video_list(search_str=search_str,
                           mode="search")
        addon.clear_global('infodialogs.active')
    elif info == 'extendedinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_movie_info(movie_id=params.get("id"),
                           dbid=params.get("dbid"),
                           imdb_id=params.get("imdb_id"),
                           name=params.get("name"))
        addon.clear_global('infodialogs.active')
    elif info == 'extendedactorinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_actor_info(actor_id=params.get("id"),
                           name=params.get("name"))
        addon.clear_global('infodialogs.active')
    elif info == 'extendedtvinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_tvshow_info(tmdb_id=params.get("id"),
                            tvdb_id=params.get("tvdb_id"),
                            dbid=params.get("dbid"),
                            imdb_id=params.get("imdb_id"),
                            name=params.get("name"))
        addon.clear_global('infodialogs.active')
    elif info == 'seasoninfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_season_info(tvshow=params.get("tvshow"),
                            dbid=params.get("dbid"),
                            season=params.get("season"))
        addon.clear_global('infodialogs.active')
    elif info == 'extendedepisodeinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_episode_info(tvshow=params.get("tvshow"),
                             tvshow_id=params.get("tvshow_id"),
                             dbid=params.get("dbid"),
                             episode=params.get("episode"),
                             season=params.get("season"))
        addon.clear_global('infodialogs.active')
    elif info == 'albuminfo':
        if params.get("id"):
            album_details = AudioDB.get_album_details(params.get("id"))
            utils.dict_to_windowprops(album_details, params.get("prefix", ""))
    elif info == 'artistdetails':
        artist_details = AudioDB.get_artist_details(params["artistname"])
        utils.dict_to_windowprops(artist_details, params.get("prefix", ""))
    elif info == 'ratemedia':
        media_type = params.get("type")
        if not media_type:
            return None
        if params.get("id"):
            tmdb_id = params["id"]
        elif media_type == "movie":
            tmdb_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                             dbid=params.get("dbid"),
                                             name=params.get("name"))
        elif media_type == "tv" and params.get("dbid"):
            tvdb_id = local_db.get_imdb_id(media_type="tvshow",
                                           dbid=params["dbid"])
            tmdb_id = tmdb.get_show_tmdb_id(tvdb_id=tvdb_id)
        else:
            return False
        rating = utils.input_userrating()
        if rating == -1:
            return None
        tmdb.set_rating(media_type=media_type,
                        media_id=tmdb_id,
                        rating=rating,
                        dbid=params.get("dbid"))
    elif info == 'action':
        for builtin in params.get("id", "").split("$$"):
            xbmc.executebuiltin(builtin)
    elif info == "youtubevideo":
        xbmc.executebuiltin("Dialog.Close(all,true)")
        wm.play_youtube_video(params.get("id", ""))
    elif info == 'playtrailer':
        busy.show_busy()
        if params.get("id"):
            movie_id = params["id"]
        elif int(params.get("dbid", -1)) > 0:
            movie_id = local_db.get_imdb_id(media_type="movie",
                                            dbid=params["dbid"])
        elif params.get("imdb_id"):
            movie_id = tmdb.get_movie_tmdb_id(params["imdb_id"])
        else:
            movie_id = ""
        if movie_id:
            trailers = tmdb.get_movie_videos(movie_id)
            busy.hide_busy()
            time.sleep(0.1)
            if trailers:
                wm.play_youtube_video(trailers[0]["key"])
            elif params.get("title"):
                wm.open_youtube_list(search_str=params["title"])
            else:
                busy.hide_busy()
    elif info == 'deletecache':
        addon.clear_globals()
        for rel_path in os.listdir(addon.DATA_PATH):
            path = os.path.join(addon.DATA_PATH, rel_path)
            try:
                if os.path.isdir(path):
                    shutil.rmtree(path)
            except Exception as e:
                utils.log(e)
        utils.notify("Cache deleted")
    elif info == 'tmdbpassword':
        addon.set_password_prompt("tmdb_password")
    elif info == 'syncwatchlist':
        pass