From 74767215fb9cb35291f3df845a3194b1b4bf0c5e Mon Sep 17 00:00:00 2001 From: evilhero Date: Wed, 16 Jan 2019 17:09:51 -0500 Subject: [PATCH] Various fixes for DDL option --- mylar/PostProcessor.py | 51 +++++++++++++++++++++++++----------------- mylar/api.py | 8 ++++++- mylar/getcomics.py | 3 ++- mylar/helpers.py | 8 +++++-- mylar/nzbget.py | 3 ++- mylar/process.py | 5 +++-- mylar/sabnzbd.py | 6 +++-- mylar/search.py | 19 +++++++++++----- 8 files changed, 67 insertions(+), 36 deletions(-) diff --git a/mylar/PostProcessor.py b/mylar/PostProcessor.py index fa9d0929..8dc38ebd 100755 --- a/mylar/PostProcessor.py +++ b/mylar/PostProcessor.py @@ -45,7 +45,7 @@ class PostProcessor(object): FOLDER_NAME = 2 FILE_NAME = 3 - def __init__(self, nzb_name, nzb_folder, issueid=None, module=None, queue=None, comicid=None, apicall=False): + def __init__(self, nzb_name, nzb_folder, issueid=None, module=None, queue=None, comicid=None, apicall=False ,dll=False): """ Creates a new post processor with the given file path and optionally an NZB name. @@ -72,6 +72,11 @@ class PostProcessor(object): else: self.apicall = False + if ddl is True: + self.ddl = True + else: + self.ddl = False + if mylar.CONFIG.FILE_OPTS == 'copy': self.fileop = shutil.copy else: @@ -344,27 +349,31 @@ class PostProcessor(object): self._log("nzb folder: " + self.nzb_folder) logger.fdebug(module + ' nzb name: ' + self.nzb_name) logger.fdebug(module + ' nzb folder: ' + self.nzb_folder) - if mylar.USE_SABNZBD==0: - logger.fdebug(module + ' Not using SABnzbd') - elif mylar.USE_SABNZBD != 0 and self.nzb_name == 'Manual Run': - logger.fdebug(module + ' Not using SABnzbd : Manual Run') - else: - # if the SAB Directory option is enabled, let's use that folder name and append the jobname. - if all([mylar.CONFIG.SAB_TO_MYLAR, mylar.CONFIG.SAB_DIRECTORY is not None, mylar.CONFIG.SAB_DIRECTORY != 'None']): - self.nzb_folder = os.path.join(mylar.CONFIG.SAB_DIRECTORY, self.nzb_name).encode(mylar.SYS_ENCODING) - logger.fdebug(module + ' SABnzbd Download folder option enabled. Directory set to : ' + self.nzb_folder) + if self.ddl is False: + if mylar.USE_SABNZBD==0: + logger.fdebug(module + ' Not using SABnzbd') + elif mylar.USE_SABNZBD != 0 and self.nzb_name == 'Manual Run': + logger.fdebug(module + ' Not using SABnzbd : Manual Run') + else: + # if the SAB Directory option is enabled, let's use that folder name and append the jobname. + if all([mylar.CONFIG.SAB_TO_MYLAR, mylar.CONFIG.SAB_DIRECTORY is not None, mylar.CONFIG.SAB_DIRECTORY != 'None']): + self.nzb_folder = os.path.join(mylar.CONFIG.SAB_DIRECTORY, self.nzb_name).encode(mylar.SYS_ENCODING) + logger.fdebug(module + ' SABnzbd Download folder option enabled. Directory set to : ' + self.nzb_folder) + + if mylar.USE_NZBGET==1: + if self.nzb_name != 'Manual Run': + logger.fdebug(module + ' Using NZBGET') + logger.fdebug(module + ' NZB name as passed from NZBGet: ' + self.nzb_name) + # if the NZBGet Directory option is enabled, let's use that folder name and append the jobname. + if self.nzb_name == 'Manual Run': + logger.fdebug(module + ' Manual Run Post-Processing enabled.') + elif all([mylar.CONFIG.NZBGET_DIRECTORY is not None, mylar.CONFIG.NZBGET_DIRECTORY is not 'None']): + logger.fdebug(module + ' NZB name as passed from NZBGet: ' + self.nzb_name) + self.nzb_folder = os.path.join(mylar.CONFIG.NZBGET_DIRECTORY, self.nzb_name).encode(mylar.SYS_ENCODING) + logger.fdebug(module + ' NZBGET Download folder option enabled. Directory set to : ' + self.nzb_folder) + else: + logger.fdebug('%s Now performing post-processing of %s sent from DDL' % (module, nzb_name)) - if mylar.USE_NZBGET==1: - if self.nzb_name != 'Manual Run': - logger.fdebug(module + ' Using NZBGET') - logger.fdebug(module + ' NZB name as passed from NZBGet: ' + self.nzb_name) - # if the NZBGet Directory option is enabled, let's use that folder name and append the jobname. - if self.nzb_name == 'Manual Run': - logger.fdebug(module + ' Manual Run Post-Processing enabled.') - elif all([mylar.CONFIG.NZBGET_DIRECTORY is not None, mylar.CONFIG.NZBGET_DIRECTORY is not 'None']): - logger.fdebug(module + ' NZB name as passed from NZBGet: ' + self.nzb_name) - self.nzb_folder = os.path.join(mylar.CONFIG.NZBGET_DIRECTORY, self.nzb_name).encode(mylar.SYS_ENCODING) - logger.fdebug(module + ' NZBGET Download folder option enabled. Directory set to : ' + self.nzb_folder) myDB = db.DBConnection() self.oneoffinlist = False diff --git a/mylar/api.py b/mylar/api.py index 1e898df3..9cf6ad44 100644 --- a/mylar/api.py +++ b/mylar/api.py @@ -358,6 +358,11 @@ class Api(object): else: comicid = kwargs['comicid'] + if 'ddl' not in kwargs: + ddl = False + else: + ddl = True + if 'apc_version' not in kwargs: logger.info('Received API Request for PostProcessing %s [%s]. Queueing...' % (self.nzb_name, self.nzb_folder)) mylar.PP_QUEUE.put({'nzb_name': self.nzb_name, @@ -365,7 +370,8 @@ class Api(object): 'issueid': issueid, 'failed': failed, 'comicid': comicid, - 'apicall': True}) + 'apicall': True, + 'ddl': ddl}) self.data = 'Successfully submitted request for post-processing for %s' % self.nzb_name #fp = process.Process(self.nzb_name, self.nzb_folder, issueid=issueid, failed=failed, comicid=comicid, apicall=True) #self.data = fp.post_process() diff --git a/mylar/getcomics.py b/mylar/getcomics.py index ecf20b41..59615723 100644 --- a/mylar/getcomics.py +++ b/mylar/getcomics.py @@ -134,6 +134,7 @@ class GC(object): series = option_find elif 'Year' in option_find: year = option_find.findNext(text=True) + year = re.sub('|', '', year).strip() else: if 'Size' in prev_option: size = option_find #.findNext(text=True) @@ -141,7 +142,7 @@ class GC(object): break i+=1 - logger.fdebug('%s [%s] / %s' % (series, year, size)) + logger.fdebug('Now downloading: %s [%s] / %s ... this can take a while (go get some take-out)...' % (series, year, size)) link = None for f in soup.findAll("div", {"class": "aio-pulse"}): diff --git a/mylar/helpers.py b/mylar/helpers.py index 852421ca..95fb192e 100755 --- a/mylar/helpers.py +++ b/mylar/helpers.py @@ -3040,7 +3040,10 @@ def postprocess_main(queue): break if mylar.APILOCK is False: - pprocess = process.Process(item['nzb_name'], item['nzb_folder'], item['failed'], item['issueid'], item['comicid'], item['apicall']) + try: + pprocess = process.Process(item['nzb_name'], item['nzb_folder'], item['failed'], item['issueid'], item['comicid'], item['apicall'], item['ddl']) + except: + pprocess = process.Process(item['nzb_name'], item['nzb_folder'], item['failed'], item['issueid'], item['comicid'], item['apicall']) pp = pprocess.post_process() time.sleep(5) #arbitrary sleep to let the process attempt to finish pp'ing @@ -3122,7 +3125,8 @@ def nzb_monitor(queue): 'failed': nzstat['failed'], 'issueid': nzstat['issueid'], 'comicid': nzstat['comicid'], - 'apicall': nzstat['apicall']}) + 'apicall': nzstat['apicall'], + 'ddl': False}) #cc = process.Process(nzstat['name'], nzstat['location'], failed=nzstat['failed']) #nzpp = cc.post_process() except Exception as e: diff --git a/mylar/nzbget.py b/mylar/nzbget.py index ee6c2100..01fa73eb 100644 --- a/mylar/nzbget.py +++ b/mylar/nzbget.py @@ -228,7 +228,8 @@ class NZBGet(object): 'failed': False, 'issueid': nzbinfo['issueid'], 'comicid': nzbinfo['comicid'], - 'apicall': True} + 'apicall': True, + 'ddl': False} else: logger.warn('Could not find completed NZBID %s in history' % nzbid) return {'status': False} diff --git a/mylar/process.py b/mylar/process.py index 0e50b444..4063030c 100644 --- a/mylar/process.py +++ b/mylar/process.py @@ -21,13 +21,14 @@ import logger class Process(object): - def __init__(self, nzb_name, nzb_folder, failed=False, issueid=None, comicid=None, apicall=False): + def __init__(self, nzb_name, nzb_folder, failed=False, issueid=None, comicid=None, apicall=False, ddl=False): self.nzb_name = nzb_name self.nzb_folder = nzb_folder self.failed = failed self.issueid = issueid self.comicid = comicid self.apicall = apicall + self.ddl = ddl def post_process(self): if self.failed == '0': @@ -39,7 +40,7 @@ class Process(object): retry_outside = False if self.failed is False: - PostProcess = mylar.PostProcessor.PostProcessor(self.nzb_name, self.nzb_folder, self.issueid, queue=queue, comicid=self.comicid, apicall=self.apicall) + PostProcess = mylar.PostProcessor.PostProcessor(self.nzb_name, self.nzb_folder, self.issueid, queue=queue, comicid=self.comicid, apicall=self.apicall, ddl=self.ddl) if any([self.nzb_name == 'Manual Run', self.nzb_name == 'Manual+Run', self.apicall is True, self.issueid is not None]): threading.Thread(target=PostProcess.Process).start() else: diff --git a/mylar/sabnzbd.py b/mylar/sabnzbd.py index 22e81153..c330e81c 100644 --- a/mylar/sabnzbd.py +++ b/mylar/sabnzbd.py @@ -131,7 +131,8 @@ class SABnzbd(object): 'failed': False, 'issueid': nzbinfo['issueid'], 'comicid': nzbinfo['comicid'], - 'apicall': True} + 'apicall': True, + 'ddl': False} break else: logger.info('no file found where it should be @ %s - is there another script that moves things after completion ?' % hq['storage']) @@ -152,7 +153,8 @@ class SABnzbd(object): 'failed': True, 'issueid': sendresponse['issueid'], 'comicid': sendresponse['comicid'], - 'apicall': True} + 'apicall': True, + 'ddl': False} break break diff --git a/mylar/search.py b/mylar/search.py index 21ad6d31..d825cff4 100755 --- a/mylar/search.py +++ b/mylar/search.py @@ -1463,10 +1463,10 @@ def NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, Publisher, IssueDa links = entry['link'] searchresult = searcher(nzbprov, nzbname, mylar.COMICINFO, links, IssueID, ComicID, tmpprov, newznab=newznab_host, torznab=torznab_host, rss=RSS) - if searchresult == 'downloadchk-fail' or searchresult == 'double-pp': + if any([searchresult == 'downloadchk-fail', searchresult == 'double-pp']): foundc['status'] = False continue - elif searchresult == 'torrent-fail' or searchresult == 'nzbget-fail' or searchresult == 'sab-fail' or searchresult == 'blackhole-fail': + elif any([searchresult == 'torrent-fail', searchresult == 'nzbget-fail', searchresult == 'sab-fail', searchresult == 'blackhole-fail', searchresult == 'ddl-fail']): foundc['status'] = False return foundc @@ -1498,9 +1498,12 @@ def NZB_SEARCH(ComicName, IssueNumber, ComicYear, SeriesYear, Publisher, IssueDa if 'Public Torrents' in tmpprov and any([nzbprov == 'WWT', nzbprov == 'DEM']): tmpprov = re.sub('Public Torrents', nzbprov, tmpprov) foundcomic.append("yes") - - if mylar.COMICINFO[0]['pack']: - issinfo = mylar.COMICINFO[0]['pack_issuelist'] + logger.info('mylar.COMICINFO: %s' % mylar.COMICINFO) + if mylar.COMICINFO[0]['pack'] is True: + try: + issinfo = mylar.COMICINFO[0]['pack_issuelist'] + except: + issinfo = mylar.COMICINFO['pack_issuelist'] if issinfo is not None: #we need to get EVERY issue ID within the pack and update the log to reflect that they're being downloaded via a pack. logger.fdebug("Found matching comic within pack...preparing to send to Updater with IssueIDs: " + str(issueid_info) + " and nzbname of " + str(nzbname)) @@ -2307,7 +2310,11 @@ def searcher(nzbprov, nzbname, comicinfo, link, IssueID, ComicID, tmpprov, direc 'issueid': IssueID, 'failed': False, 'comicid': ComicID, - 'apicall': True}) + 'apicall': True, + 'ddl': True}) + else: + logger.info('Failed to retrieve %s from the DDL site.' %s (nzbname)) + return "ddl-fail" sent_to = "is downloading it directly via DDL"