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 get_hosters(self, hosters): host_list = database.get(self.getRelevantHosters, 1) if host_list is None: host_list = self.getRelevantHosters() if host_list is not None: hosters['premium']['real_debrid'] = [(i, i.split('.')[0]) for i in host_list] else: hosters['premium']['real_debrid'] = []
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 getHosterList(self): from resources.lib.modules import database try: hosters = {'premium': {}, 'free': []} try: if tools.getSetting( 'premiumize.enabled') == 'true' and tools.getSetting( 'premiumize.hosters') == 'true': host_list = database.get( Premiumize.PremiumizeFunctions().updateRelevantHosters, 1) if host_list is None: host_list = Premiumize.PremiumizeFunctions( ).updateRelevantHosters() if host_list is not None: hosters['premium']['premiumize'] = [ (i, i.split('.')[0]) for i in host_list['directdl'] ] else: hosters['premium']['premiumize'] = [] except: pass try: if tools.getSetting( 'realdebrid.enabled') == 'true' and tools.getSetting( 'rd.hosters') == 'true': host_list = database.get( real_debrid.RealDebrid().getRelevantHosters, 1) if host_list is None: host_list = real_debrid.RealDebrid( ).getRelevantHosters() if host_list is not None: hosters['premium']['real_debrid'] = [ (i, i.split('.')[0]) for i in host_list ] else: hosters['premium']['real_debrid'] = [] except: pass return hosters except: import traceback traceback.print_exc()
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 moviesRecommended(self): traktList = database.get(trakt.json_response, 12, 'recommendations/movies', limit=True, limitOverride=100) self.commonListBuilder(traktList) tools.closeDirectory('movies', viewType=self.viewType)
def showsRelated(self, args): trakt_list = database.get(trakt.json_response, 12, 'shows/%s/related' % args) if trakt_list is None: return self.showListBuilder(trakt_list) 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 moviesWatched(self, page): trakt_list = database.get(trakt.json_response, 12, 'movies/watched?page=%s' % page) if trakt_list is None: return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'moviesWatched&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 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 getListItems(self, arguments, page): from resources.lib.modules import database page = int(page) arguments = json.loads(tools.unquote(arguments)) media_type = arguments['type'] list_items = database.get( self.json_response, 12, 'users/%s/lists/%s/items/%s?extended=full' % ( arguments['username'], arguments['trakt_id'], media_type, ), None, False) 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 showsRecommended(self): traktList = database.get(trakt.json_response, 12, 'recommendations/shows?extended=full', limit=True, limitOverride=100) self.showListBuilder(traktList) tools.closeDirectory('tvshows')
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 moviesTrending(self, page): trakt_list = database.get(trakt.json_response, 12, 'movies/trending?page=%s' % page) if trakt_list is None: tools.cancel_directory() return self.commonListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'moviesTrending&page=%s' % (int(page) + 1), isFolder=True) tools.closeDirectory('movies')
def showsPopular(self, page): trakt_list = database.get(trakt.json_response, 12, 'shows/popular?page=%s&extended=full' % page) if trakt_list is None: return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019).encode('utf-8'), 'showsPopular&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows')
def get_hosters(self, hosters): host_list = database.get(self.updateRelevantHosters, 1) if host_list is None: host_list = self.updateRelevantHosters() if host_list is not None: hosters['premium']['premiumize'] = [(i, i.split('.')[0]) for i in host_list['directdl']] else: hosters['premium']['premiumize'] = []
def newShows(self): datestring = datetime.datetime.today() - datetime.timedelta(days=30) trakt_list = database.get( trakt.json_response, 12, 'calendars/all/shows/new/%s/30?extended=full' % datestring.strftime('%d-%m-%Y')) if len(trakt_list) > 40: trakt_list = trakt_list[:40] self.showListBuilder(trakt_list) tools.closeDirectory('tvshows')
def myUpcomingEpisodes(self): tomorrow = (datetime.date.today() + datetime.timedelta(days=1)).strftime('%Y-%m-%d') upcoming_episodes = database.get(trakt.json_response, 24, 'calendars/my/shows/%s/30' % tomorrow) sort = sorted(upcoming_episodes, key=lambda i: i['first_aired']) sort = [i['episode']['ids']['trakt'] for i in sort] sort = {'type': None, 'id_list': sort} self.mixedEpisodeBuilder(upcoming_episodes, sort=sort, hide_watched=False, hide_unaired=False, prepend_date=True) tools.closeDirectory('episodes')
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 myRecentEpisodes(self): hidden_shows = trakt.get_trakt_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?extended=full' % datestring.strftime('%d-%m-%Y')) if trakt_list is None: return trakt_list = [i for i in trakt_list if i['show']['ids']['trakt'] not in hidden_shows] self.directToEpisodeBuilder(trakt_list) tools.closeDirectory('episodes')
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 get_season_episodes(self, show_id, season): try: cursor = self._get_cursor() cursor.execute('SELECT * FROM shows WHERE trakt_id=?', (show_id,)) show_object = cursor.fetchone() cursor.execute('SELECT * FROM seasons WHERE show_id=? AND season=?', (show_id, season)) season_object = cursor.fetchone() cursor.execute('SELECT * FROM episodes WHERE show_id=? AND season=?', (show_id, season)) season_episodes = cursor.fetchall() cursor.close() show_object = ast.literal_eval(show_object['kodi_meta']) season_meta = ast.literal_eval(season_object['kodi_meta']) season_episode_count = season_meta['info']['episode_count'] season_aired_count = season_meta['info']['aired_episodes'] if int(season_episode_count) == 0: raise Exception if int(season_episode_count) > int(season_aired_count): # Because of trakt caching, we can not trust the information gathered on the last call if the season # is not completely aired. We can limit the amount this slow down is occured by limiting it to # only unfinished seasons raise Exception if len(season_episodes) < int(season_aired_count): raise Exception if len([i for i in season_episodes if i['kodi_meta'] == '{}']) > 0: raise Exception for episode in season_episodes: episode['kodi_meta'] = ast.literal_eval(episode['kodi_meta']) for episode in season_episodes: episode = self.update_episode_playcount(episode) episode['kodi_meta'].update({'showInfo': show_object}) return [episode['kodi_meta'] for episode in season_episodes] except: import traceback traceback.print_exc() trakt_list = database.get(trakt.TraktAPI().json_response, 24, 'shows/%s/seasons/%s' % (show_id, season)) self._start_queue_workers() for i in trakt_list: self.task_queue.put((self.get_single_episode, (show_id, season, i['number'], True)), True) self._finish_queue_workers() return self.item_list
def showSeasons(self, args): showInfo = json.loads(tools.unquote(args)) trakt_list = database.get(trakt.json_response, 12, 'shows/%s/seasons?extended=full' % showInfo['ids']['trakt']) if trakt_list is None: return self.seasonListBuilder(trakt_list, showInfo) tools.closeDirectory('seasons')
def seasonEpisodes(self, args): args = json.loads(tools.unquote(args)) traktList = database.get( trakt.json_response, 6, 'shows/%s/seasons/%s?extended=full' % (args['showInfo']['ids']['trakt'], args['seasonInfo']['info']['season'])) self.episodeListBuilder(traktList, args) tools.closeDirectory('episodes', sort='episode')
def showsAnticipated(self, page): trakt_list = database.get( trakt.json_response, 12, 'shows/anticipated?page=%s&language=%s' % (page, language_code)) if trakt_list is None: return self.showListBuilder(trakt_list) tools.addDirectoryItem(tools.lang(32019), 'showsAnticipated&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows')
def moviesRecommended(self): trakt_list = database.get( trakt.json_response, 12, 'recommendations/movies?ignore_collected=true', limit=True, limitOverride=100) if trakt_list is None: return self.commonListBuilder(trakt_list) tools.closeDirectory('movies')
def showsCollected(self, page): traktList = database.get( trakt.json_response, 12, 'shows/collected?page=%s&extended=full' % page) if traktList is None: return self.showListBuilder(traktList) tools.addDirectoryItem( tools.lang(32019).encode('utf-8'), 'showsCollected&page=%s' % (int(page) + 1), '', '') tools.closeDirectory('tvshows', sort='title')
def moviesPopular(self, page): traktList = database.get(trakt.json_response, 12, 'movies/popular?page=%s' % page) self.commonListBuilder(traktList) tools.addDirectoryItem(tools.lang(32019), 'moviesPopular&page=%s' % (int(page) + 1), '', '', isFolder=True) tools.closeDirectory('movies', viewType=self.viewType)
def moviesTrending(self, page): traktList = database.get(trakt.json_response, 12, 'movies/trending?page=%s' % page) self.commonListBuilder(traktList) tools.addDirectoryItem(tools.lang(32019).encode('utf-8'), 'moviesTrending&page=%s' % (int(page) + 1), '', '', isFolder=True) tools.closeDirectory('movies', viewType=self.viewType)