Priority
+
Types
+
@@ -1525,6 +1545,8 @@
Priority
+ Types
+
diff --git a/lazylibrarian/__init__.py b/lazylibrarian/__init__.py
index e533545a..643a4311 100644
--- a/lazylibrarian/__init__.py
+++ b/lazylibrarian/__init__.py
@@ -168,7 +168,7 @@ CONFIG_GIT = ['GIT_REPO', 'GIT_USER', 'GIT_BRANCH', 'LATEST_VERSION', 'GIT_UPDAT
CONFIG_NONWEB = ['NAME_POSTFIX', 'DIR_PERM', 'FILE_PERM', 'BLOCKLIST_TIMER', 'DISPLAYLENGTH', 'ISBN_LOOKUP',
'WALL_COLUMNS', 'ADMIN_EMAIL', 'HTTP_TIMEOUT', 'PROXY_LOCAL', 'SKIPPED_EXT', 'CHERRYPYLOG',
'SYS_ENCODING', 'LT_DEVKEY', 'HIST_REFRESH', 'HTTP_EXT_TIMEOUT', 'CALIBRE_RENAME',
- 'NAME_RATIO', 'NAME_PARTIAL', 'NAME_PARTNAME', 'DIRECT_EBOOK', 'DIRECT_AUDIO', 'DIRECT_MAG']
+ 'NAME_RATIO', 'NAME_PARTIAL', 'NAME_PARTNAME']
# default interface does not know about these items, so leaves them unchanged
CONFIG_NONDEFAULT = ['BOOKSTRAP_THEME', 'AUDIOBOOK_TYPE', 'AUDIO_DIR', 'AUDIO_TAB', 'REJECT_AUDIO',
'REJECT_MAXAUDIO', 'REJECT_MINAUDIO', 'NEWAUDIO_STATUS', 'TOGGLES', 'FOUND_STATUS',
@@ -357,35 +357,40 @@ CONFIG_DEFINITIONS = {
'KAT_HOST': ('str', 'KAT', 'kickass.cd'),
'KAT': ('bool', 'KAT', 0),
'KAT_DLPRIORITY': ('int', 'KAT', 0),
+ 'KAT_DLTYPES': ('str', 'KAT', 'AEM'),
'WWT_HOST': ('str', 'WWT', 'https://worldwidetorrents.me'),
'WWT': ('bool', 'WWT', 0),
'WWT_DLPRIORITY': ('int', 'WWT', 0),
+ 'WWT_DLTYPES': ('str', 'WWT', 'AEM'),
'TPB_HOST': ('str', 'TPB', 'https://pirateproxy.cc'),
'TPB': ('bool', 'TPB', 0),
'TPB_DLPRIORITY': ('int', 'TPB', 0),
+ 'TPB_DLTYPES': ('str', 'TPB', 'AEM'),
'ZOO_HOST': ('str', 'ZOO', 'https://zooqle.com'),
'ZOO': ('bool', 'ZOO', 0),
'ZOO_DLPRIORITY': ('int', 'ZOO', 0),
+ 'ZOO_DLTYPES': ('str', 'ZOO', 'AEM'),
# 'EXTRA_HOST': ('str', 'EXTRA', 'extratorrent.cc'),
# 'EXTRA': ('bool', 'EXTRA', 0),
# 'EXTRA_DLPRIORITY': ('int', 'EXTRA', 0),
'TDL_HOST': ('str', 'TDL', 'torrentdownloads.me'),
'TDL': ('bool', 'TDL', 0),
'TDL_DLPRIORITY': ('int', 'TDL', 0),
+ 'TDL_DLTYPES': ('str', 'TDL', 'AEM'),
'GEN_HOST': ('str', 'GEN', 'libgen.io'),
'GEN_SEARCH': ('str', 'GEN', 'search.php'),
'GEN': ('bool', 'GEN', 0),
'GEN_DLPRIORITY': ('int', 'GEN', 0),
+ 'GEN_DLTYPES': ('str', 'GEN', 'EM'),
'GEN2_HOST': ('str', 'GEN', 'libgen.io'),
'GEN2_SEARCH': ('str', 'GEN', 'foreignfiction/index.php'),
'GEN2': ('bool', 'GEN', 0),
'GEN2_DLPRIORITY': ('int', 'GEN', 0),
- 'DIRECT_EBOOK': ('bool', 'GEN', 1),
- 'DIRECT_AUDIO': ('bool', 'GEN', 0),
- 'DIRECT_MAG': ('bool', 'GEN', 1),
+ 'GEN2_DLTYPES': ('str', 'GEN2', 'EM'),
'LIME_HOST': ('str', 'LIME', 'https://www.limetorrents.cc'),
'LIME': ('bool', 'LIME', 0),
'LIME_DLPRIORITY': ('int', 'LIME', 0),
+ 'LIME_DLTYPES': ('str', 'LIME', 'AEM'),
'NEWZBIN_UID': ('str', 'Newzbin', ''),
'NEWZBIN_PASS': ('str', 'Newzbin', ''),
'NEWZBIN': ('bool', 'Newzbin', 0),
@@ -789,7 +794,8 @@ def config_read(reloaded=False):
"MANUAL": check_setting('bool', newz_name, 'manual', 0),
"APILIMIT": check_setting('int', newz_name, 'apilimit', 0),
"APICOUNT": 0,
- "DLPRIORITY": check_setting('int', newz_name, 'dlpriority', 0)
+ "DLPRIORITY": check_setting('int', newz_name, 'dlpriority', 0),
+ "DLTYPES": check_setting('str', newz_name, 'dltypes', 'AEM'),
})
count += 1
# if the last slot is full, add an empty one on the end
@@ -829,7 +835,8 @@ def config_read(reloaded=False):
"MANUAL": check_setting('bool', torz_name, 'manual', 0),
"APILIMIT": check_setting('int', torz_name, 'apilimit', 0),
"APICOUNT": 0,
- "DLPRIORITY": check_setting('int', torz_name, 'dlpriority', 0)
+ "DLPRIORITY": check_setting('int', torz_name, 'dlpriority', 0),
+ "DLTYPES": check_setting('str', torz_name, 'dltypes', 'AEM'),
})
count += 1
# if the last slot is full, add an empty one on the end
@@ -861,7 +868,8 @@ def config_read(reloaded=False):
"DISPNAME": disp_name,
"ENABLED": check_setting('bool', rss_name, 'ENABLED', 0),
"HOST": check_setting('str', rss_name, 'HOST', ''),
- "DLPRIORITY": check_setting('int', rss_name, 'DLPRIORITY', 0)
+ "DLPRIORITY": check_setting('int', rss_name, 'DLPRIORITY', 0),
+ "DLTYPES": check_setting('str', rss_name, 'dltypes', 'E'),
})
count += 1
# if the last slot is full, add an empty one on the end
@@ -980,6 +988,11 @@ def config_write(part=None):
logger.debug("Unable to convert value of %s (%s) to SYS_ENCODING" % (key, repr(value)))
value = unaccented_str(value)
value = value.strip()
+ if 'DLTYPES' in key:
+ value = ''.join(sorted(set([i for i in value.upper() if i in 'AEM'])))
+ if not value:
+ value = 'E'
+ CONFIG[key] = value
if key in ['SEARCH_BOOKINTERVAL', 'SEARCH_MAGINTERVAL', 'SCAN_INTERVAL', 'VERSIONCHECK_INTERVAL',
'SEARCHRSS_INTERVAL', 'GOODREADS_INTERVAL', 'WISHLIST_INTERVAL']:
@@ -1008,8 +1021,9 @@ def config_write(part=None):
logger.warn('Unsaved/invalid config key: %s' % key)
if not part or part.startswith('Newznab') or part.startswith('Torznab'):
- NAB_ITEMS = ['ENABLED', 'DISPNAME', 'HOST', 'API', 'GENERALSEARCH', 'BOOKSEARCH', 'MAGSEARCH', 'AUDIOSEARCH',
- 'BOOKCAT', 'MAGCAT', 'AUDIOCAT', 'EXTENDED', 'DLPRIORITY', 'UPDATED', 'MANUAL', 'APILIMIT']
+ NAB_ITEMS = ['ENABLED', 'DISPNAME', 'HOST', 'API', 'GENERALSEARCH', 'BOOKSEARCH', 'MAGSEARCH',
+ 'AUDIOSEARCH', 'BOOKCAT', 'MAGCAT', 'AUDIOCAT', 'EXTENDED', 'DLPRIORITY', 'DLTYPES',
+ 'UPDATED', 'MANUAL', 'APILIMIT']
for entry in [[NEWZNAB_PROV, 'Newznab'], [TORZNAB_PROV, 'Torznab']]:
new_list = []
# strip out any empty slots
@@ -1041,6 +1055,11 @@ def config_write(part=None):
value = provider[item]
if isinstance(value, text_type):
value = value.strip()
+ if item == 'DLTYPES':
+ value = ''.join(sorted(set([i for i in value.upper() if i in 'AEM'])))
+ if not value:
+ value = 'E'
+ provider['DLTYPES'] = value
CFG.set(provider['NAME'], item, value)
if entry[1] == 'Newznab':
@@ -1051,7 +1070,7 @@ def config_write(part=None):
add_torz_slot()
if not part or part.startswith('rss_'):
- RSS_ITEMS = ['ENABLED', 'DISPNAME', 'HOST', 'DLPRIORITY']
+ RSS_ITEMS = ['ENABLED', 'DISPNAME', 'HOST', 'DLPRIORITY', 'DLTYPES']
new_list = []
# strip out any empty slots
for provider in RSS_PROV:
@@ -1082,6 +1101,11 @@ def config_write(part=None):
value = provider[item]
if isinstance(value, text_type):
value = value.strip()
+ if item == 'DLTYPES':
+ value = ''.join(sorted(set([i for i in value.upper() if i in 'AEM'])))
+ if not value:
+ value = 'E'
+ provider['DLTYPES'] = value
CFG.set(provider['NAME'], item, value)
RSS_PROV = new_list
@@ -1167,7 +1191,8 @@ def add_newz_slot():
"MANUAL": 0,
"APILIMIT": 0,
"APICOUNT": 0,
- "DLPRIORITY": 0
+ "DLPRIORITY": 0,
+ "DLTYPES": 'AEM'
}
NEWZNAB_PROV.append(empty)
@@ -1199,7 +1224,8 @@ def add_torz_slot():
"MANUAL": 0,
"APILIMIT": 0,
"APICOUNT": 0,
- "DLPRIORITY": 0
+ "DLPRIORITY": 0,
+ "DLTYPES": 'AEM'
}
TORZNAB_PROV.append(empty)
@@ -1258,7 +1284,8 @@ def add_rss_slot():
"DISPNAME": rss_name,
"ENABLED": 0,
"HOST": '',
- "DLPRIORITY": 0
+ "DLPRIORITY": 0,
+ "DLTYPES": 'E'
})
diff --git a/lazylibrarian/downloadmethods.py b/lazylibrarian/downloadmethods.py
index e44a93d6..db5c948c 100644
--- a/lazylibrarian/downloadmethods.py
+++ b/lazylibrarian/downloadmethods.py
@@ -120,12 +120,6 @@ def NZBDownloadMethod(bookid=None, nzbtitle=None, nzburl=None, library='eBook'):
def DirectDownloadMethod(bookid=None, dl_title=None, dl_url=None, library='eBook'):
- if (library == 'eBook' and not lazylibrarian.CONFIG['DIRECT_EBOOK']) or (
- library == 'AudioBook' and not lazylibrarian.CONFIG['DIRECT_AUDIO']) or (
- library == 'magazine' and not lazylibrarian.CONFIG['DIRECT_MAG']):
- res = "Unsupported DIRECT download type %s for [%s]" % (library, dl_title)
- logger.warn(res)
- return False, res
myDB = database.DBConnection()
Source = "DIRECT"
logger.debug("Starting Direct Download for [%s]" % dl_title)
diff --git a/lazylibrarian/librarysync.py b/lazylibrarian/librarysync.py
index 796b3ee9..ca3bfd8c 100644
--- a/lazylibrarian/librarysync.py
+++ b/lazylibrarian/librarysync.py
@@ -237,7 +237,7 @@ def find_book_in_db(author, book, ignored=None):
# - Strict prefix match with a ()ed remainder is allowed
# But the leading : is removed by has_clean_subtitle, so we allow all non (): subtitles
has_clean_subtitle = re.search(r"^\s+([^:()]+|\([^)]+\))$", book_sub) is not None
-
+
logger.debug('Searching %s %sbook%s by [%s] in database for [%s]' %
(len(books), ign, plural(len(books)), author, book))
if lazylibrarian.LOGLEVEL & lazylibrarian.log_libsync:
diff --git a/lazylibrarian/manualbook.py b/lazylibrarian/manualbook.py
index 6faf4ffc..dc95ce72 100644
--- a/lazylibrarian/manualbook.py
+++ b/lazylibrarian/manualbook.py
@@ -68,13 +68,9 @@ def searchItem(item=None, bookid=None, cat=None):
if nprov:
results += resultlist
if lazylibrarian.USE_DIRECT():
- if (cat == 'book' and not lazylibrarian.CONFIG['DIRECT_EBOOK']) or (
- cat == 'audio' and not lazylibrarian.CONFIG['DIRECT_AUDIO']):
- logger.debug("Ignoring direct providers for %s" % cat)
- else:
- resultlist, nprov = IterateOverDirectSites(book, cat)
- if nprov:
- results += resultlist
+ resultlist, nprov = IterateOverDirectSites(book, cat)
+ if nprov:
+ results += resultlist
if lazylibrarian.USE_RSS():
resultlist, nprov = IterateOverRSSSites()
if nprov:
diff --git a/lazylibrarian/providers.py b/lazylibrarian/providers.py
index 1f6035e6..44ff992f 100644
--- a/lazylibrarian/providers.py
+++ b/lazylibrarian/providers.py
@@ -414,6 +414,12 @@ def IterateOverNewzNabSites(book=None, searchType=None):
if provider['ENABLED']:
if ProviderIsBlocked(provider['HOST']):
logger.debug('[IterateOverNewzNabSites] - %s is BLOCKED' % provider['HOST'])
+ elif searchType in ['book', 'shortbook'] and 'E' not in provider['DLTYPES']:
+ logger.debug("Ignoring %s for eBook" % provider['HOST'])
+ elif "audio" in searchType and 'A' not in provider['DLTYPES']:
+ logger.debug("Ignoring %s for AudioBook" % provider['HOST'])
+ elif "mag" in searchType and 'M' not in provider['DLTYPES']:
+ logger.debug("Ignoring %s for Magazine" % provider['HOST'])
else:
if check_int(provider['APILIMIT'], 0):
if 'APICOUNT' in provider:
@@ -426,16 +432,22 @@ def IterateOverNewzNabSites(book=None, searchType=None):
else:
provider['APICOUNT'] = res + 1
- if not ProviderIsBlocked(provider['HOST']):
- provider = get_capabilities(provider)
- providers += 1
- logger.debug('[IterateOverNewzNabSites] - %s' % provider['HOST'])
- resultslist += NewzNabPlus(book, provider, searchType, "nzb")
+ if not ProviderIsBlocked(provider['HOST']):
+ provider = get_capabilities(provider)
+ providers += 1
+ logger.debug('[IterateOverNewzNabSites] - %s' % provider['HOST'])
+ resultslist += NewzNabPlus(book, provider, searchType, "nzb")
for provider in lazylibrarian.TORZNAB_PROV:
if provider['ENABLED']:
if ProviderIsBlocked(provider['HOST']):
logger.debug('[IterateOverNewzNabSites] - %s is BLOCKED' % provider['HOST'])
+ elif searchType in ['book', 'shortbook'] and 'E' not in provider['DLTYPES']:
+ logger.debug("Ignoring %s for eBook" % provider['HOST'])
+ elif "audio" in searchType and 'A' not in provider['DLTYPES']:
+ logger.debug("Ignoring %s for AudioBook" % provider['HOST'])
+ elif "mag" in searchType and 'M' not in provider['DLTYPES']:
+ logger.debug("Ignoring %s for Magazine" % provider['HOST'])
else:
if check_int(provider['APILIMIT'], 0):
if 'APICOUNT' in provider:
@@ -448,11 +460,11 @@ def IterateOverNewzNabSites(book=None, searchType=None):
else:
provider['APICOUNT'] = res + 1
- if not ProviderIsBlocked(provider['HOST']):
- provider = get_capabilities(provider)
- providers += 1
- logger.debug('[IterateOverTorzNabSites] - %s' % provider['HOST'])
- resultslist += NewzNabPlus(book, provider, searchType, "torznab")
+ if not ProviderIsBlocked(provider['HOST']):
+ provider = get_capabilities(provider)
+ providers += 1
+ logger.debug('[IterateOverTorzNabSites] - %s' % provider['HOST'])
+ resultslist += NewzNabPlus(book, provider, searchType, "torznab")
return resultslist, providers
@@ -468,6 +480,12 @@ def IterateOverTorrentSites(book=None, searchType=None):
if lazylibrarian.CONFIG[prov]:
if ProviderIsBlocked(prov):
logger.debug('[IterateOverTorrentSites] - %s is BLOCKED' % lazylibrarian.CONFIG[prov + '_HOST'])
+ elif searchType in ['book', 'shortbook'] and 'E' not in lazylibrarian.CONFIG[prov + '_DLTYPES']:
+ logger.debug("Ignoring %s for eBook" % prov)
+ elif "audio" in searchType and 'A' not in lazylibrarian.CONFIG[prov + '_DLTYPES']:
+ logger.debug("Ignoring %s for AudioBook" % prov)
+ elif "mag" in searchType and 'M' not in lazylibrarian.CONFIG[prov + '_DLTYPES']:
+ logger.debug("Ignoring %s for Magazine" % prov)
else:
logger.debug('[IterateOverTorrentSites] - %s' % lazylibrarian.CONFIG[prov + '_HOST'])
if prov == 'KAT':
@@ -510,6 +528,12 @@ def IterateOverDirectSites(book=None, searchType=None):
if ProviderIsBlocked(prov):
logger.debug('[IterateOverDirectSites] - %s %s is BLOCKED' % (lazylibrarian.CONFIG[prov + '_HOST'],
lazylibrarian.CONFIG[prov + '_SEARCH']))
+ elif searchType in ['book', 'shortbook'] and 'E' not in lazylibrarian.CONFIG[prov + '_DLTYPES']:
+ logger.debug("Ignoring %s for eBook" % prov)
+ elif "audio" in searchType and 'A' not in lazylibrarian.CONFIG[prov + '_DLTYPES']:
+ logger.debug("Ignoring %s for AudioBook" % prov)
+ elif "mag" in searchType and 'M' not in lazylibrarian.CONFIG[prov + '_DLTYPES']:
+ logger.debug("Ignoring %s for Magazine" % prov)
else:
logger.debug('[IterateOverDirectSites] - %s %s' % (lazylibrarian.CONFIG[prov + '_HOST'],
lazylibrarian.CONFIG[prov + '_SEARCH']))
@@ -533,7 +557,8 @@ def IterateOverRSSSites():
else:
providers += 1
logger.debug('[IterateOverRSSSites] - %s' % provider['HOST'])
- resultslist += RSS(provider['HOST'], provider['NAME'], provider['DLPRIORITY'], provider['DISPNAME'])
+ resultslist += RSS(provider['HOST'], provider['NAME'], provider['DLPRIORITY'], provider['DISPNAME'],
+ provider['DLTYPES'])
return resultslist, providers
@@ -551,7 +576,7 @@ def IterateOverWishLists():
providers += 1
logger.debug('[IterateOverWishLists] - %s' % provider['HOST'])
resultslist += GOODREADS(provider['HOST'], provider['NAME'],
- provider['DLPRIORITY'], provider['DISPNAME'])
+ provider['DLPRIORITY'], provider['DISPNAME'], provider['DLTYPES'])
elif wishtype == 'LISTOPIA':
if ProviderIsBlocked(provider['HOST']):
logger.debug('[IterateOverWishLists] - %s is BLOCKED' % provider['HOST'])
@@ -559,7 +584,7 @@ def IterateOverWishLists():
providers += 1
logger.debug('[IterateOverWishLists] - %s' % provider['HOST'])
resultslist += LISTOPIA(provider['HOST'], provider['NAME'],
- provider['DLPRIORITY'], provider['DISPNAME'])
+ provider['DLPRIORITY'], provider['DISPNAME'], provider['DLTYPES'])
elif wishtype == 'NYTIMES':
if ProviderIsBlocked(provider['HOST']):
logger.debug('[IterateOverWishLists] - %s is BLOCKED' % provider['HOST'])
@@ -567,12 +592,12 @@ def IterateOverWishLists():
providers += 1
logger.debug('[IterateOverWishLists] - %s' % provider['HOST'])
resultslist += NYTIMES(provider['HOST'], provider['NAME'],
- provider['DLPRIORITY'], provider['DISPNAME'])
+ provider['DLPRIORITY'], provider['DISPNAME'], provider['DLTYPES'])
return resultslist, providers
-def NYTIMES(host=None, feednr=None, priority=0, dispname=None, test=False):
+def NYTIMES(host=None, feednr=None, priority=0, dispname=None, types='E', test=False):
"""
NYTIMES best-sellers query function, return all the results in a list
"""
@@ -615,7 +640,8 @@ def NYTIMES(host=None, feednr=None, priority=0, dispname=None, test=False):
'rss_bookid': '',
'rss_isbn': '',
'priority': priority,
- 'dispname': dispname
+ 'dispname': dispname,
+ 'types': types,
})
except IndexError:
pass
@@ -626,7 +652,7 @@ def NYTIMES(host=None, feednr=None, priority=0, dispname=None, test=False):
return results
-def LISTOPIA(host=None, feednr=None, priority=0, dispname=None, test=False):
+def LISTOPIA(host=None, feednr=None, priority=0, dispname=None, types='E', test=False):
"""
Goodreads Listopia query function, return all the results in a list
"""
@@ -675,7 +701,8 @@ def LISTOPIA(host=None, feednr=None, priority=0, dispname=None, test=False):
'rss_bookid': book_id,
'rss_isbn': '',
'priority': priority,
- 'dispname': dispname
+ 'dispname': dispname,
+ 'types': types,
})
next_page = True
except IndexError:
@@ -693,7 +720,7 @@ def LISTOPIA(host=None, feednr=None, priority=0, dispname=None, test=False):
return results
-def GOODREADS(host=None, feednr=None, priority=0, dispname=None, test=False):
+def GOODREADS(host=None, feednr=None, priority=0, dispname=None, types='E', test=False):
"""
Goodreads RSS query function, return all the results in a list, can handle multiple wishlists
but expects goodreads format (looks for goodreads category names)
@@ -745,14 +772,15 @@ def GOODREADS(host=None, feednr=None, priority=0, dispname=None, test=False):
'rss_bookid': book_id,
'rss_isbn': isbn,
'priority': priority,
- 'dispname': dispname
+ 'dispname': dispname,
+ 'types': types,
})
else:
logger.debug('No data returned from %s' % host)
return results
-def RSS(host=None, feednr=None, priority=0, dispname=None, test=False):
+def RSS(host=None, feednr=None, priority=0, dispname=None, types='E', test=False):
"""
Generic RSS query function, just return all the results from the RSS feed in a list
"""
@@ -840,7 +868,8 @@ def RSS(host=None, feednr=None, priority=0, dispname=None, test=False):
'tor_feed': feednr,
'tor_type': tortype,
'priority': priority,
- 'dispname': dispname
+ 'dispname': dispname,
+ 'types': types,
})
else:
logger.debug('No data returned from %s' % host)
diff --git a/lazylibrarian/resultlist.py b/lazylibrarian/resultlist.py
index 0e16986c..62bb61c9 100644
--- a/lazylibrarian/resultlist.py
+++ b/lazylibrarian/resultlist.py
@@ -136,6 +136,17 @@ def findBestResult(resultlist, book, searchtype, source):
(resultTitle, blacklisted['Status'], blacklisted['NZBprov']))
rejected = True
+ if not rejected and source == 'rss':
+ if searchtype in ['book', 'shortbook'] and 'E' not in res['types']:
+ rejected = True
+ logger.debug("Ignoring %s for eBook" % res[prefix + 'prov'])
+ if 'audio' in searchtype and 'A' not in res['types']:
+ rejected = True
+ logger.debug("Ignoring %s for AudioBook" % res[prefix + 'prov'])
+ if 'mag' in searchtype and 'M' not in res['types']:
+ rejected = True
+ logger.debug("Ignoring %s for Magazine" % res[prefix + 'prov'])
+
if not rejected and not url.startswith('http') and not url.startswith('magnet'):
rejected = True
logger.debug("Rejecting %s, invalid URL [%s]" % (resultTitle, url))
diff --git a/lazylibrarian/searchbook.py b/lazylibrarian/searchbook.py
index 28c09f1b..33d1b67d 100644
--- a/lazylibrarian/searchbook.py
+++ b/lazylibrarian/searchbook.py
@@ -216,17 +216,14 @@ def search_book(books=None, library=None):
lazylibrarian.NO_TOR_MSG = timenow
modelist.remove('tor')
elif mode == 'direct' and 'direct' in modelist:
- if searchtype == 'audio' and not lazylibrarian.CONFIG['DIRECT_AUDIO']:
- logger.debug("Ignoring direct providers for audio")
- else:
- resultlist, nprov = IterateOverDirectSites(book, searchtype)
- if not nprov:
- # don't nag. Show warning message no more than every 20 mins
- timenow = int(time.time())
- if check_int(lazylibrarian.NO_DIRECT_MSG, 0) + 1200 < timenow:
- logger.warn('No direct providers are available. Check config and blocklist')
- lazylibrarian.NO_DIRECT_MSG = timenow
- modelist.remove('direct')
+ resultlist, nprov = IterateOverDirectSites(book, searchtype)
+ if not nprov:
+ # don't nag. Show warning message no more than every 20 mins
+ timenow = int(time.time())
+ if check_int(lazylibrarian.NO_DIRECT_MSG, 0) + 1200 < timenow:
+ logger.warn('No direct providers are available. Check config and blocklist')
+ lazylibrarian.NO_DIRECT_MSG = timenow
+ modelist.remove('direct')
elif mode == 'rss' and 'rss' in modelist:
if rss_resultlist:
resultlist = rss_resultlist
@@ -261,18 +258,14 @@ def search_book(books=None, library=None):
lazylibrarian.NO_TOR_MSG = timenow
modelist.remove('tor')
elif mode == 'direct' and 'direct' in modelist:
- if (searchtype == 'book' and not lazylibrarian.CONFIG['DIRECT_EBOOK']) or (
- searchtype == 'audio' and not lazylibrarian.CONFIG['DIRECT_AUDIO']):
- logger.debug("Ignoring direct providers for %s" % searchtype)
- else:
- resultlist, nprov = IterateOverDirectSites(book, searchtype)
- if not nprov:
- # don't nag. Show warning message no more than every 20 mins
- timenow = int(time.time())
- if check_int(lazylibrarian.NO_DIRECT_MSG, 0) + 1200 < timenow:
- logger.warn('No direct providers are available. Check config and blocklist')
- lazylibrarian.NO_DIRECT_MSG = timenow
- modelist.remove('direct')
+ resultlist, nprov = IterateOverDirectSites(book, searchtype)
+ if not nprov:
+ # don't nag. Show warning message no more than every 20 mins
+ timenow = int(time.time())
+ if check_int(lazylibrarian.NO_DIRECT_MSG, 0) + 1200 < timenow:
+ logger.warn('No direct providers are available. Check config and blocklist')
+ lazylibrarian.NO_DIRECT_MSG = timenow
+ modelist.remove('direct')
elif mode == 'rss' and 'rss' in modelist:
resultlist = rss_resultlist
diff --git a/lazylibrarian/searchmag.py b/lazylibrarian/searchmag.py
index c964a009..9869a501 100644
--- a/lazylibrarian/searchmag.py
+++ b/lazylibrarian/searchmag.py
@@ -110,28 +110,25 @@ def search_magazines(mags=None, reset=False):
lazylibrarian.NO_NZB_MSG = timenow
if lazylibrarian.USE_DIRECT():
- if not lazylibrarian.CONFIG['DIRECT_MAG']:
- logger.debug("Ignoring direct providers for magazines")
- else:
- dir_resultlist, nproviders = IterateOverDirectSites(book, 'mag')
- if not nproviders:
- # don't nag. Show warning message no more than every 20 mins
- timenow = int(time.time())
- if check_int(lazylibrarian.NO_DIRECT_MSG, 0) + 1200 < timenow:
- logger.warn('No direct providers are available. Check config and blocklist')
- lazylibrarian.NO_DIRECT_MSG = timenow
+ dir_resultlist, nproviders = IterateOverDirectSites(book, 'mag')
+ if not nproviders:
+ # don't nag. Show warning message no more than every 20 mins
+ timenow = int(time.time())
+ if check_int(lazylibrarian.NO_DIRECT_MSG, 0) + 1200 < timenow:
+ logger.warn('No direct providers are available. Check config and blocklist')
+ lazylibrarian.NO_DIRECT_MSG = timenow
- if dir_resultlist:
- for item in dir_resultlist: # reformat the results so they look like nzbs
- resultlist.append({
- 'bookid': item['bookid'],
- 'nzbprov': item['tor_prov'],
- 'nzbtitle': item['tor_title'],
- 'nzburl': item['tor_url'],
- 'nzbdate': 'Fri, 01 Jan 1970 00:00:00 +0100', # fake date as none returned
- 'nzbsize': item['tor_size'],
- 'nzbmode': 'torrent'
- })
+ if dir_resultlist:
+ for item in dir_resultlist: # reformat the results so they look like nzbs
+ resultlist.append({
+ 'bookid': item['bookid'],
+ 'nzbprov': item['tor_prov'],
+ 'nzbtitle': item['tor_title'],
+ 'nzburl': item['tor_url'],
+ 'nzbdate': 'Fri, 01 Jan 1970 00:00:00 +0100', # fake date as none returned
+ 'nzbsize': item['tor_size'],
+ 'nzbmode': 'direct'
+ })
if lazylibrarian.USE_TOR():
tor_resultlist, nproviders = IterateOverTorrentSites(book, 'mag')
@@ -165,16 +162,16 @@ def search_magazines(mags=None, reset=False):
if rss_resultlist:
for item in rss_resultlist: # reformat the rss results so they look like nzbs
- resultlist.append({
- 'bookid': book['bookid'],
- 'nzbprov': item['tor_prov'],
- 'nzbtitle': item['tor_title'],
- 'nzburl': item['tor_url'],
- 'nzbdate':
- item['tor_date'], # may be fake date as none returned from rss torrents, only rss nzb
- 'nzbsize': item['tor_size'],
- 'nzbmode': item['tor_type']
- })
+ if 'M' in item['types']:
+ resultlist.append({
+ 'bookid': book['bookid'],
+ 'nzbprov': item['tor_prov'],
+ 'nzbtitle': item['tor_title'],
+ 'nzburl': item['tor_url'],
+ 'nzbdate': item['tor_date'], # may be fake date as none returned from rss torrents
+ 'nzbsize': item['tor_size'],
+ 'nzbmode': item['tor_type']
+ })
if not resultlist:
logger.debug("No results for magazine %s" % book['searchterm'])
diff --git a/lazylibrarian/searchrss.py b/lazylibrarian/searchrss.py
index aa06ac02..a61cb939 100644
--- a/lazylibrarian/searchrss.py
+++ b/lazylibrarian/searchrss.py
@@ -58,8 +58,8 @@ def search_wishlist():
logger.debug('Processing %s item%s in wishlists' % (len(resultlist), plural(len(resultlist))))
for book in resultlist:
# we get rss_author, rss_title, maybe rss_isbn, rss_bookid (goodreads bookid)
- # we can just use bookid if goodreads, or try isbn and name matching on author/title if googlebooks
- # not sure if anyone would use a goodreads wishlist if not using goodreads interface...
+ # we can just use bookid if goodreads, or try isbn and name matching on author/title if not
+ # eg NYTimes wishlist
if lazylibrarian.CONFIG['BOOK_API'] == "GoodReads" and book['rss_bookid']:
bookmatch = myDB.match('select Status,BookName from books where bookid=?', (book['rss_bookid'],))
if bookmatch: