import os import sys import core from core import logger from core.processor import nzb def parse_download_id(): # Check for download_id to pass to CouchPotato download_id = '' if 'NZBPR_COUCHPOTATO' in os.environ: download_id = os.environ['NZBPR_COUCHPOTATO'] elif 'NZBPR_DRONE' in os.environ: download_id = os.environ['NZBPR_DRONE'] elif 'NZBPR_SONARR' in os.environ: download_id = os.environ['NZBPR_SONARR'] elif 'NZBPR_RADARR' in os.environ: download_id = os.environ['NZBPR_RADARR'] elif 'NZBPR_LIDARR' in os.environ: download_id = os.environ['NZBPR_LIDARR'] return download_id def parse_failure_link(): failure_link = None if 'NZBPR__DNZB_FAILURE' in os.environ: failure_link = os.environ['NZBPR__DNZB_FAILURE'] return failure_link def process(): # Check if the script is called from nzbget 11.0 or later if os.environ['NZBOP_VERSION'][0:5] < '11.0': logger.error( 'NZBGet Version {0} is not supported. Please update NZBGet.'.format( os.environ['NZBOP_VERSION'])) sys.exit(core.NZBGET_POSTPROCESS_ERROR) logger.info('Script triggered from NZBGet Version {0}.'.format( os.environ['NZBOP_VERSION'])) status = 0 # Check if the script is called from nzbget 13.0 or later if 'NZBPP_TOTALSTATUS' in os.environ: if not os.environ['NZBPP_TOTALSTATUS'] == 'SUCCESS': logger.info('Download failed with status {0}.'.format( os.environ['NZBPP_STATUS'])) status = 1 else: # Check par status if os.environ['NZBPP_PARSTATUS'] == '1' or os.environ[ 'NZBPP_PARSTATUS'] == '4': logger.warning('Par-repair failed, setting status \'failed\'') status = 1 # Check unpack status if os.environ['NZBPP_UNPACKSTATUS'] == '1': logger.warning('Unpack failed, setting status \'failed\'') status = 1 if os.environ['NZBPP_UNPACKSTATUS'] == '0' and os.environ[ 'NZBPP_PARSTATUS'] == '0': # Unpack was skipped due to nzb-file properties or due to errors during par-check if os.environ['NZBPP_HEALTH'] < 1000: logger.warning( 'Download health is compromised and Par-check/repair disabled or no .par2 files found. Setting status \'failed\'') logger.info( 'Please check your Par-check/repair settings for future downloads.') status = 1 else: logger.info( 'Par-check/repair disabled or no .par2 files found, and Unpack not required. Health is ok so handle as though download successful') logger.info( 'Please check your Par-check/repair settings for future downloads.') download_id = parse_download_id() failure_link = parse_failure_link() # All checks done, now launching the script. client_agent = 'nzbget' return nzb.process( os.environ['NZBPP_DIRECTORY'], input_name=os.environ['NZBPP_NZBNAME'], status=status, client_agent=client_agent, download_id=download_id, input_category=os.environ['NZBPP_CATEGORY'], failure_link=failure_link, )