Added DLTypes to all providers (A)udio (E)book (M)ag

This commit is contained in:
Phil Borman
2018-10-08 22:01:01 +02:00
parent d154114cd1
commit e02be6f287
10 changed files with 175 additions and 106 deletions

View File

@@ -922,7 +922,7 @@
<input type="text" id="deluge_cert" name="deluge_cert" value="${lazylibrarian.CONFIG['DELUGE_CERT']}" class="form-control" placeholder="webUI only">
</div>
<div class="form-group col-md-4">
<label for="deluge_base">Deluge URLBase:</label>
<label for="deluge_base">Deluge URL Base:</label>
<input type="text" id="deluge_base" name="deluge_base" value="${lazylibrarian.CONFIG['DELUGE_BASE']}" class="form-control" placeholder="URL Base">
</div>
</div>
@@ -1238,6 +1238,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="newznab_${loop.index}_dlpriority" name="newznab_${loop.index}_dlpriority" value="${provider['DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="newznab_${loop.index}_dltypes" name="newznab_${loop.index}_dltypes" value="${provider['DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="newznab_${loop.index}"> Test</button>
</span>
@@ -1281,6 +1283,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="torznab_${loop.index}_dlpriority" name="torznab_${loop.index}_dlpriority" value="${provider['DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="torznab_${loop.index}_dltypes" name="torznab_${loop.index}_dltypes" value="${provider['DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="torznab_${loop.index}"> Test</button>
</span>
@@ -1324,6 +1328,8 @@
<div class="input-group">
<span class="input-group-addon">${label}</span>
<input type="number" id="rss_${loop.index}_dlpriority" name="rss_${loop.index}_dlpriority" value="${provider['DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="rss_${loop.index}_dltypes" name="rss_${loop.index}_dltypes" value="${provider['DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="rss_${loop.index}"> Test</button>
</span>
@@ -1353,6 +1359,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="kat_dlpriority" name="kat_dlpriority" value="${lazylibrarian.CONFIG['KAT_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="kat_dltypes" name="kat_dltypes" value="${lazylibrarian.CONFIG['KAT_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="KAT"> Test</button>
</span>
@@ -1375,6 +1383,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="tpb_dlpriority" name="tpb_dlpriority" value="${lazylibrarian.CONFIG['TPB_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="tpb_dltypes" name="tpb_dltypes" value="${lazylibrarian.CONFIG['TPB_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="TPB"> Test</button>
</span>
@@ -1397,6 +1407,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="wwt_dlpriority" name="wwt_dlpriority" value="${lazylibrarian.CONFIG['WWT_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="wwt_dltypes" name="wwt_dltypes" value="${lazylibrarian.CONFIG['WWT_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="WWT"> Test</button>
</span>
@@ -1419,6 +1431,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="zoo_dlpriority" name="zoo_dlpriority" value="${lazylibrarian.CONFIG['ZOO_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="zoo_dltypes" name="zoo_dltypes" value="${lazylibrarian.CONFIG['ZOO_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="ZOO"> Test</button>
</span>
@@ -1441,6 +1455,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="tdl_dlpriority" name="tdl_dlpriority" value="${lazylibrarian.CONFIG['TDL_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="tdl_dltypes" name="tdl_dltypes" value="${lazylibrarian.CONFIG['TDL_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="TDL"> Test</button>
</span>
@@ -1463,6 +1479,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="lime_dlpriority" name="lime_dlpriority" value="${lazylibrarian.CONFIG['LIME_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="lime_dltypes" name="lime_dltypes" value="${lazylibrarian.CONFIG['LIME_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="LIME"> Test</button>
</span>
@@ -1497,6 +1515,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="gen_dlpriority" name="gen_dlpriority" value="${lazylibrarian.CONFIG['GEN_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="gen_dltypes" name="gen_dltypes" value="${lazylibrarian.CONFIG['GEN_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="GEN"> Test</button>
</span>
@@ -1525,6 +1545,8 @@
<div class="input-group">
<span class="input-group-addon">Priority</span>
<input type="number" id="gen2_dlpriority" name="gen2_dlpriority" value="${lazylibrarian.CONFIG['GEN2_DLPRIORITY']}" class="form-control" placeholder="0">
<span class="input-group-addon">Types</span>
<input type="text" id="gen2_dltypes" name="gen2_dltypes" value="${lazylibrarian.CONFIG['GEN2_DLTYPES']}" class="form-control" placeholder="">
<span class="input-group-addon">
<button role="testprov" class="button btn btn-xs btn-warning btn-primary" type="button" value="GEN2"> Test</button>
</span>

View File

@@ -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'
})

View File

@@ -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)

View File

@@ -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:

View File

@@ -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:

View File

@@ -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)

View File

@@ -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))

View File

@@ -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

View File

@@ -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'])

View File

@@ -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: