diff --git a/headphones/searcher.py b/headphones/searcher.py
index 95e14a5e..a7808220 100644
--- a/headphones/searcher.py
+++ b/headphones/searcher.py
@@ -216,6 +216,16 @@ def searchNZB(albumid=None, new=False, losslessOnly=False):
logger.info(u"No results found from NZBMatrix for %s" % term)
if headphones.NEWZNAB:
+
+ newznab_hosts = [[headphones.NEWZNAB_HOST, headphones.NEWZNAB_APIKEY, headphones.NEWZNAB_ENABLED]]
+
+ # This is just to make sure we don't have any empty string for EXTRA_NEWZNABS
+ if not headphones.EXTRA_NEWZNABS:
+ headphones.EXTRA_NEWZNABS = []
+
+ for newznab_host in headphones.EXTRA_NEWZNABS:
+ newznab_hosts.append(newznab_host)
+
provider = "newznab"
if headphones.PREFERRED_QUALITY == 3 or losslessOnly:
categories = "3040"
@@ -227,44 +237,49 @@ def searchNZB(albumid=None, new=False, losslessOnly=False):
if albums['Type'] == 'Other':
categories = "3030"
logger.info("Album type is audiobook/spokenword. Using audiobook category")
+
+ for newznab_host in newznab_hosts:
+
+ if newznab_host[2] == 0 or newznab_host[2] == '0':
+ continue
- params = { "t": "search",
- "apikey": headphones.NEWZNAB_APIKEY,
- "cat": categories,
- "maxage": headphones.USENET_RETENTION,
- "q": term
- }
-
- searchURL = headphones.NEWZNAB_HOST + '/api?' + urllib.urlencode(params)
-
- logger.info(u'Parsing results from %s' % (searchURL, headphones.NEWZNAB_HOST))
+ params = { "t": "search",
+ "apikey": newznab_host[1],
+ "cat": categories,
+ "maxage": headphones.USENET_RETENTION,
+ "q": term
+ }
- try:
- data = urllib2.urlopen(searchURL, timeout=20).read()
- except urllib2.URLError, e:
- logger.warn('Error fetching data from %s: %s' % (headphones.NEWZNAB_HOST, e))
- data = False
+ searchURL = newznab_host[0] + '/api?' + urllib.urlencode(params)
+
+ logger.info(u'Parsing results from %s' % (searchURL, newznab_host[0]))
- if data:
-
- d = feedparser.parse(data)
+ try:
+ data = urllib2.urlopen(searchURL, timeout=20).read()
+ except urllib2.URLError, e:
+ logger.warn('Error fetching data from %s: %s' % (newznab_host[0], e))
+ data = False
+
+ if data:
- if not len(d.entries):
- logger.info(u"No results found from %s for %s" % (headphones.NEWZNAB_HOST, term))
- pass
-
- else:
- for item in d.entries:
- try:
- url = item.link
- title = item.title
- size = int(item.links[1]['length'])
+ d = feedparser.parse(data)
+
+ if not len(d.entries):
+ logger.info(u"No results found from %s for %s" % (newznab_host[0], term))
+ pass
+
+ else:
+ for item in d.entries:
+ try:
+ url = item.link
+ title = item.title
+ size = int(item.links[1]['length'])
+
+ resultlist.append((title, size, url, provider))
+ logger.info('Found %s. Size: %s' % (title, helpers.bytes_to_mb(size)))
- resultlist.append((title, size, url, provider))
- logger.info('Found %s. Size: %s' % (title, helpers.bytes_to_mb(size)))
-
- except Exception, e:
- logger.error(u"An unknown error occurred trying to parse the feed: %s" % e)
+ except Exception, e:
+ logger.error(u"An unknown error occurred trying to parse the feed: %s" % e)
if headphones.NZBSORG:
provider = "nzbsorg"