Ejemplo 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)
Ejemplo n.º 2
0
#! /usr/bin/env python2
import os
import datetime
import re
import nzbtomedia
from nzbtomedia.nzbToMediaAutoFork import autoFork
from nzbtomedia import nzbToMediaDB
from nzbtomedia.transcoder import transcoder
from nzbtomedia.nzbToMediaUtil import get_downloadInfo, server_responding

# Initialize the config
nzbtomedia.initialize()

if transcoder.isVideoGood(nzbtomedia.TEST_FILE, 0):
    print "FFPROBE Works"
else:
    print "FFPROBE FAILED"

test = nzbtomedia.CFG['SickBeard','NzbDrone']['tv'].isenabled()
print test
section = nzbtomedia.CFG.findsection('tv').isenabled()
print section
print len(section)
fork, fork_params = autoFork('SickBeard', 'tv')

if server_responding("http://127.0.0.1:5050"):
    print "CouchPotato Running"
if server_responding("http://127.0.0.1:7073"):
    print "SickBeard Running"
if server_responding("http://127.0.0.1:8181"):
    print "HeadPhones Running"
Ejemplo n.º 3
0
#! /usr/bin/env python2
import os
import sys
import datetime
import re
import nzbtomedia
from nzbtomedia.nzbToMediaAutoFork import autoFork
from nzbtomedia import nzbToMediaDB
from nzbtomedia.transcoder import transcoder
from nzbtomedia.nzbToMediaUtil import get_downloadInfo, server_responding

# Initialize the config
nzbtomedia.initialize()

#label = nzbtomedia.TORRENT_CLASS.core.get_torrent_status("f33a9c4b15cbd9170722d700069af86746817ade", ["label"]).get()['label']
#print label

if transcoder.isVideoGood(nzbtomedia.TEST_FILE, 0):
    print "FFPROBE Works"
else:
    print "FFPROBE FAILED"

test = nzbtomedia.CFG['SickBeard', 'NzbDrone']['tv'].isenabled()
print test
section = nzbtomedia.CFG.findsection('tv').isenabled()
print section
print len(section)
fork, fork_params = autoFork('SickBeard', 'tv')

if server_responding("http://127.0.0.1:5050"):
    print "CouchPotato Running"
Ejemplo n.º 4
0
def main(args):
    # Initialize the config
    nzbtomedia.initialize()

    # clientAgent for Torrents
    clientAgent = nzbtomedia.TORRENT_CLIENTAGENT

    logger.info("#########################################################")
    logger.info("## ..::[%s]::.. ##" % os.path.basename(__file__))
    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 = nzbtomedia.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 Post-Processing
        logger.warning(
            "Invalid number of arguments received from client, Switching to manual run mode ..."
        )

        for section, subsections in nzbtomedia.SECTIONS.items():
            for subsection in subsections:
                for dirName in nzbtomedia.getDirs(section, subsection):
                    logger.info("Starting manual run for %s:%s - Folder:%s" %
                                (section, subsection, dirName))

                    logger.info(
                        "Checking database for download info for %s ..." %
                        (os.path.basename(dirName)))
                    nzbtomedia.DOWNLOADINFO = nzbtomedia.get_downloadInfo(
                        os.path.basename(dirName), 0)
                    if nzbtomedia.DOWNLOADINFO:
                        logger.info(
                            "Found download info for %s, setting variables now ..."
                            % (os.path.basename(dirName)))
                    else:
                        logger.info(
                            'Unable to locate download info for %s, continuing to try and process this release ...'
                            % (os.path.basename(dirName)))

                    try:
                        clientAgent = str(
                            nzbtomedia.DOWNLOADINFO[0]['client_agent'])
                    except:
                        clientAgent = 'manual'
                    try:
                        inputHash = str(
                            nzbtomedia.DOWNLOADINFO[0]['input_hash'])
                    except:
                        inputHash = None
                    try:
                        inputID = str(nzbtomedia.DOWNLOADINFO[0]['input_id'])
                    except:
                        inputID = None

                    if clientAgent.lower(
                    ) not in nzbtomedia.TORRENT_CLIENTS and clientAgent != 'manual':
                        continue

                    results = processTorrent(dirName,
                                             os.path.basename(dirName),
                                             subsection, inputHash, inputID,
                                             clientAgent)
                    if results != 0:
                        logger.error(
                            "A problem was reported when trying to perform a manual run for %s:%s."
                            % (section, subsection))
                        result = results

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

    return result
Ejemplo n.º 5
0
def main(args):
    # Initialize the config
    nzbtomedia.initialize()

    # clientAgent for Torrents
    clientAgent = nzbtomedia.TORRENT_CLIENTAGENT

    logger.info("#########################################################")
    logger.info("## ..::[%s]::.. ##" % os.path.basename(__file__))
    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 = nzbtomedia.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 Post-Processing
        logger.warning("Invalid number of arguments received from client, Switching to manual run mode ...")

        for section, subsections in nzbtomedia.SECTIONS.items():
            for subsection in subsections:
                for dirName in nzbtomedia.getDirs(section, subsection, link='hard'):
                    logger.info("Starting manual run for %s:%s - Folder:%s" % (section, subsection, dirName))

                    logger.info("Checking database for download info for %s ..." % (os.path.basename(dirName)))
                    nzbtomedia.DOWNLOADINFO = nzbtomedia.get_downloadInfo(os.path.basename(dirName), 0)
                    if nzbtomedia.DOWNLOADINFO:
                        logger.info(
                            "Found download info for %s, setting variables now ..." % (os.path.basename(dirName)))
                    else:
                        logger.info(
                            'Unable to locate download info for %s, continuing to try and process this release ...' % (
                                os.path.basename(dirName))
                        )

                    try:
                        clientAgent = str(nzbtomedia.DOWNLOADINFO[0]['client_agent'])
                    except:
                        clientAgent = 'manual'
                    try:
                        inputHash = str(nzbtomedia.DOWNLOADINFO[0]['input_hash'])
                    except:
                        inputHash = None
                    try:
                        inputID = str(nzbtomedia.DOWNLOADINFO[0]['input_id'])
                    except:
                        inputID = None

                    if clientAgent.lower() not in nzbtomedia.TORRENT_CLIENTS and clientAgent != 'manual':
                        continue

                    try:
                        dirName = dirName.encode(nzbtomedia.SYS_ENCODING)
                    except: pass
                    inputName = os.path.basename(dirName)
                    try:
                        inputName = inputName.encode(nzbtomedia.SYS_ENCODING)
                    except: pass

                    results = processTorrent(dirName, inputName, subsection, inputHash, inputID,
                                             clientAgent)
                    if results[0] != 0:
                        logger.error("A problem was reported when trying to perform a manual run for %s:%s." % (
                            section, subsection))
                        result = results

    if result[0] == 0:
        logger.info("The %s script completed successfully." % (args[0]))
    else:
        logger.error("A problem was reported in the %s script." % (args[0]))
    del nzbtomedia.MYAPP
    return result[0]
Ejemplo n.º 6
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)
Ejemplo n.º 7
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)
Ejemplo n.º 8
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
    if os.environ.has_key('NZBOP_SCRIPTDIR'):
        # 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 %s is not supported. Please update NZBGet." %
                (str(os.environ['NZBOP_VERSION'])))
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_ERROR)

        logger.info("Script triggered from NZBGet Version %s." %
                    (str(os.environ['NZBOP_VERSION'])))

        # Check if the script is called from nzbget 13.0 or later
        if os.environ.has_key('NZBPP_TOTALSTATUS'):
            if not os.environ['NZBPP_TOTALSTATUS'] == 'SUCCESS':
                logger.info("Download failed with status %s." %
                            (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."
                    )

        # 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_NZBNAME'],
                         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 Post-Processing
        logger.warning(
            "Invalid number of arguments received from client, Switching to manual run mode ..."
        )

        for section, subsections in nzbtomedia.SECTIONS.items():
            for subsection in subsections:
                for dirName in getDirs(section, subsection):
                    logger.info("Starting manual run for %s:%s - Folder:%s" %
                                (section, subsection, dirName))

                    logger.info(
                        "Checking database for download info for %s ..." %
                        (os.path.basename(dirName)))
                    nzbtomedia.DOWNLOADINFO = get_downloadInfo(
                        os.path.basename(dirName), 0)
                    if nzbtomedia.DOWNLOADINFO:
                        logger.info(
                            "Found download info for %s, setting variables now ..."
                            % (os.path.basename(dirName)))
                    else:
                        logger.info(
                            'Unable to locate download info for %s, continuing to try and process this release ...'
                            % (os.path.basename(dirName)))

                    try:
                        clientAgent = str(
                            nzbtomedia.DOWNLOADINFO[0]['client_agent'])
                    except:
                        clientAgent = 'manual'
                    try:
                        download_id = str(
                            nzbtomedia.DOWNLOADINFO[0]['input_id'])
                    except:
                        download_id = None

                    if clientAgent.lower(
                    ) not in nzbtomedia.NZB_CLIENTS and clientAgent != 'manual':
                        continue

                    results = process(dirName,
                                      os.path.basename(dirName),
                                      0,
                                      clientAgent=clientAgent,
                                      download_id=download_id,
                                      inputCategory=subsection)
                    if results != 0:
                        logger.error(
                            "A problem was reported when trying to perform a manual run for %s:%s."
                            % (section, subsection))
                        result = results

    if result == 0:
        logger.info("The %s script completed successfully." % args[0])
        if os.environ.has_key('NZBOP_SCRIPTDIR'):  # return code for nzbget v11
            return (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
            return (nzbtomedia.NZBGET_POSTPROCESS_ERROR)

    return (result)
Ejemplo n.º 9
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
    if os.environ.has_key('NZBOP_SCRIPTDIR'):
        # 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 %s is not supported. Please update NZBGet." %(str(os.environ['NZBOP_VERSION'])))
            sys.exit(nzbtomedia.NZBGET_POSTPROCESS_ERROR)

        logger.info("Script triggered from NZBGet Version %s." %(str(os.environ['NZBOP_VERSION'])))

        # Check if the script is called from nzbget 13.0 or later
        if os.environ.has_key('NZBPP_TOTALSTATUS'):
            if not os.environ['NZBPP_TOTALSTATUS'] == 'SUCCESS':
                logger.info("Download failed with status %s." %(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.")

        # 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_NZBNAME'], 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 Post-Processing
        logger.warning("Invalid number of arguments received from client, Switching to manual run mode ...")

        for section, subsections in nzbtomedia.SECTIONS.items():
            for subsection in subsections:
                for dirName in getDirs(section, subsection):
                    logger.info("Starting manual run for %s:%s - Folder:%s" % (section, subsection, dirName))

                    logger.info("Checking database for download info for %s ..." % (os.path.basename(dirName)))
                    nzbtomedia.DOWNLOADINFO = get_downloadInfo(os.path.basename(dirName), 0)
                    if nzbtomedia.DOWNLOADINFO:
                        logger.info(
                            "Found download info for %s, setting variables now ..." % (os.path.basename(dirName)))
                    else:
                        logger.info(
                            'Unable to locate download info for %s, continuing to try and process this release ...' % (
                                os.path.basename(dirName))
                        )

                    try:
                        clientAgent = str(nzbtomedia.DOWNLOADINFO[0]['client_agent'])
                    except:
                        clientAgent = 'manual'
                    try:
                        download_id = str(nzbtomedia.DOWNLOADINFO[0]['input_id'])
                    except:
                        download_id = None

                    if clientAgent.lower() not in nzbtomedia.NZB_CLIENTS and clientAgent != 'manual':
                        continue

                    results = process(dirName, os.path.basename(dirName), 0, clientAgent=clientAgent,
                                      download_id=download_id, inputCategory=subsection)
                    if results != 0:
                        logger.error("A problem was reported when trying to perform a manual run for %s:%s." % (
                        section, subsection))
                        result = results

    if result == 0:
        logger.info("The %s script completed successfully." % args[0])
        if os.environ.has_key('NZBOP_SCRIPTDIR'):  # return code for nzbget v11
            del nzbtomedia.MYAPP
            return (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
            del nzbtomedia.MYAPP
            return (nzbtomedia.NZBGET_POSTPROCESS_ERROR)
    del nzbtomedia.MYAPP
    return (result)