diff --git a/gui/slick/interfaces/default/config_providers.tmpl b/gui/slick/interfaces/default/config_providers.tmpl index 453f0213..b1ad67e0 100644 --- a/gui/slick/interfaces/default/config_providers.tmpl +++ b/gui/slick/interfaces/default/config_providers.tmpl @@ -156,14 +156,24 @@ var show_nzb_providers = #if $sickbeard.USE_NZBS then "true" else "false"#; #end if - #if $hasattr($curNewznabProvider, 'backlog_only'): + #if $hasattr($curNewznabProvider, 'enable_daily'):
- -
+ #end if + + #if $hasattr($curNewznabProvider, 'enable_backlog'): +
+ +
#end if @@ -183,10 +193,10 @@ var show_nzb_providers = #if $sickbeard.USE_NZBS then "true" else "false"#; #end if #if $hasattr($curNewznabProvider, 'search_mode'): -
#end if - #if $hasattr($curTorrentProvider, 'backlog_only'): + #if $hasattr($curTorrentProvider, 'enable_daily'):
- -
+ #end if + + #if $hasattr($curTorrentProvider, 'enable_backlog'): +
+ +
#end if diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index c9390ac2..8b13f599 100755 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -981,10 +981,16 @@ def initialize(consoleLogging=True): curTorrentProvider.search_fallback = bool(check_setting_int(CFG, curTorrentProvider.getID().upper(), curTorrentProvider.getID() + '_search_fallback', 0)) - if hasattr(curTorrentProvider, 'backlog_only'): - curTorrentProvider.backlog_only = bool(check_setting_int(CFG, curTorrentProvider.getID().upper(), - curTorrentProvider.getID() + '_backlog_only', - 0)) + + if hasattr(curTorrentProvider, 'enable_daily'): + curTorrentProvider.enable_daily = bool(check_setting_int(CFG, curTorrentProvider.getID().upper(), + curTorrentProvider.getID() + '_enable_daily', + 1)) + + if hasattr(curTorrentProvider, 'enable_backlog'): + curTorrentProvider.enable_backlog = bool(check_setting_int(CFG, curTorrentProvider.getID().upper(), + curTorrentProvider.getID() + '_enable_backlog', + 1)) for curNzbProvider in [curProvider for curProvider in providers.sortedProviderList() if curProvider.providerType == GenericProvider.NZB]: @@ -1004,10 +1010,15 @@ def initialize(consoleLogging=True): curNzbProvider.search_fallback = bool(check_setting_int(CFG, curNzbProvider.getID().upper(), curNzbProvider.getID() + '_search_fallback', 0)) - if hasattr(curNzbProvider, 'backlog_only'): - curNzbProvider.backlog_only = bool(check_setting_int(CFG, curNzbProvider.getID().upper(), - curNzbProvider.getID() + '_backlog_only', - 0)) + if hasattr(curNzbProvider, 'enable_daily'): + curNzbProvider.enable_daily = bool(check_setting_int(CFG, curNzbProvider.getID().upper(), + curNzbProvider.getID() + '_enable_daily', + 1)) + + if hasattr(curNzbProvider, 'enable_backlog'): + curNzbProvider.enable_backlog = bool(check_setting_int(CFG, curNzbProvider.getID().upper(), + curNzbProvider.getID() + '_enable_backlog', + 1)) if not os.path.isfile(CONFIG_FILE): logger.log(u"Unable to find '" + CONFIG_FILE + "', all settings will be default!", logger.DEBUG) @@ -1124,6 +1135,7 @@ def initialize(consoleLogging=True): __INITIALIZED__ = True return True + def start(): global __INITIALIZED__, backlogSearchScheduler, \ showUpdateScheduler, versionCheckScheduler, showQueueScheduler, \ @@ -1278,6 +1290,7 @@ def halt(): __INITIALIZED__ = False started = False + def sig_handler(signum=None, frame=None): if type(signum) != type(None): logger.log(u"Signal %i caught, saving and exiting..." % int(signum)) @@ -1462,9 +1475,12 @@ def save_config(): if hasattr(curTorrentProvider, 'search_fallback'): new_config[curTorrentProvider.getID().upper()][curTorrentProvider.getID() + '_search_fallback'] = int( curTorrentProvider.search_fallback) - if hasattr(curTorrentProvider, 'backlog_only'): - new_config[curTorrentProvider.getID().upper()][curTorrentProvider.getID() + '_backlog_only'] = int( - curTorrentProvider.backlog_only) + if hasattr(curTorrentProvider, 'enable_daily'): + new_config[curTorrentProvider.getID().upper()][curTorrentProvider.getID() + '_enable_daily'] = int( + curTorrentProvider.enable_daily) + if hasattr(curTorrentProvider, 'enable_backlog'): + new_config[curTorrentProvider.getID().upper()][curTorrentProvider.getID() + '_enable_backlog'] = int( + curTorrentProvider.enable_backlog) for curNzbProvider in [curProvider for curProvider in providers.sortedProviderList() if curProvider.providerType == GenericProvider.NZB]: @@ -1483,9 +1499,12 @@ def save_config(): if hasattr(curNzbProvider, 'search_fallback'): new_config[curNzbProvider.getID().upper()][curNzbProvider.getID() + '_search_fallback'] = int( curNzbProvider.search_fallback) - if hasattr(curNzbProvider, 'backlog_only'): - new_config[curNzbProvider.getID().upper()][curNzbProvider.getID() + '_backlog_only'] = int( - curNzbProvider.backlog_only) + if hasattr(curNzbProvider, 'enable_daily'): + new_config[curNzbProvider.getID().upper()][curNzbProvider.getID() + '_enable_daily'] = int( + curNzbProvider.enable_daily) + if hasattr(curNzbProvider, 'enable_backlog'): + new_config[curNzbProvider.getID().upper()][curNzbProvider.getID() + '_enable_backlog'] = int( + curNzbProvider.enable_backlog) new_config['NZBs'] = {} new_config['NZBs']['nzbs'] = int(NZBS) diff --git a/sickbeard/dailysearcher.py b/sickbeard/dailysearcher.py index e7c4d13e..02460084 100644 --- a/sickbeard/dailysearcher.py +++ b/sickbeard/dailysearcher.py @@ -42,7 +42,7 @@ class DailySearcher(): didSearch = False - providers = [x for x in sickbeard.providers.sortedProviderList() if x.isActive() and not x.backlog_only] + providers = [x for x in sickbeard.providers.sortedProviderList() if x.isActive() and x.enable_daily] for curProviderCount, curProvider in enumerate(providers): logger.log(u"Updating [" + curProvider.name + "] RSS cache ...") diff --git a/sickbeard/providers/__init__.py b/sickbeard/providers/__init__.py index 0076a0cf..45ee4d60 100755 --- a/sickbeard/providers/__init__.py +++ b/sickbeard/providers/__init__.py @@ -11,7 +11,7 @@ # SickRage is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SickRage. If not, see . @@ -63,6 +63,7 @@ def sortedProviderList(): return newList + def makeProviderList(): return [x.provider for x in [getProviderModule(y) for y in __all__] if x] @@ -96,6 +97,8 @@ def getNewznabProviderList(data): providerDict[curDefault.name].needs_auth = curDefault.needs_auth providerDict[curDefault.name].search_mode = curDefault.search_mode providerDict[curDefault.name].search_fallback = curDefault.search_fallback + providerDict[curDefault.name].enable_daily = curDefault.enable_daily + providerDict[curDefault.name].enable_backlog = curDefault.enable_backlog return filter(lambda x: x, providerList) @@ -106,10 +109,13 @@ def makeNewznabProvider(configString): search_mode = 'eponly' search_fallback = 0 + enable_daily = 0 + enable_backlog = 0 try: - name, url, key, catIDs, enabled, search_mode, search_fallback = configString.split('|') - except ValueError: + name, url, key, catIDs, enabled, search_mode, search_fallback, enable_daily, enable_backlog = configString.split( + '|') + except ValueError, e: try: name, url, key, catIDs, enabled = configString.split('|') except ValueError: @@ -119,7 +125,8 @@ def makeNewznabProvider(configString): newznab = sys.modules['sickbeard.providers.newznab'] newProvider = newznab.NewznabProvider(name, url, key=key, catIDs=catIDs, search_mode=search_mode, - search_fallback=search_fallback) + search_fallback=search_fallback, enable_daily=enable_daily, + enable_backlog=enable_backlog) newProvider.enabled = enabled == '1' return newProvider @@ -146,18 +153,21 @@ def makeTorrentRssProvider(configString): cookies = None search_mode = 'eponly' search_fallback = 0 - backlog_only = 0 + enable_daily = 0 + enable_backlog = 0 try: - name, url, cookies, enabled, search_mode, search_fallback, backlog_only = configString.split('|') + name, url, cookies, enabled, search_mode, search_fallback, enable_daily, enable_backlog = configString.split( + '|') except ValueError: try: - name, url, enabled, search_mode, search_fallback, backlog_only = configString.split('|') + name, url, enabled, search_mode, search_fallback, enable_daily, enable_backlog = configString.split('|') except ValueError: try: name, url, enabled = configString.split('|') except ValueError: - logger.log(u"Skipping RSS Torrent provider string: '" + configString + "', incorrect format", logger.ERROR) + logger.log(u"Skipping RSS Torrent provider string: '" + configString + "', incorrect format", + logger.ERROR) return None try: @@ -165,14 +175,15 @@ def makeTorrentRssProvider(configString): except: return - newProvider = torrentRss.TorrentRssProvider(name, url, cookies, search_mode, search_fallback, backlog_only) + newProvider = torrentRss.TorrentRssProvider(name, url, cookies, search_mode, search_fallback, enable_daily, + enable_backlog) newProvider.enabled = enabled == '1' return newProvider def getDefaultNewznabProviders(): - return 'Sick Beard Index|http://lolo.sickbeard.com/|0|5030,5040|0|eponly|0!!!NZBs.org|https://nzbs.org/||5030,5040|0|eponly|0!!!Usenet-Crawler|https://www.usenet-crawler.com/||5030,5040|0|eponly|0' + return 'Sick Beard Index|http://lolo.sickbeard.com/|0|5030,5040|0|eponly|0|0|0!!!NZBs.org|https://nzbs.org/|0|5030,5040|0|eponly|0|0|0!!!Usenet-Crawler|https://www.usenet-crawler.com/|0|5030,5040|0|eponly|0|0|0' def getProviderModule(name): diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 6241e2a8..c638d939 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -55,7 +55,8 @@ class GenericProvider: self.search_mode = None self.search_fallback = False - self.backlog_only = False + self.enable_daily = False + self.enable_backlog = False self.cache = tvcache.TVCache(self) diff --git a/sickbeard/providers/newznab.py b/sickbeard/providers/newznab.py index 9065efc5..bd9d41e2 100755 --- a/sickbeard/providers/newznab.py +++ b/sickbeard/providers/newznab.py @@ -33,14 +33,14 @@ from sickbeard import classes from sickbeard import helpers from sickbeard import scene_exceptions from sickbeard import encodingKludge as ek -from sickbeard.common import cpu_presets from sickbeard import logger from sickbeard import tvcache from sickbeard.exceptions import ex, AuthException class NewznabProvider(generic.NZBProvider): - def __init__(self, name, url, key='', catIDs='5030,5040', search_mode='eponly', search_fallback=False): + def __init__(self, name, url, key='', catIDs='5030,5040', search_mode='eponly', search_fallback=False, + enable_daily=False, enable_backlog=False): generic.NZBProvider.__init__(self, name) @@ -52,6 +52,8 @@ class NewznabProvider(generic.NZBProvider): self.search_mode = search_mode self.search_fallback = search_fallback + self.enable_daily = enable_daily + self.enable_backlog = enable_backlog # a 0 in the key spot indicates that no key is needed if self.key == '0': @@ -71,10 +73,13 @@ class NewznabProvider(generic.NZBProvider): def configStr(self): return self.name + '|' + self.url + '|' + self.key + '|' + self.catIDs + '|' + str( - int(self.enabled)) + '|' + self.search_mode + '|' + str(int(self.search_fallback)) + int(self.enabled)) + '|' + self.search_mode + '|' + str(int(self.search_fallback)) + '|' + str( + int(self.enable_daily)) + '|' + str(int(self.enable_backlog)) def imageName(self): - if ek.ek(os.path.isfile, ek.ek(os.path.join, sickbeard.PROG_DIR, 'gui', sickbeard.GUI_NAME, 'images', 'providers', self.getID() + '.png')): + if ek.ek(os.path.isfile, + ek.ek(os.path.join, sickbeard.PROG_DIR, 'gui', sickbeard.GUI_NAME, 'images', 'providers', + self.getID() + '.png')): return self.getID() + '.png' return 'newznab.png' @@ -136,7 +141,8 @@ class NewznabProvider(generic.NZBProvider): to_return.append(params) else: # add new query strings for exceptions - name_exceptions = list(set(scene_exceptions.get_scene_exceptions(ep_obj.show.indexerid) + [ep_obj.show.name])) + name_exceptions = list( + set(scene_exceptions.get_scene_exceptions(ep_obj.show.indexerid) + [ep_obj.show.name])) for cur_exception in name_exceptions: params['q'] = helpers.sanitizeSceneName(cur_exception) to_return.append(params) @@ -234,7 +240,9 @@ class NewznabProvider(generic.NZBProvider): # if there are more items available then the amount given in one call, grab some more if (total - params['limit']) > offset == params['offset']: params['offset'] += params['limit'] - logger.log(str(total - params['offset']) + " more items to be fetched from provider. Fetching another " + str(params['limit']) + " items.", logger.DEBUG) + logger.log(str( + total - params['offset']) + " more items to be fetched from provider. Fetching another " + str( + params['limit']) + " items.", logger.DEBUG) else: break diff --git a/sickbeard/providers/rsstorrent.py b/sickbeard/providers/rsstorrent.py index 936b4623..b793c228 100644 --- a/sickbeard/providers/rsstorrent.py +++ b/sickbeard/providers/rsstorrent.py @@ -34,8 +34,10 @@ from lib import requests from lib.requests import exceptions from lib.bencode import bdecode + class TorrentRssProvider(generic.TorrentProvider): - def __init__(self, name, url, cookies='', search_mode='eponly', search_fallback=False, backlog_only=False): + def __init__(self, name, url, cookies='', search_mode='eponly', search_fallback=False, enable_daily=False, + enable_backlog=False): generic.TorrentProvider.__init__(self, name) self.cache = TorrentRssCache(self) self.url = re.sub('\/$', '', url) @@ -46,14 +48,19 @@ class TorrentRssProvider(generic.TorrentProvider): self.search_mode = search_mode self.search_fallback = search_fallback - self.backlog_only = backlog_only + self.enable_daily = enable_daily + self.enable_backlog = enable_backlog self.cookies = cookies def configStr(self): - return self.name + '|' + self.url + '|' + self.cookies + '|' + str(int(self.enabled)) + '|' + self.search_mode + '|' + str(int(self.search_fallback)) + '|' + str(int(self.backlog_only)) + return self.name + '|' + self.url + '|' + self.cookies + '|' + str( + int(self.enabled)) + '|' + self.search_mode + '|' + str(int(self.search_fallback)) + '|' + str( + int(self.enable_daily)) + '|' + str(int(self.enable_backlog)) def imageName(self): - if ek.ek(os.path.isfile, ek.ek(os.path.join, sickbeard.PROG_DIR, 'gui', sickbeard.GUI_NAME, 'images', 'providers', self.getID() + '.png')): + if ek.ek(os.path.isfile, + ek.ek(os.path.join, sickbeard.PROG_DIR, 'gui', sickbeard.GUI_NAME, 'images', 'providers', + self.getID() + '.png')): return self.getID() + '.png' return 'torrentrss.png' @@ -91,12 +98,12 @@ class TorrentRssProvider(generic.TorrentProvider): try: if self.cookies: - cookie_validator=re.compile("^(\w+=\w+)(;\w+=\w+)*$") + cookie_validator = re.compile("^(\w+=\w+)(;\w+=\w+)*$") if not cookie_validator.match(self.cookies): return (False, 'Cookie is not correctly formatted: ' + self.cookies) items = self.cache._getDailyData() - + if not len(items) > 0: return (False, 'No items found in the RSS feed ' + self.url) @@ -144,6 +151,7 @@ class TorrentRssProvider(generic.TorrentProvider): def seedRatio(self): return self.ratio + class TorrentRssCache(tvcache.TVCache): def __init__(self, provider): tvcache.TVCache.__init__(self, provider) @@ -154,7 +162,7 @@ class TorrentRssCache(tvcache.TVCache): request_headers = None if self.provider.cookies: - request_headers = { 'Cookie': self.provider.cookies } + request_headers = {'Cookie': self.provider.cookies} data = self.getRSSFeed(self.provider.url, request_headers=request_headers) diff --git a/sickbeard/search.py b/sickbeard/search.py index 0668c216..f3355fb4 100644 --- a/sickbeard/search.py +++ b/sickbeard/search.py @@ -343,7 +343,7 @@ def searchForNeededEpisodes(show, episodes): origThreadName = threading.currentThread().name - providers = [x for x in sickbeard.providers.sortedProviderList() if x.isActive() and not x.backlog_only] + providers = [x for x in sickbeard.providers.sortedProviderList() if x.isActive() and x.enable_daily] for curProviderCount, curProvider in enumerate(providers): if curProvider.anime_only and not show.is_anime: logger.log(u"" + str(show.name) + " is not an anime, skiping", logger.DEBUG) @@ -418,7 +418,7 @@ def searchProviders(show, season, episodes, manualSearch=False): origThreadName = threading.currentThread().name - providers = [x for x in sickbeard.providers.sortedProviderList() if x.isActive()] + providers = [x for x in sickbeard.providers.sortedProviderList() if x.isActive() and x.enable_backlog] for providerNum, curProvider in enumerate(providers): if curProvider.anime_only and not show.is_anime: logger.log(u"" + str(show.name) + " is not an anime, skiping", logger.DEBUG) diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 5c24086f..72b29b2b 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -2161,12 +2161,19 @@ class ConfigProviders(MainHandler): except: curTorrentProvider.search_fallback = 0 - if hasattr(curTorrentProvider, 'backlog_only'): + if hasattr(curTorrentProvider, 'enable_daily'): try: - curTorrentProvider.backlog_only = config.checkbox_to_value( - kwargs[curTorrentProvider.getID() + '_backlog_only']) + curTorrentProvider.enable_daily = config.checkbox_to_value( + kwargs[curTorrentProvider.getID() + '_enable_daily']) except: - curTorrentProvider.backlog_only = 0 + curTorrentProvider.enable_daily = 0 + + if hasattr(curTorrentProvider, 'enable_backlog'): + try: + curTorrentProvider.enable_backlog = config.checkbox_to_value( + kwargs[curTorrentProvider.getID() + '_enable_backlog']) + except: + curTorrentProvider.enable_backlog = 0 for curNzbProvider in [curProvider for curProvider in sickbeard.providers.sortedProviderList() if curProvider.providerType == sickbeard.GenericProvider.NZB]: @@ -2196,12 +2203,19 @@ class ConfigProviders(MainHandler): except: curNzbProvider.search_fallback = 0 - if hasattr(curNzbProvider, 'backlog_only'): + if hasattr(curNzbProvider, 'enable_daily'): try: - curNzbProvider.backlog_only = config.checkbox_to_value( - kwargs[curNzbProvider.getID() + '_backlog_only']) + curNzbProvider.enable_daily = config.checkbox_to_value( + kwargs[curNzbProvider.getID() + '_enable_daily']) except: - curNzbProvider.backlog_only = 0 + curNzbProvider.enable_daily = 0 + + if hasattr(curNzbProvider, 'enable_backlog'): + try: + curNzbProvider.enable_backlog = config.checkbox_to_value( + kwargs[curNzbProvider.getID() + '_enable_backlog']) + except: + curNzbProvider.enable_backlog = 0 sickbeard.NEWZNAB_DATA = '!!!'.join([x.configStr() for x in sickbeard.newznabProviderList]) sickbeard.PROVIDER_ORDER = provider_list