def showsCollected(self, page): trakt_list = database.get(trakt.json_response, 12, 'shows/collected?page=%s&extended=full' % page) if trakt_list is None: return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019).encode('utf-8'), 'showsCollected&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows')
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 myMovies(self): tools.addDirectoryItem(tools.lang(32063), 'onDeckMovies', None, None) tools.addDirectoryItem(tools.lang(32017), 'moviesMyCollection') tools.addDirectoryItem(tools.lang(32018), 'moviesMyWatchlist') tools.addDirectoryItem(tools.lang(32064), 'myTraktLists&actionArgs=movies') tools.addDirectoryItem(tools.lang(40344), 'myWatchedMovies&page=1') tools.closeDirectory('addons')
def home(self): for i in self.providers: args = {'debrid_provider': i, 'id': None} tools.addDirectoryItem(self.providers[i][0], 'myFilesFolder', isPlayable=False, isFolder=True, actionArgs=json.dumps(args)) tools.closeDirectory('addons', sort='title')
def get_real_debrid_folder(self, args): internal_files = real_debrid.RealDebrid().torrentInfo(args['id']) selected_files = [ i for i in internal_files['files'] if i['selected'] == 1 ] for idx, file in enumerate(selected_files): file['link'] = internal_files['links'][idx] try: selected_files = sorted(selected_files, key=lambda i: i['path']) except: import traceback traceback.print_exc() for file in selected_files: file.update({'debrid_provider': 'real_debrid'}) args = json.dumps(file) name = file['path'] if name.startswith('/'): name = name.split('/')[-1] tools.addDirectoryItem(name, 'myFilesPlay', None, None, isPlayable=True, isFolder=False, actionArgs=args) tools.closeDirectory('video')
def showYears(self, year=None, page=None): if year is None: current_year = int( tools.datetime_workaround( datetime.datetime.today().strftime('%Y-%m-%d')).year) all_years = reversed( [year for year in range(1900, current_year + 1)]) menu_items = [] for year in all_years: menu_items.append( tools.addDirectoryItem(str(year), 'showYears&actionArgs=%s' % year, '', '', bulk_add=True)) tools.addMenuItems(syshandle, menu_items, len(menu_items)) tools.closeDirectory('tvshows') else: if page is None: page = 1 trakt_list = trakt.json_response('shows/popular?years=%s&page=%s' % (year, page)) self.showListBuilder(trakt_list) tools.addDirectoryItem( tools.lang(32019), 'showYears&actionArgs=%s&page=%s' % (year, int(page) + 1), None, None) tools.closeDirectory('tvshows')
def showsPopular(self, page): traktList = trakt.json_response('shows/popular?page=%s&extended=full' % page) self.showListBuilder(traktList) tools.addDirectoryItem(tools.lang(32019), 'showsPopular&page=%s' % (int(page) + 1), '', '') 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(tools.addonName + ": Genre Selection", 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/popular?genres=%s&page=%s' % (genre_string, page)) if trakt_list is None: return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019).encode('utf-8'), 'movieGenresGet&actionArgs=%s&page=%s' % (tools.quote(genre_string), int(page) + 1), '', '', isFolder=True) tools.closeDirectory('movies', viewType=self.viewType)
def get_premiumize_folder(self, args): internal_files = premiumize.PremiumizeFunctions().list_folder( args['id']) for file in internal_files: file.update({'debrid_provider': 'premiumize'}) actionArgs = json.dumps(file) if file['type'] == 'folder': isPlayable = False isFolder = True action = 'myFilesFolder' else: if not any(file['name'].endswith(ext) for ext in source_utils.COMMON_VIDEO_EXTENSIONS): continue isPlayable = True isFolder = False action = 'myFilesPlay' tools.addDirectoryItem(file['name'], action, None, None, isPlayable=isPlayable, isFolder=isFolder, actionArgs=actionArgs) tools.closeDirectory('addons')
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(tools.addonName + ": Genre Selection", 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/popular?genres=%s&page=%s&extended=full' % (genre_string, page)) if trakt_list is None: return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019).encode('utf-8'), 'showGenresGet&actionArgs=%s&page=%s' % (genre_string, page + 1), None, None) tools.closeDirectory('tvshows')
def getListItems(self, arguments, page): from resources.lib.modules import database page = int(page) arguments = json.loads(tools.unquote(arguments)) media_type = arguments['type'] username = tools.quote_plus(arguments['username']) url = 'users/%s/lists/%s/items/%s?extended=full' % ( username, arguments['trakt_id'], media_type) list_items = database.get(self.json_response, 12, url, None, False) if list_items is None or len(list_items) == 0: return if media_type == 'movies': media_type = 'movie' if media_type == 'shows': media_type = 'show' page_limit = int(tools.getSetting('item.limit')) list_items = self.sort_list(arguments['sort_by'], arguments['sort_how'], list_items, media_type) list_items = tools.paginate_list(list_items, page, page_limit) next = False if len(list_items) == page_limit: next = True if media_type == 'show': list_items = [ i['show'] for i in list_items if i['type'] == 'show' and i is not None ] from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showListBuilder(list_items) if media_type == 'movie': list_items = [ i['movie'] for i in list_items if i['type'] == 'movie' and i is not None ] from resources.lib.gui import movieMenus movieMenus.Menus().commonListBuilder(list_items) content_type = 'tvshows' if media_type == 'movie': content_type = 'movies' if next: tools.addDirectoryItem( 'Next', 'traktList&page=%s&actionArgs=%s' % (page + 1, tools.quote(json.dumps(arguments))), None, None) tools.closeDirectory(content_type) return
def providerMenu(self): tools.addDirectoryItem(tools.lang(40082), 'manualProviderUpdate', None, None) tools.addDirectoryItem(tools.lang(40083), 'manageProviders', None, None) tools.closeDirectory('addons')
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 getListItems(self, arguments, page): lists_database = lists.TraktSyncDatabase() paginate_lists = ( tools.getSetting('general.paginatetraktlists') == 'true') arguments = json.loads(tools.unquote(arguments)) media_type = arguments['type'] list_items = ast.literal_eval( lists_database.get_list(arguments['trakt_id'], media_type, arguments['username'])['kodi_meta']) max_items = len(list_items) if paginate_lists: list_items = tools.paginate_list( list_items, int(page), int(tools.getSetting('item.limit'))) if media_type in ['show', 'shows']: from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showListBuilder(list_items) if media_type in ['movie', 'movies']: from resources.lib.gui import movieMenus movieMenus.Menus().commonListBuilder(list_items) content_type = 'tvshows' if media_type in ['movie', 'movies']: content_type = 'movies' if paginate_lists: limit = int(tools.getSetting('item.limit')) if int(page) * limit < max_items: tools.addDirectoryItem( tools.lang(32019), 'traktList&page=%s&actionArgs=%s' % (int(page) + 1, tools.quote(json.dumps(arguments)))) tools.closeDirectory(content_type) return
def myTraktLists(self, media_type): lists = self.getLists() try: liked_lists = [ i for i in self.json_response( 'users/likes/lists', limit=True, limitOverride=500) ] liked_lists = [i['list'] for i in liked_lists] lists += liked_lists except: import traceback traceback.print_exc() pass for user_list in lists: arguments = { 'trakt_id': user_list['ids']['slug'], 'username': user_list['user']['ids']['slug'], 'type': media_type, 'sort_how': user_list['sort_how'], 'sort_by': user_list['sort_by'] } tools.addDirectoryItem( user_list['name'], 'traktList&page=1&actionArgs=%s' % tools.quote(json.dumps(arguments)), None, None) tools.closeDirectory('addons') return
def moviesTrending(self, page): trakt_list = database.get(trakt.json_response, 12, 'movies/trending?page=%s' % page) if trakt_list is None: return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'moviesTrending&page=%s' % (int(page) + 1), '', '', isFolder=True) tools.closeDirectory('movies')
def moviesAnticipated(self, page): trakt_list = database.get(trakt.json_response, 12, 'movies/anticipated?page=%s' % page) if trakt_list is None: return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019).encode('utf-8'), 'moviesAnticipated&page=%s' % (int(page) + 1), '', '', isFolder=True) tools.closeDirectory('movies', viewType=self.viewType)
def moviesCollected(self, page): trakt_list = trakt.json_response('movies/collected?page=%s' % page) if trakt_list is None: return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'moviesCollected&page=%s' % (int(page) + 1), '', '', isFolder=True) tools.closeDirectory('movies')
def showsPlayed(self, page): traktList = database.get(trakt.json_response, 12, 'shows/played?page=%s&extended=full' % page) self.showListBuilder(traktList) tools.addDirectoryItem(tools.lang(32019), 'showsPlayed&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows')
def movieGenres(self): tools.addDirectoryItem(tools.lang(32065).encode('utf-8'), 'movieGenresGet', '', '', isFolder=True) genres = database.get(trakt.json_response, 24, 'genres/movies') if genres is None: return for i in genres: tools.addDirectoryItem(i['name'], 'movieGenresGet&actionArgs=%s' % i['slug'], '', '', isFolder=True) tools.closeDirectory('addons', cacheToDisc=True)
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 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 myWatchedEpisodes(self, page): if page is None: page = 1 watched_episodes = trakt.json_response('/sync/history/episodes/?page=%s' % page) self.mixedEpisodeBuilder(watched_episodes, sort=False, hide_watched=False, hide_unaired=False) page = int(page) tools.addDirectoryItem(tools.lang(32019), 'myWatchedEpisodes&page={}'.format(page + 1)) tools.closeDirectory('episodes')
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 myWatchedMovies(self, page): if page is None: page = 1 watched_movies = trakt.json_response('/sync/history/movies/?page=%s' % page) self.commonListBuilder(watched_movies) page = int(page) tools.addDirectoryItem(tools.lang(32019), 'myWatchedMovies&page={}'.format(page + 1)) tools.closeDirectory('movies')
def showsUpdated(self, page): import datetime date = datetime.date.today() - datetime.timedelta(days=31) date = date.strftime('%Y-%m-%d') traktList = trakt.json_response('shows/updates/%s?page=%s&extended=full' % (date, page)) self.showListBuilder(traktList) tools.addDirectoryItem(tools.lang(32019), 'showsUpdated&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows')
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&extended=full' % (date, page)) if trakt_list is None: return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019).encode('utf-8'), 'showsUpdated&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows')
def showsWatched(self, page): trakt_list = database.get(trakt.json_response, 12, 'shows/watched?page=%s' % page) if trakt_list is None: return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'showsWatched&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows')
def movieYears(self): from datetime import datetime year = int(datetime.today().year) years = [] for i in range(year - 100, year + 1): years.append(i) years = sorted(years, reverse=True) for i in years: tools.addDirectoryItem(str(i), 'movieYearsMovies&actionArgs=%s&page=1' % i, '', '') tools.closeDirectory('addons')
def moviesYears(self): from datetime import datetime year = int(datetime.today().year) years = [] for i in range(year-100, year+1): years.append(i) years = sorted(years, reverse=True) for i in years: tools.addDirectoryItem(str(i), '', '', '') tools.closeDirectory('addons', cacheToDisc=True)