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
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')
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)
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)
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