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)
def list_tmdb_movies(result): genres_dict = nav_base.get_base_genres() movies = [meta_info.get_movie_metadata(item, genres_dict) for item in result['results']] items = [make_movie_item(movie) for movie in movies] if 'page' in result: page = int(result['page']) pages = int(result['total_pages']) args = nav_base.caller_args() if pages > page: 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=SORT)
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)
def list_trakt_search_items(results, pages, page): shows = [ meta_info.get_tvshow_metadata_trakt(item['show'], None) 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() nextpage = page + 1 args['page'] = page + 1 items.append({ 'label': '%s/%s [I]Next page[/I] >>' % (nextpage, pages), 'path': plugin.url_for(nav_base.caller_name(), **args), 'thumbnail': plugin.get_media_icon('item_next'), 'fanart': plugin.get_addon_fanart() }) return items
def tv_lists(): items = [{ 'label': 'Collection', 'path': plugin.url_for('lists_trakt_tv_collection'), 'thumbnail': plugin.get_media_icon('traktcollection'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [('Add to library', 'RunPlugin(%s)' % plugin.url_for('lists_trakt_tv_collection_to_library'))] }, { 'label': 'Recommendations', 'path': plugin.url_for('trakt_tv_recommendations'), 'thumbnail': plugin.get_media_icon('traktrecommendations'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'Watchlist', 'path': plugin.url_for('trakt_tv_watchlist', page=1), 'thumbnail': plugin.get_media_icon('traktwatchlist'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'My Lists', 'path': plugin.url_for('lists_trakt_my_tv_lists'), 'thumbnail': plugin.get_media_icon('traktmylists'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'Liked Lists', 'path': plugin.url_for('lists_trakt_liked_tv_lists', page=1), 'thumbnail': plugin.get_media_icon('traktlikedlists'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'Next Episodes', 'path': plugin.url_for('trakt_tv_next_episodes'), 'thumbnail': plugin.get_media_icon('traktnextepisodes'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'Upcoming Episodes', 'path': plugin.url_for('trakt_tv_upcoming_episodes'), 'thumbnail': plugin.get_media_icon('traktcalendar'), 'fanart': plugin.get_addon_fanart() }] return items
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)
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)
def list_tvshows(response): items = [] results = response['results'] for tvdb_show, tmdb_show in executor.execute(tmdb_to_tvdb, results, workers=10): if tvdb_show is not None: info = build_tvshow_info(tvdb_show, tmdb_show) items.append(make_tvshow_item(info)) if xbmc.Monitor().abortRequested(): return if 'page' in response: page = response['page'] args = nav_base.caller_args() if page < response['total_pages']: args['page'] = str(page + 1) items.append( { 'label': '%s/%s [I]Next page[/I] >>' % (page + 1, response['total_pages']), 'path': plugin.url_for(nav_base.caller_name(), **args), 'thumbnail': plugin.get_media_icon('item_next'), 'fanart': plugin.get_addon_fanart() }) return items
def search(term): items = [{ 'label': 'Movies (TMDB) search - ' + term, 'path': plugin.url_for('tmdb_movies_search_term', term=term, page=1), 'thumbnail': plugin.get_media_icon('search'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'Movies (Trakt) search - ' + term, 'path': plugin.url_for('trakt_movies_search_term', term=term, page=1), 'thumbnail': plugin.get_media_icon('search'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'TV shows (TVDB) search - ' + term, 'path': plugin.url_for('tvdb_tv_search_term', term=term, page=1), 'thumbnail': plugin.get_media_icon('search'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'TV shows (Trakt) search - ' + term, 'path': plugin.url_for('trakt_tv_search_term', term=term, page=1), 'thumbnail': plugin.get_media_icon('search'), 'fanart': plugin.get_addon_fanart() }, { 'label': 'Lists (Trakt) search - ' + term, 'path': plugin.url_for('lists_search_for_lists_term', term=term, page=1), 'thumbnail': plugin.get_media_icon('search'), 'fanart': plugin.get_addon_fanart(), }, { 'label': 'Edit search string', 'path': plugin.url_for('search_edit', term=term), 'thumbnail': plugin.get_media_icon('search'), 'fanart': plugin.get_addon_fanart() }] return items
def list_tvshows(response): items = [] results = response['results'] for tvdb_show, tmdb_show in executor.execute(tmdb_to_tvdb, results, workers=10): if tvdb_show is not None: try: info = build_tvshow_info(tvdb_show, tmdb_show) except Exception as e: xbmc.log( 'Failed to parse show, tvdbID: {}'.format( tvdb_show.get('id')), xbmc.LOGERROR) xbmc.log('Error: {}'.format(e), xbmc.LOGERROR) continue else: items.append(make_tvshow_item(info)) if xbmc.Monitor().abortRequested(): return if 'page' in response: page = response['page'] args = nav_base.caller_args() if page < response['total_pages']: args['page'] = str(page + 1) items.append({ 'label': '%s/%s [I]Next page[/I] >>' % (page + 1, response['total_pages']), 'path': plugin.url_for(nav_base.caller_name(), **args), 'thumbnail': plugin.get_media_icon('item_next'), 'fanart': plugin.get_addon_fanart() }) return items
def movies(): items = [ { 'label': 'Blockbusters (TMDB)', 'path': plugin.url_for('tmdb_movies_blockbusters', page=1), 'thumbnail': plugin.get_media_icon('most_voted'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('tmdb_movies_play_random_blockbuster'))] }, { 'label': 'In theatres (TMDB)', 'path': plugin.url_for('tmdb_movies_now_playing', page=1), 'thumbnail': plugin.get_media_icon('intheatres'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('tmdb_movies_play_random_now_playing'))] }, { 'label': 'Popular (TMDB)', 'path': plugin.url_for('tmdb_movies_popular', page=1), 'thumbnail': plugin.get_media_icon('popular'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('tmdb_movies_play_random_popular'))] }, { 'label': 'Top rated (TMDB)', 'path': plugin.url_for('tmdb_movies_top_rated', page=1), 'thumbnail': plugin.get_media_icon('top_rated'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('tmdb_movies_play_random_top_rated'))] }, { 'label': 'Most watched (Trakt)', 'path': plugin.url_for('trakt_movies_watched', page=1), 'thumbnail': plugin.get_media_icon('traktwatchlist'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('trakt_movies_play_random_watched'))] }, { 'label': 'Most collected (Trakt)', 'path': plugin.url_for('trakt_movies_collected', page=1), 'thumbnail': plugin.get_media_icon('traktcollection'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('trakt_movies_play_random_collected'))] }, { 'label': 'Popular (Trakt)', 'path': plugin.url_for('trakt_movies_popular', page=1), 'thumbnail': plugin.get_media_icon('traktrecommendations'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('trakt_movies_play_random_popular'))] }, { 'label': 'Trending (Trakt)', 'path': plugin.url_for('trakt_movies_trending', page=1), 'thumbnail': plugin.get_media_icon('trending'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('trakt_movies_play_random_trending'))] }, { 'label': 'Latest releases (Trakt)', 'path': plugin.url_for('trakt_movies_latest_releases'), 'thumbnail': plugin.get_media_icon('traktcalendar'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('trakt_movies_play_random_latest_releases'))] }, { 'label': 'Top 250 (IMDB)', 'path': plugin.url_for('trakt_movies_imdb_top_rated', page=1), 'thumbnail': plugin.get_media_icon('imdb'), 'fanart': plugin.get_addon_fanart(), 'context_menu': [ ('Play (random)', 'RunPlugin(%s)' % plugin.url_for('trakt_movies_play_random_imdb_top_rated'))] }, { 'label': 'Genres', 'path': plugin.url_for('tmdb_movies_genres'), 'thumbnail': plugin.get_media_icon('genres'), 'fanart': plugin.get_addon_fanart() }] return items