示例#1
0
    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')
示例#2
0
 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'] = []
示例#3
0
 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')
示例#4
0
    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()
示例#5
0
 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')
示例#8
0
 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')
示例#9
0
 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')
示例#10
0
 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)
示例#11
0
 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)
示例#12
0
    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
示例#13
0
    def showsRecommended(self):

        traktList = database.get(trakt.json_response,
                                 12,
                                 'recommendations/shows?extended=full',
                                 limit=True,
                                 limitOverride=100)
        self.showListBuilder(traktList)
        tools.closeDirectory('tvshows')
示例#14
0
 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')
示例#15
0
 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')
示例#16
0
    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')
示例#17
0
    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'] = []
示例#18
0
 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')
示例#19
0
    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')
示例#20
0
 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')
示例#21
0
 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')
示例#22
0
 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')
示例#23
0
    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
示例#24
0
    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')
示例#25
0
    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')
示例#26
0
 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')
示例#27
0
 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')
示例#29
0
    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)