Esempio n. 1
0
def get_item_information(actionArgs):
    actionArgs = unquote(actionArgs)

    try:
        actionArgs = json.loads(actionArgs)
    except:
        log('Unable to load dict')
        return None

    if actionArgs['item_type'] == 'show':
        from resources.lib.modules.trakt_sync import shows
        item_information = shows.TraktSyncDatabase().get_single_show(
            actionArgs['trakt_id'])
        return item_information
    if actionArgs['item_type'] == 'season':
        from resources.lib.modules.trakt_sync import shows
        item_information = shows.TraktSyncDatabase().get_single_season(
            actionArgs['trakt_id'], actionArgs['season'])
        return item_information
    if actionArgs['item_type'] == 'episode':
        from resources.lib.modules.trakt_sync import shows
        item_information = shows.TraktSyncDatabase().get_single_episode(
            actionArgs['trakt_id'], actionArgs['season'],
            actionArgs['episode'])
        return item_information
    if actionArgs['item_type'] == 'movie':
        from resources.lib.modules.trakt_sync import movies
        item_information = movies.TraktSyncDatabase().get_movie(
            actionArgs['trakt_id'])
        return item_information
Esempio n. 2
0
    def _sync_uncollected(self):
        show_sync = shows.TraktSyncDatabase()
        movie_sync = movies.TraktSyncDatabase()
        trakt_collected_movies = Trakt.TraktAPI().json_response(
            'sync/collection/movies')

        if trakt_collected_movies is not None:
            trakt_collected_movies = set(
                int(i['movie']['ids']['trakt'])
                for i in trakt_collected_movies)
        else:
            trakt_collected_movies = set()

        local_collected_movies = movie_sync.get_collected_movies()
        local_collected_movies = set(
            int(i['trakt_id']) for i in local_collected_movies)
        trakt_collected_episodes = Trakt.TraktAPI().json_response(
            'sync/collection/shows')

        if trakt_collected_episodes is not None:
            trakt_collected_episodes = set(
                '%s-%s-%s' % (show['show']['ids']['trakt'], season['number'],
                              episode['number'])
                for show in trakt_collected_episodes
                for season in show['seasons']
                for episode in season['episodes'])
        else:
            trakt_collected_episodes = set()

        local_collected_episodes = show_sync.get_collected_episodes()
        local_collected_episodes = set('%s-%s-%s' %
                                       (i['show_id'], i['season'], i['number'])
                                       for i in local_collected_episodes)

        workload = local_collected_movies - trakt_collected_movies
        sql_statement = "UPDATE movies SET collected=0 WHERE trakt_id=?"
        self._execute_batch_sql(sql_statement, ((movie, )
                                                for movie in workload),
                                len(workload))

        workload = local_collected_episodes - trakt_collected_episodes
        sql_statement = "UPDATE episodes SET collected=0 WHERE show_id=? AND season=? AND number=?"
        self._execute_batch_sql(sql_statement, ((tuple(episode.split('-')))
                                                for episode in workload),
                                len(workload))

        if not self.silent:
            self.progress_dialog.update(100, 'Syncing Uncollected items')
Esempio n. 3
0
    def _sync_watched_episodes(self):

        update_time = str(datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S'))
        if not self.silent:
            self.progress_dialog.update(-1, 'Fetching Watched Episodes')
        trakt_watched = Trakt.TraktAPI().json_response('/sync/watched/shows')
        trakt_watched = ['%s-%s-%s' % (show['show']['ids']['trakt'], season['number'], episode['number'])
                         for show in trakt_watched for season in show['seasons'] for episode
                         in season['episodes']]

        local_watched = shows.TraktSyncDatabase().get_watched_episodes()
        local_watched = ['%s-%s-%s' % (i['show_id'], i['season'], i['number']) for i in local_watched]

        self._mill_episodes(trakt_watched, local_watched, 1, None)

        self._update_activity_record('shows_watched', update_time)
Esempio n. 4
0
    def _sync_collection_shows(self):
        show_sync = shows.TraktSyncDatabase()
        local_collection = [(i['show_id'], i['season'], i['number'])
                            for i in show_sync.get_collected_episodes()]

        update_time = str(datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S'))
        if not self.silent:
            self.progress_dialog.update(0, 'Fetching Collected Episodes')
        trakt_collection = Trakt.TraktAPI().json_response(
            'sync/collection/shows?extended=full')
        trakt_collection = [(show['show']['ids']['trakt'], season['number'],
                             episode['number']) for show in trakt_collection
                            for season in show['seasons']
                            for episode in season['episodes']]

        filtered = [i for i in trakt_collection if i not in local_collection]

        self._mill_episodes(filtered, False)
        self._update_activity_record('shows_collected', update_time)
Esempio n. 5
0
from datetime import datetime, timedelta
from resources.lib.modules import trakt_sync
from resources.lib.modules.trakt_sync import shows
from resources.lib.modules.trakt_sync import movies
from resources.lib.modules.trakt_sync import hidden
from resources.lib.common import tools
from resources.lib.indexers import trakt as Trakt

show_sync = shows.TraktSyncDatabase()
movie_sync = movies.TraktSyncDatabase()


class TraktSyncDatabase(trakt_sync.TraktSyncDatabase):

    progress_dialog = None
    silent = False

    def run_activities_service(self):
        try:
            import xbmc
            monitor = xbmc.Monitor()
        except:
            pass
        self.sync_activities()
        while not monitor.abortRequested():
            try:
                if monitor.waitForAbort(60 * 30):
                    break

            except:
                import traceback