예제 #1
0
    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')
예제 #2
0
    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')
예제 #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 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')
예제 #5
0
 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')
예제 #6
0
    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')
예제 #7
0
    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')
예제 #8
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')
예제 #9
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')
예제 #10
0
    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')
예제 #11
0
 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')
예제 #12
0
 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')
예제 #13
0
 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')
예제 #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 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')
예제 #16
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' % (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')
예제 #17
0
 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')
예제 #18
0
    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')
예제 #19
0
    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')
예제 #20
0
    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')
예제 #21
0
 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')
예제 #22
0
    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')
예제 #23
0
    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')
예제 #24
0
    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)
예제 #25
0
    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')
예제 #26
0
    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')