From 4d9663c13fa520287aa351fad1a508a14fbd1f26 Mon Sep 17 00:00:00 2001 From: Dustyn Gibson <miigotu@gmail.com> Date: Thu, 16 Jul 2015 02:24:31 -0700 Subject: [PATCH] Move and improve subtitles codes check --- SickBeard.py | 26 -------------------------- sickbeard/databases/mainDB.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/SickBeard.py b/SickBeard.py index d95746383..bf37a9292 100755 --- a/SickBeard.py +++ b/SickBeard.py @@ -474,32 +474,6 @@ class SickRage(object): logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) - self.fix_subtitles_codes() - - - def fix_subtitles_codes(self): - myDB = db.DBConnection() - sqlResults = myDB.select( - "SELECT showid, subtitles_lastsearch, season, episode FROM tv_episodes " + - "WHERE subtitles != '' AND subtitles_lastsearch < ?;", - [datetime.datetime(2015, 7, 15, 17, 20, 44, 326380).strftime("%Y-%m-%d %H:%M:%S")]) - - if not sqlResults: - return - - logger.log("Fixing old subtitle codes") - for sqlResult in sqlResults: - showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(sqlResult['showid'])) - if not showObj: - continue - - epObj = showObj.getEpisode(int(sqlResult["season"]), int(sqlResult["episode"])) - if isinstance(epObj, str): - continue - - epObj.refreshSubtitles() - epObj.subtitles_lastsearch = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") - epObj.saveToDB() def restoreDB(self, srcDir, dstDir): try: diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py index 2742bc70b..84284955b 100644 --- a/sickbeard/databases/mainDB.py +++ b/sickbeard/databases/mainDB.py @@ -26,6 +26,8 @@ from sickbeard import db, common, helpers, logger from sickbeard import encodingKludge as ek from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException +from babelfish import Language + MIN_DB_VERSION = 9 # oldest db version we support migrating from MAX_DB_VERSION = 42 @@ -39,6 +41,7 @@ class MainSanityCheck(db.DBSanityCheck): self.fix_tvrage_show_statues() self.fix_episode_statuses() self.fix_invalid_airdates() + self.fix_subtitles_codes() def fix_duplicate_shows(self, column='indexer_id'): @@ -192,6 +195,35 @@ class MainSanityCheck(db.DBSanityCheck): else: logger.log(u"No bad episode airdates, check passed", logger.DEBUG) + def fix_subtitles_codes(self): + + sqlResults = self.connection.select( + "SELECT subtitles, episode_id FROM tv_episodes WHERE subtitles != '' AND subtitles_lastsearch < ?;", + [datetime.datetime(2015, 7, 15, 17, 20, 44, 326380).strftime("%Y-%m-%d %H:%M:%S")]) + + if not sqlResults: + return + + for sqlResult in sqlResults: + langs = [] + + logger.log("Checking subtitle codes for episode_id: %s, codes: %s" % + (sqlResult['episode_id'], sqlResult['subtitles']), logger.DEBUG) + + for subcode in sqlResult['subtitles'].split(','): + try: + Language.fromopensubtitles(subcode) + except Exception: + logger.log("Fixing subtitle codes for episode_id: %s, invalid code: %s" % + (sqlResult['episode_id'], subcode), logger.DEBUG) + continue + + langs.append(subcode) + + self.connection.action("UPDATE tv_episodes SET subtitles = ?, subtitles_lastsearch = ? WHERE episode_id = ?;", + [','.join(langs), datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), sqlResult['episode_id']]) + + def backupDatabase(version): logger.log(u"Backing up database before upgrade") if not helpers.backupVersionedFile(db.dbFilename(), version): -- GitLab