From a3a3777d3364d2fe5afdbbb3bca40562bc70e409 Mon Sep 17 00:00:00 2001 From: echel0n Date: Sun, 6 Jul 2014 04:10:25 -0700 Subject: [PATCH] Fixed blackAndWhitelist for anime release groups. --- sickbeard/db.py | 7 +++++++ sickbeard/providers/generic.py | 2 ++ sickbeard/tvcache.py | 15 ++++++++++++--- sickbeard/webserve.py | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/sickbeard/db.py b/sickbeard/db.py index c42c675c..e2ebfb57 100644 --- a/sickbeard/db.py +++ b/sickbeard/db.py @@ -258,6 +258,13 @@ class DBConnection(object): def hasTable(self, tableName): return len(self.select("SELECT 1 FROM sqlite_master WHERE name = ?;", (tableName, ))) > 0 + def hasColumn(self, tableName, column): + return column in self.tableInfo(tableName) + + def addColumn(self, table, column, type="NUMERIC", default=0): + self.action("ALTER TABLE %s ADD %s %s" % (table, column, type)) + self.action("UPDATE %s SET %s = ?" % (table, column), (default,)) + def close(self): """Close database connection""" if getattr(self, "connection", None) is not None: diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index a103364e..c1c3680f 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -285,6 +285,7 @@ class GenericProvider: continue quality = parse_result.quality + release_group = parse_result.release_group if not (self.show.air_by_date or self.show.sports): if search_mode == 'sponly' and len(parse_result.episode_numbers): @@ -362,6 +363,7 @@ class GenericProvider: result.url = url result.name = title result.quality = quality + result.release_group = release_group result.provider = self result.content = None diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py index d3905fbc..0d52bf6a 100644 --- a/sickbeard/tvcache.py +++ b/sickbeard/tvcache.py @@ -46,7 +46,7 @@ class CacheDBConnection(db.DBConnection): try: if not self.hasTable(providerName): self.action( - "CREATE TABLE [" + providerName + "] (name TEXT, season NUMERIC, episodes TEXT, indexerid NUMERIC, url TEXT, time NUMERIC, quality TEXT)") + "CREATE TABLE [" + providerName + "] (name TEXT, season NUMERIC, episodes TEXT, indexerid NUMERIC, url TEXT, time NUMERIC, quality TEXT, release_group TEXT)") else: sqlResults = self.select( "SELECT url, COUNT(url) as count FROM [" + providerName + "] GROUP BY url HAVING count > 1") @@ -56,6 +56,10 @@ class CacheDBConnection(db.DBConnection): # add unique index to prevent further dupes from happening if one does not exist self.action("CREATE UNIQUE INDEX IF NOT EXISTS idx_url ON " + providerName + " (url)") + + # add release_group column to table if missing + if not self.hasColumn(providerName, 'release_group'): + self.addColumn(providerName, 'release_group', "TEXT", "") except Exception, e: if str(e) != "table [" + providerName + "] already exists": raise @@ -279,11 +283,14 @@ class TVCache(): if not isinstance(name, unicode): name = unicode(name, 'utf-8') + # get release group + release_group = parse_result.release_group + logger.log(u"Added RSS item: [" + name + "] to cache: [" + self.providerID + "]", logger.DEBUG) return [ - "INSERT OR IGNORE INTO [" + self.providerID + "] (name, season, episodes, indexerid, url, time, quality) VALUES (?,?,?,?,?,?,?)", - [name, season, episodeText, parse_result.show.indexerid, url, curTimestamp, quality]] + "INSERT OR IGNORE INTO [" + self.providerID + "] (name, season, episodes, indexerid, url, time, quality, release_group) VALUES (?,?,?,?,?,?,?,?)", + [name, season, episodeText, parse_result.show.indexerid, url, curTimestamp, quality, release_group]] def searchCache(self, episodes, manualSearch=False): @@ -334,6 +341,7 @@ class TVCache(): continue curEp = int(curEp) curQuality = int(curResult["quality"]) + curReleaseGroup = curResult["release_group"] # if the show says we want that episode then add it to the list if not showObj.wantEpisode(curSeason, curEp, curQuality, manualSearch): @@ -354,6 +362,7 @@ class TVCache(): result.url = url result.name = title result.quality = curQuality + result.release_group = curReleaseGroup result.content = self.provider.getURL(url) \ if self.provider.providerType == sickbeard.providers.generic.GenericProvider.TORRENT \ and not url.startswith('magnet') else None diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index bfa3011f..9315de5b 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -80,6 +80,7 @@ except ImportError: from lib import adba from Cheetah.Template import Template + from tornado.web import RequestHandler, HTTPError @@ -539,7 +540,6 @@ class IndexerWebUI(MainHandler): def _munge(string): return unicode(string).encode('utf-8', 'xmlcharrefreplace') - def _getEpisode(show, season=None, episode=None, absolute=None): if show is None: return "Invalid show parameters"