def newShows(self): hidden = hidden_database.get_hidden_items('recommendations', 'shows') datestring = datetime.datetime.today() - datetime.timedelta(days=29) trakt_list = database.get(trakt.json_response, 12, 'calendars/all/shows/new/%s/30?languages=%s' % (datestring.strftime('%d-%m-%Y'), language_code)) if trakt_list is None: tools.cancel_directory() return # For some reason trakt messes up their list and spits out tons of duplicates so we filter it duplicate_filter = [] temp_list = [] for i in trakt_list: if not i['show']['ids']['tvdb'] in duplicate_filter: duplicate_filter.append(i['show']['ids']['tvdb']) temp_list.append(i) trakt_list = temp_list trakt_list = [i for i in trakt_list if i['show']['ids']['trakt'] not in hidden] if len(trakt_list) > 40: trakt_list = trakt_list[:40] self.showListBuilder(trakt_list) tools.closeDirectory('tvshows')
def onDeckShows(self): hidden_shows = hidden_database.get_hidden_items( 'progress_watched', 'shows') trakt_list = trakt.json_response('sync/playback/episodes', limit=True) if trakt_list is None: tools.cancel_directory() return trakt_list = [ i for i in trakt_list if i['show']['ids']['trakt'] not in hidden_shows ] trakt_list = sorted( trakt_list, key=lambda i: tools.datetime_workaround(i['paused_at'][:19], format="%Y-%m-%dT%H:%M:%S", date_only=False), reverse=True) filter_list = [] showList = [] sort_list = [] for i in trakt_list: if i['show']['ids']['trakt'] not in filter_list: if int(i['progress']) != 0: showList.append(i) filter_list.append(i['show']['ids']['trakt']) sort_list.append(i['show']['ids']['trakt']) sort = {'type': 'showInfo', 'id_list': sort_list} self.mixedEpisodeBuilder(showList, sort=sort) tools.closeDirectory('episodes')
def moviesRelated(self, args): trakt_list = database.get(trakt.json_response, 12, 'movies/%s/related' % args) if trakt_list is None: tools.cancel_directory() return self.commonListBuilder(trakt_list) tools.closeDirectory('movies')
def showGenreList(self, args, page): if page is None: page = 1 if args is None: genre_display_list = [] genre_string = '' genres = database.get(trakt.json_response, 24, 'genres/shows') for genre in genres: genre_display_list.append(genre['name']) genre_multiselect = tools.showDialog.multiselect("{}: {}".format(tools.addonName, tools.lang(40298)), genre_display_list) if genre_multiselect is None: return for selection in genre_multiselect: genre_string += ', %s' % genres[selection]['slug'] genre_string = genre_string[2:] else: genre_string = args page = int(page) trakt_list = database.get(trakt.json_response, 12, 'shows/trending?genres=%s&page=%s' % (genre_string, page)) if trakt_list is None: tools.cancel_directory() return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'showGenresGet&actionArgs=%s&page=%s' % (genre_string, page + 1)) tools.closeDirectory('tvshows')
def moviesBoxOffice(self): trakt_list = database.get(trakt.json_response, 12, 'movies/boxoffice') if trakt_list is None: tools.cancel_directory() return self.commonListBuilder(trakt_list) tools.closeDirectory('movies')
def showsByActor(self, actionArgs): if actionArgs == None: k = tools.showKeyboard('', tools.lang(32016)) k.doModal() query = (k.getText() if k.isConfirmed() else None) if query == None or query == '': tools.cancel_directory() return else: query = tools.unquote(actionArgs) database.addSearchHistory(query, 'showActor') query = tools.deaccentString(query) query = query.replace(' ', '-') query = tools.quote_plus(query) trakt_list = trakt.json_response('people/%s/shows' % query, limit=True) try: trakt_list = trakt_list['cast'] except: import traceback traceback.print_exc() trakt_list = [] trakt_list = [i['show'] for i in trakt_list] self.showListBuilder(trakt_list) tools.closeDirectory('tvshows')
def movieGenresList(self, args, page): if page is None: page = 1 if args is None: genre_display_list = [] genre_string = '' genres = database.get(trakt.json_response, 24, 'genres/movies') for genre in genres: genre_display_list.append(genre['name']) genre_multiselect = tools.showDialog.multiselect( '{}: {}'.format(tools.addonName, tools.lang(40298)), genre_display_list) if genre_multiselect is None: return for selection in genre_multiselect: genre_string += ', %s' % genres[selection]['slug'] genre_string = genre_string[2:] else: genre_string = tools.unquote(args) trakt_list = trakt.json_response('movies/trending?genres=%s&page=%s' % (genre_string, page)) if trakt_list is None: tools.cancel_directory() return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'movieGenresGet&actionArgs=%s&page=%s' % (tools.quote(genre_string), int(page) + 1), isFolder=True) tools.closeDirectory('movies')
def showsCollected(self, page): trakt_list = database.get(trakt.json_response, 12, 'shows/collected?page=%s' % page) if trakt_list is None: tools.cancel_directory() return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'showsCollected&page=%s' % (int(page) + 1)) tools.closeDirectory('tvshows')
def showsRecommended(self): trakt_list = database.get(trakt.json_response, 12, 'recommendations/shows?ignore_collected=true', limit=True, limitOverride=100) if trakt_list is None: tools.cancel_directory() return self.showListBuilder(trakt_list) tools.closeDirectory('tvshows')
def showsRelated(self, args): trakt_list = database.get(trakt.json_response, 12, 'shows/%s/related' % args) if trakt_list is None: tools.cancel_directory() return self.showListBuilder(trakt_list) tools.closeDirectory('tvshows')
def showsSearchResults(self, query): query = tools.quote_plus(tools.unquote(query)) trakt_list = trakt.json_response('search/show?query=%s&extended=full&type=show&field=title' % query) if trakt_list is None: tools.cancel_directory() return self.showListBuilder([show for show in trakt_list if float(show['score']) > 0]) tools.closeAllDialogs() tools.closeDirectory('tvshows')
def moviesAnticipated(self, page): trakt_list = database.get(trakt.json_response, 12, 'movies/anticipated?page=%s' % page) if trakt_list is None: tools.cancel_directory() return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'moviesAnticipated&page=%s' % (int(page) + 1), isFolder=True) tools.closeDirectory('movies')
def moviesSearchResults(self, query): query = tools.quote_plus(tools.unquote(query)) trakt_list = trakt.json_response('search/movie?query=%s' % query) if trakt_list is None: tools.cancel_directory() return self.commonListBuilder([movie for movie in trakt_list if float(movie['score']) > 0]) tools.closeAllDialogs() tools.closeDirectory('movies')
def movieGenres(self): tools.addDirectoryItem(tools.lang(32065), 'movieGenresGet', isFolder=True) genres = database.get(trakt.json_response, 24, 'genres/movies') if genres is None: tools.cancel_directory() return for i in genres: tools.addDirectoryItem(i['name'], 'movieGenresGet&actionArgs=%s' % i['slug'], isFolder=True) tools.closeDirectory('genres')
def myShowCollection(self): trakt_list = trakt_database.get_collected_episodes() trakt_list = [i for i in trakt_list if i is not None] trakt_list = list(set([i['show_id'] for i in trakt_list])) trakt_list = [{'ids': {'trakt': i}} for i in trakt_list] trakt_list = [i for i in trakt_list if i is not None] if trakt_list is None: tools.cancel_directory() return self.showListBuilder(trakt_list) tools.closeDirectory('tvshows', sort='title')
def showsUpdated(self, page): import datetime date = datetime.date.today() - datetime.timedelta(days=31) date = date.strftime('%Y-%m-%d') trakt_list = database.get(trakt.json_response, 12, 'shows/updates/%s?page=%s' % (date, page)) if trakt_list is None: tools.cancel_directory() return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'showsUpdated&page=%s' % (int(page) + 1)) tools.closeDirectory('tvshows')
def moviesUpdated(self, page): import datetime date = datetime.date.today() - datetime.timedelta(days=31) date = date.strftime('%Y-%m-%d') trakt_list = trakt.json_response('movies/updates/%s?page=%s' % (date, page)) if trakt_list is None: tools.cancel_directory() return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'moviesUpdated&page=%s' % (int(page) + 1), isFolder=True) tools.closeDirectory('movies')
def showsNetworks(self): trakt_list = database.get(trakt.json_response, 24, 'networks') if trakt_list is None: tools.cancel_directory() return list_items = [] for i in trakt_list: list_items.append(tools.addDirectoryItem(i['name'], 'showsNetworkShows&actionArgs=%s&page=1' % i['name'], '', '', bulk_add=True)) tools.addMenuItems(syshandle, list_items, len(list_items)) tools.closeDirectory('addons')
def movieYearsMovies(self, year, page): trakt_list = database.get(trakt.json_response, 24, 'movies/popular?years=%s&page=%s' % (year, page)) if trakt_list is None: tools.cancel_directory() return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'movieYearsMovies&page=%s&actionArgs=%s' % (int(page) + 1, year)) tools.closeDirectory('movies')
def myRecentEpisodes(self): hidden_shows = hidden_database.get_hidden_items('calendar', 'shows') datestring = datetime.datetime.today() - datetime.timedelta(days=13) trakt_list = database.get(trakt.json_response, 12, 'calendars/my/shows/%s/14' % datestring.strftime('%d-%m-%Y')) if trakt_list is None: tools.cancel_directory() return trakt_list = [i for i in trakt_list if i['show']['ids']['trakt'] not in hidden_shows] self.mixedEpisodeBuilder(trakt_list) tools.closeDirectory('episodes')
def myShowWatchlist(self): trakt_list = trakt.json_response('users/me/watchlist/shows', limit=False) if trakt_list is None: tools.cancel_directory() return try: sort_by = trakt.response_headers['X-Sort-By'] sort_how = trakt.response_headers['X-Sort-How'] trakt_list = trakt.sort_list(sort_by, sort_how, trakt_list, 'show') except: tools.log('Failed to sort trakt list by response headers', 'error') pass self.showListBuilder(trakt_list) tools.closeDirectory('tvshows')
def showsNetworkShows(self, network, page): trakt_list = database.get(trakt.json_response, 24, 'shows/popular?networks=%s&page=%s' % (network, page)) if trakt_list is None: tools.cancel_directory() return self.showListBuilder(trakt_list) if len(trakt_list) == int(tools.getSetting('item.limit')): tools.addDirectoryItem(tools.lang(32019), 'showsNetworkShows&actionArgs=%s&page=%s' % (network, int(page) + 1)) tools.closeDirectory('tvshows')
def myMovieWatchlist(self): trakt_list = trakt.json_response('users/me/watchlist/movies', limit=False) if trakt_list is None: tools.cancel_directory() return try: sort_by = trakt.response_headers['X-Sort-By'] sort_how = trakt.response_headers['X-Sort-How'] trakt_list = trakt.sort_list(sort_by, sort_how, trakt_list, 'movie') except: import traceback traceback.print_exc() pass self.commonListBuilder(trakt_list) tools.closeDirectory('movies')
def showsSearch(self, actionArgs=None): if actionArgs == None: k = tools.showKeyboard('', tools.lang(32016)) k.doModal() query = (k.getText() if k.isConfirmed() else None) if query == None or query == '': tools.cancel_directory() return else: query = actionArgs query = query.decode('utf-8') database.addSearchHistory(query, 'show') query = tools.deaccentString(tools.display_string(query)) query = tools.quote(query) self.showsSearchResults(query)
def onDeckMovies(self): traktList = trakt.json_response('sync/playback/movies', limit=True) if traktList is None: tools.cancel_directory() return trakt_list = sorted(traktList, key=lambda i: tools.datetime_workaround(i['paused_at'][:19], format="%Y-%m-%dT%H:%M:%S", date_only=False), reverse=True) movie_list = [] filter_list = [] for i in trakt_list: if i['movie']['ids']['trakt'] not in filter_list: if int(i['progress']) != 0: movie_list.append(i) filter_list.append(i['movie']['ids']['trakt']) self.commonListBuilder(movie_list) tools.closeDirectory('movies')
def myProgress(self): collected_episodes = trakt_database.get_collected_episodes() collection = list(set([i['show_id'] for i in collected_episodes])) if len(collection) == 0: tools.cancel_directory() return show_dicts = [] for i in collection: show_dicts.append({'show': {'ids': {'trakt': i}}}) show_meta_list = trakt_database.get_show_list(show_dicts) unfinished = [] for show in show_meta_list: if show['info']['playcount'] == 0: unfinished.append(show) self.showListBuilder(unfinished) tools.closeDirectory('tvshows', sort='title')