Esempio n. 1
0
def main(args):
    # Initialize the config
    nzbtomedia.initialize()

    # clientAgent for Torrents
    clientAgent = nzbtomedia.TORRENT_CLIENTAGENT

    logger.info("#########################################################")
    logger.info("## ..::[%s]::.. CLIENT:%s ## STARTING" % (args[0], clientAgent))
    logger.info("#########################################################")

    # debug command line options
    logger.debug("Options passed into TorrentToMedia: %s" % (args))

    # Post-Processing Result
    result = 0


    try:
        inputDirectory, inputName, inputCategory, inputHash, inputID = parse_args(clientAgent, args)
    except:
        logger.error("There was a problem loading variables")
        return -1

    if inputDirectory and inputName and inputHash and inputID:
        result = processTorrent(inputDirectory, inputName, inputCategory, inputHash, inputID, clientAgent)
    else:
        # Perform Manual Run
        logger.warning("Invalid number of arguments received from client, Switching to manual run mode ...")

        # Loop and auto-process
        clientAgent = 'manual'
        for section, subsection in nzbtomedia.SUBSECTIONS.items():
            for category in subsection:
                if nzbtomedia.CFG[section][category].isenabled():
                    dirNames = get_dirnames(section, category)
                    for dirName in dirNames:
                        logger.info("Running %s:%s as a manual run for folder %s ..." % (section, category, dirName))
                        results = processTorrent(dirName, os.path.basename(dirName), category, inputHash, inputID, clientAgent)
                        if results != 0:
                            result = results
                            logger.error("A problem was reported when trying to manually run %s:%s." % (section, category))
                else:
                    logger.warning("%s:%s is DISABLED, you can enable this in autoProcessMedia.cfg ..." % (section, category))

    if result == 0:
        logger.info("The %s script completed successfully." % (args[0]))
    else:
        logger.error("A problem was reported in the %s script." % (args[0]))

    sys.exit(result)
Esempio n. 2
0
def main(args, section=None):
    # Initialize the config
    nzbtomedia.initialize(section)

    # clientAgent for NZBs
    clientAgent = nzbtomedia.NZB_CLIENTAGENT

    logger.info("#########################################################")
    logger.info("## ..::[%s]::.. ##" % os.path.basename(__file__))
    logger.info("#########################################################")

    # debug command line options
    logger.debug("Options passed into nzbToMedia: %s" % args)

    # Post-Processing Result
    result = 0
    status = 0

    # NZBGet V11+
    # Check if the script is called from nzbget 11.0 or later
    if os.environ.has_key('NZBOP_SCRIPTDIR'
                          ) and not os.environ['NZBOP_VERSION'][0:5] < '11.0':
        logger.info("Script triggered from NZBGet (11.0 or later).")

        if os.environ['NZBOP_UNPACK'] != 'yes':
            logger.error(
                "Please enable option \"Unpack\" in nzbget configuration file, exiting"
            )
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_ERROR)

        # Check par status
        if os.environ['NZBPP_PARSTATUS'] == '3':
            logger.warning(
                "Par-check successful, but Par-repair disabled, exiting")
            logger.info(
                "Please check your Par-repair settings for future downloads.")
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_NONE)

        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."
                )

        # Check if destination directory exists (important for reprocessing of history items)
        if not os.path.isdir(os.environ['NZBPP_DIRECTORY']):
            logger.error(
                "Nothing to post-process: destination directory %s doesn't exist. Setting status failed"
                % (os.environ['NZBPP_DIRECTORY']))
            status = 1

        # Check for download_id to pass to CouchPotato
        download_id = ""
        if os.environ.has_key('NZBPR_COUCHPOTATO'):
            download_id = os.environ['NZBPR_COUCHPOTATO']

        # All checks done, now launching the script.
        clientAgent = 'nzbget'
        result = process(os.environ['NZBPP_DIRECTORY'],
                         inputName=os.environ['NZBPP_NZBFILENAME'],
                         status=status,
                         clientAgent=clientAgent,
                         download_id=download_id,
                         inputCategory=os.environ['NZBPP_CATEGORY'])
    # SABnzbd Pre 0.7.17
    elif len(args) == nzbtomedia.SABNZB_NO_OF_ARGUMENTS:
        # SABnzbd argv:
        # 1 The final directory of the job (full path)
        # 2 The original name of the NZB file
        # 3 Clean version of the job name (no path info and ".nzb" removed)
        # 4 Indexer's report number (if supported)
        # 5 User-defined category
        # 6 Group that the NZB was posted in e.g. alt.binaries.x
        # 7 Status of post processing. 0 = OK, 1=failed verification, 2=failed unpack, 3=1+2
        clientAgent = 'sabnzbd'
        logger.info("Script triggered from SABnzbd")
        result = process(args[1],
                         inputName=args[2],
                         status=args[7],
                         inputCategory=args[5],
                         clientAgent=clientAgent,
                         download_id='')
    # SABnzbd 0.7.17+
    elif len(args) >= nzbtomedia.SABNZB_0717_NO_OF_ARGUMENTS:
        # SABnzbd argv:
        # 1 The final directory of the job (full path)
        # 2 The original name of the NZB file
        # 3 Clean version of the job name (no path info and ".nzb" removed)
        # 4 Indexer's report number (if supported)
        # 5 User-defined category
        # 6 Group that the NZB was posted in e.g. alt.binaries.x
        # 7 Status of post processing. 0 = OK, 1=failed verification, 2=failed unpack, 3=1+2
        # 8 Failure URL
        clientAgent = 'sabnzbd'
        logger.info("Script triggered from SABnzbd 0.7.17+")
        result = process(args[1],
                         inputName=args[2],
                         status=args[7],
                         inputCategory=args[5],
                         clientAgent=clientAgent,
                         download_id='')
    else:
        # Perform Manual Run
        logger.warning(
            "Invalid number of arguments received from client, Switching to manual run mode ..."
        )

        # Loop and auto-process
        clientAgent = 'manual'
        for section, subsection in nzbtomedia.SUBSECTIONS.items():
            for category in subsection:
                if nzbtomedia.CFG[section][category].isenabled():
                    dirNames = get_dirnames(section, category)
                    for dirName in dirNames:
                        logger.info(
                            "Starting manual run for %s:%s - Folder:%s" %
                            (section, category, dirName))
                        results = process(dirName,
                                          os.path.basename(dirName),
                                          0,
                                          clientAgent=clientAgent,
                                          inputCategory=category)
                        if results != 0:
                            logger.error(
                                "A problem was reported when trying to perform a manual run for %s:%s."
                                % (section, category))
                            result = results
                else:
                    logger.debug("nzbToMedia %s:%s is DISABLED" %
                                 (section, category))

    if result == 0:
        logger.info("The %s script completed successfully." % args[0])
        if os.environ.has_key('NZBOP_SCRIPTDIR'):  # return code for nzbget v11
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_SUCCESS)
    else:
        logger.error("A problem was reported in the %s script." % args[0])
        if os.environ.has_key('NZBOP_SCRIPTDIR'):  # return code for nzbget v11
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_ERROR)

    sys.exit(result)
Esempio n. 3
0
def main(args, section=None):
    # Initialize the config
    nzbtomedia.initialize(section)

    # clientAgent for NZBs
    clientAgent = nzbtomedia.NZB_CLIENTAGENT

    logger.info("#########################################################")
    logger.info("## ..::[%s]::.. ##" % os.path.basename(__file__))
    logger.info("#########################################################")

    # debug command line options
    logger.debug("Options passed into nzbToMedia: %s" % args)

    # Post-Processing Result
    result = 0
    status = 0

    # NZBGet V11+
    # Check if the script is called from nzbget 11.0 or later
    if os.environ.has_key('NZBOP_SCRIPTDIR') and not os.environ['NZBOP_VERSION'][0:5] < '11.0':
        logger.info("Script triggered from NZBGet (11.0 or later).")

        if os.environ['NZBOP_UNPACK'] != 'yes':
            logger.error("Please enable option \"Unpack\" in nzbget configuration file, exiting")
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_ERROR)

        # Check par status
        if os.environ['NZBPP_PARSTATUS'] == '3':
            logger.warning("Par-check successful, but Par-repair disabled, exiting")
            logger.info("Please check your Par-repair settings for future downloads.")
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_NONE)

        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.")

        # Check if destination directory exists (important for reprocessing of history items)
        if not os.path.isdir(os.environ['NZBPP_DIRECTORY']):
            logger.error("Nothing to post-process: destination directory %s doesn't exist. Setting status failed" % (os.environ['NZBPP_DIRECTORY']))
            status = 1

        # Check for download_id to pass to CouchPotato
        download_id = ""
        if os.environ.has_key('NZBPR_COUCHPOTATO'):
            download_id = os.environ['NZBPR_COUCHPOTATO']

        # All checks done, now launching the script.
        clientAgent = 'nzbget'
        result = process(os.environ['NZBPP_DIRECTORY'], inputName=os.environ['NZBPP_NZBFILENAME'], status=status, clientAgent=clientAgent, download_id=download_id, inputCategory=os.environ['NZBPP_CATEGORY'])
    # SABnzbd Pre 0.7.17
    elif len(args) == nzbtomedia.SABNZB_NO_OF_ARGUMENTS:
        # SABnzbd argv:
        # 1 The final directory of the job (full path)
        # 2 The original name of the NZB file
        # 3 Clean version of the job name (no path info and ".nzb" removed)
        # 4 Indexer's report number (if supported)
        # 5 User-defined category
        # 6 Group that the NZB was posted in e.g. alt.binaries.x
        # 7 Status of post processing. 0 = OK, 1=failed verification, 2=failed unpack, 3=1+2
        clientAgent = 'sabnzbd'
        logger.info("Script triggered from SABnzbd")
        result = process(args[1], inputName=args[2], status=args[7], inputCategory=args[5], clientAgent=clientAgent, download_id='')
    # SABnzbd 0.7.17+
    elif len(args) >= nzbtomedia.SABNZB_0717_NO_OF_ARGUMENTS:
        # SABnzbd argv:
        # 1 The final directory of the job (full path)
        # 2 The original name of the NZB file
        # 3 Clean version of the job name (no path info and ".nzb" removed)
        # 4 Indexer's report number (if supported)
        # 5 User-defined category
        # 6 Group that the NZB was posted in e.g. alt.binaries.x
        # 7 Status of post processing. 0 = OK, 1=failed verification, 2=failed unpack, 3=1+2
        # 8 Failure URL
        clientAgent = 'sabnzbd'
        logger.info("Script triggered from SABnzbd 0.7.17+")
        result = process(args[1], inputName=args[2], status=args[7], inputCategory=args[5], clientAgent=clientAgent, download_id='')
    else:
        # Perform Manual Run
        logger.warning("Invalid number of arguments received from client, Switching to manual run mode ...")

        # Loop and auto-process
        clientAgent = 'manual'
        for section, subsection in nzbtomedia.SUBSECTIONS.items():
            for category in subsection:
                if nzbtomedia.CFG[section][category].isenabled():
                    dirNames = get_dirnames(section, category)
                    for dirName in dirNames:
                        logger.info("Starting manual run for %s:%s - Folder:%s" % (section, category, dirName))
                        results = process(dirName, os.path.basename(dirName), 0, clientAgent=clientAgent, inputCategory=category)
                        if results != 0:
                            logger.error("A problem was reported when trying to perform a manual run for %s:%s." % (section, category))
                            result = results
                else:
                    logger.debug("nzbToMedia %s:%s is DISABLED" % (section, category))

    if result == 0:
        logger.info("The %s script completed successfully." % args[0])
        if os.environ.has_key('NZBOP_SCRIPTDIR'): # return code for nzbget v11
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_SUCCESS)
    else:
        logger.error("A problem was reported in the %s script." % args[0])
        if os.environ.has_key('NZBOP_SCRIPTDIR'): # return code for nzbget v11
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_ERROR)

    sys.exit(result)