def refresh_apis(): rd_token = tools.getSetting('rd.auth') rd_expiry = int(float(tools.getSetting('rd.expiry'))) tvdb_token = tools.getSetting('tvdb.jw') tvdb_expiry = int(float(tools.getSetting('tvdb.expiry'))) try: if rd_token != '': if time.time() > (rd_expiry - (10 * 60)): from resources.lib.debrid import real_debrid tools.log('Service Refreshing Real Debrid Token') real_debrid.RealDebrid().refreshToken() except: pass try: if tvdb_token != '': if time.time() > (tvdb_expiry - (30 * 60)): tools.log('Service Refreshing TVDB Token') from resources.lib.indexers import tvdb if time.time() > tvdb_expiry: tvdb.TVDBAPI().newToken() else: tvdb.TVDBAPI().renewToken() else: from resources.lib.indexers import tvdb tvdb.TVDBAPI().newToken() except: pass
def _update_season(self, show_meta, season_meta, get_meta=True): if get_meta: kodi_meta = tvdb.TVDBAPI().seasonIDToListItem(season_meta, show_meta) else: kodi_meta = {} season = season_meta['number'] show_id = show_meta['ids']['trakt'] cursor = self._get_cursor() try: update = cursor.execute( "UPDATE seasons SET kodi_meta=? WHERE show_id=? AND season = ?", (str(kodi_meta), show_id, season)) if update.rowcount is 0: cursor.execute( "INSERT INTO seasons (" "show_id, season, kodi_meta)" "VALUES " "(?, ?, ?)", (show_id, season, str(kodi_meta))) cursor.connection.commit() cursor.close() return {'show_id': show_meta['ids']['trakt'], 'season': season, 'kodi_meta': kodi_meta} except: cursor.close() import traceback traceback.print_exc() pass
def _update_show(self, trakt_id, show_item, get_meta=True): tools.traktSyncDB_lock.acquire() cursor = self._get_cursor() cursor.execute('SELECT * FROM shows WHERE trakt_id=?', (trakt_id, )) old_entry = cursor.fetchone() cursor.close() tools.try_release_lock(tools.traktSyncDB_lock) if get_meta: try: kodi_meta = tvdb.TVDBAPI().seriesIDToListItem(show_item) if kodi_meta is None or kodi_meta == '{}': kodi_meta = tmdb.TMDBAPI().showToListItem(show_item) if kodi_meta is None or kodi_meta == '{}': kodi_meta = imdb.IMDBScraper().showToListItem(show_item) if kodi_meta is None or kodi_meta == '{}': return update_time = str( datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S')) except: return None else: if old_entry is None: kodi_meta = {} update_time = self.base_date else: update_time = old_entry['last_updated'] kodi_meta = old_entry['kodi_meta'] tools.traktSyncDB_lock.acquire() cursor = self._get_cursor() try: cursor.execute('PRAGMA foreign_keys=OFF') cursor.execute( "REPLACE INTO shows (" "trakt_id, kodi_meta, last_updated, air_date)" "VALUES " "(?, ?, ?, ?)", (int(trakt_id), str(kodi_meta), update_time, kodi_meta['info']['premiered'])) cursor.execute('PRAGMA foreign_keys=ON') cursor.connection.commit() cursor.close() return { 'trakt_id': trakt_id, 'kodi_meta': kodi_meta, 'last_updated': update_time } except: cursor.close() import traceback traceback.print_exc() pass finally: tools.try_release_lock(tools.traktSyncDB_lock)
def _update_season(self, show_meta, season_meta, get_meta=True): if get_meta: try: kodi_meta = tvdb.TVDBAPI().seasonIDToListItem( season_meta, show_meta) if kodi_meta is None or kodi_meta == '{}': kodi_meta = tmdb.TMDBAPI().showSeasonToListItem( season_meta, show_meta) if kodi_meta is None or kodi_meta == '{}': kodi_meta = imdb.IMDBScraper().showSeasonToListItem( season_meta, show_meta) except: return None else: kodi_meta = {} season = season_meta['number'] show_id = show_meta['ids']['trakt'] tools.traktSyncDB_lock.acquire() cursor = self._get_cursor() try: cursor.execute( "REPLACE INTO seasons (" "show_id, season, kodi_meta, air_date)" "VALUES " "(?, ?, ?, ?)", (int(show_id), str(season), str(kodi_meta), kodi_meta['info']['aired'])) cursor.connection.commit() cursor.close() return { 'show_id': show_meta['ids']['trakt'], 'season': season, 'kodi_meta': kodi_meta } except: cursor.close() import traceback traceback.print_exc() pass finally: tools.try_release_lock(tools.traktSyncDB_lock)
def _update_show(self, trakt_id, show_item, get_meta=True): cursor = self._get_cursor() cursor.execute('SELECT * FROM shows WHERE trakt_id=?', (trakt_id, )) old_entry = cursor.fetchone() cursor.close() if get_meta: kodi_meta = tvdb.TVDBAPI().seriesIDToListItem(show_item) if kodi_meta is None: return update_time = str(datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S')) else: if old_entry is None: kodi_meta = {} update_time = self.base_date else: update_time = old_entry['last_updated'] kodi_meta = old_entry['kodi_meta'] cursor = self._get_cursor() try: cursor.execute('PRAGMA foreign_keys=OFF') cursor.execute( "INSERT OR REPLACE INTO shows (" "trakt_id, kodi_meta, last_updated)" "VALUES " "(?, ?, ?)", (int(trakt_id), str(kodi_meta), update_time)) cursor.execute('PRAGMA foreign_keys=ON') cursor.connection.commit() cursor.close() return { 'trakt_id': trakt_id, 'kodi_meta': kodi_meta, 'last_updated': update_time } except: cursor.close() import traceback traceback.print_exc() pass
def _update_episode(self, show_id, episode_object, get_meta=True, watched=None, collected=None): episode_id = episode_object['ids']['trakt'] season = episode_object['season'] old_entry = None number = episode_object['number'] show_meta = self.get_single_show(show_id, get_meta=get_meta) if show_meta is None: return season_meta = self.get_single_season(show_id, season, get_meta=get_meta) if season_meta is None: return try: tools.traktSyncDB_lock.acquire() cursor = self._get_cursor() cursor.execute("SELECT * FROM episodes WHERE trakt_id=?", (episode_id,)) old_entry = cursor.fetchone() cursor.close() tools.try_release_lock(tools.traktSyncDB_lock) except: pass if show_meta == '{}' and get_meta: return show_meta = {'showInfo': show_meta, 'seasonInfo': season_meta} if (get_meta and old_entry is None) or (get_meta and old_entry['kodi_meta'] == '{}'): try: kodi_meta = tmdb.TMDBAPI().episodeIDToListItem(episode_object, copy.deepcopy(show_meta)) if kodi_meta is None or kodi_meta == '{}': kodi_meta = tvdb.TVDBAPI().episodeIDToListItem(episode_object, copy.deepcopy(show_meta)) if kodi_meta is None or kodi_meta == '{}': kodi_meta = imdb.IMDBScraper().episodeIDToListItem(episode_object, copy.deepcopy(show_meta)) if kodi_meta is None or kodi_meta == '{}': return except: return None kodi_meta.pop('showInfo') update_time = str(datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S')) else: if old_entry is None: update_time = self.base_date kodi_meta = {} else: update_time = old_entry['last_updated'] kodi_meta = old_entry['kodi_meta'] if old_entry is None: old_entry = {'collected': 0, 'watched': 0, 'air_date': ''} if collected is None: collected = old_entry['collected'] if watched is None: watched = old_entry['watched'] tools.traktSyncDB_lock.acquire() cursor = self._get_cursor() try: cursor.execute( "REPLACE INTO episodes (" "show_id, season, trakt_id, kodi_meta, last_updated, watched, collected, number, air_date)" "VALUES " "(?, ?, ?, ?, ?, ?, ?, ?, ?)", (show_id, season, episode_id, str(kodi_meta), update_time, watched, collected, number, kodi_meta['info']['premiered'])) cursor.connection.commit() cursor.close() return {'show_id': show_id, 'season': season, 'episode_id': episode_id, 'kodi_meta': kodi_meta, 'update_time': update_time, 'watched': watched, 'collected': collected, 'number': number} except: cursor.close() import traceback traceback.print_exc() pass finally: tools.try_release_lock(tools.traktSyncDB_lock)
def _update_episode(self, show_id, episode_object, get_meta=True, watched=None, collected=None): show_meta = self.get_single_show(show_id, get_meta=get_meta) if show_meta is None: return episode_id = episode_object['ids']['trakt'] season = episode_object['season'] old_entry = None number = episode_object['number'] cursor = self._get_cursor() try: cursor.execute("SELECT * FROM episodes WHERE trakt_id=?", (episode_id, )) old_entry = cursor.fetchone() cursor.close() except: pass if show_meta == '{}' and get_meta: return show_meta = {'showInfo': show_meta} if (get_meta and old_entry is None) or (get_meta and old_entry['kodi_meta'] == '{}'): kodi_meta = tvdb.TVDBAPI().episodeIDToListItem( episode_object, copy.deepcopy(show_meta)) if kodi_meta is None: return kodi_meta.pop('showInfo') update_time = str(datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S')) else: if old_entry is None: update_time = self.base_date kodi_meta = {} else: update_time = old_entry['last_updated'] kodi_meta = old_entry['kodi_meta'] if old_entry is None: old_entry = {'collected': 0, 'watched': 0} if collected is None: collected = old_entry['collected'] if watched is None: watched = old_entry['watched'] cursor = self._get_cursor() try: cursor.execute( "INSERT OR REPLACE INTO episodes (" "show_id, season, trakt_id, kodi_meta, last_updated, watched, collected, number)" "VALUES " "(?, ?, ?, ?, ?, ?, ?, ?)", (show_id, season, episode_id, str(kodi_meta), update_time, watched, collected, number)) cursor.connection.commit() cursor.close() return { 'show_id': show_id, 'season': season, 'episode_id': episode_id, 'kodi_meta': kodi_meta, 'update_time': update_time, 'watched': watched, 'collected': collected, 'number': number } except: import traceback traceback.print_exc() pass