mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-07-31 03:50:06 -07:00
Multiple changes made to allow configuration to be entered via NZBGet webui. Multiple scripts can be defined and called for each category.
185 lines
6.4 KiB
Python
Executable file
185 lines
6.4 KiB
Python
Executable file
#!/usr/bin/env python
|
|
#
|
|
##############################################################################
|
|
### NZBGET POST-PROCESSING SCRIPT ###
|
|
|
|
# Post-Process to Gamez.
|
|
#
|
|
# This script sends the download to your automated media management servers.
|
|
#
|
|
# NOTE: This script requires Python to be installed on your system.
|
|
|
|
##############################################################################
|
|
### OPTIONS ###
|
|
|
|
## Gamez
|
|
|
|
# Gamez script category.
|
|
#
|
|
# category that gets called for post-processing with Gamez.
|
|
#gzCategory=games
|
|
|
|
# Gamez api key.
|
|
#gzapikey=
|
|
|
|
# Gamez host.
|
|
#gzhost=localhost
|
|
|
|
# Gamez port.
|
|
#gzport=8085
|
|
|
|
# Gamez username.
|
|
#gzusername=
|
|
|
|
# Gamez password.
|
|
#gzpassword=
|
|
|
|
# Gamez uses ssl.
|
|
#
|
|
# Set to 1 if using ssl, else set to 0.
|
|
#gzssl=0
|
|
|
|
# Gamez web_root
|
|
#
|
|
# set this if using a reverse proxy.
|
|
#gzweb_root=
|
|
|
|
## WakeOnLan
|
|
|
|
# use WOL
|
|
#
|
|
# set to 1 to send WOL broadcast to the mac and test the server (e.g. xbmc) on the host and port specified.
|
|
#wolwake=0
|
|
|
|
# WOL MAC
|
|
#
|
|
# enter the mac address of the system to be woken.
|
|
#wolmac=00:01:2e:2D:64:e1
|
|
|
|
# Set the Host and Port of a server to verify system has woken.
|
|
#wolhost=192.168.1.37
|
|
#wolport=80
|
|
|
|
### NZBGET POST-PROCESSING SCRIPT ###
|
|
##############################################################################
|
|
|
|
import os
|
|
import sys
|
|
import logging
|
|
|
|
import autoProcess.migratecfg as migratecfg
|
|
import autoProcess.autoProcessGames as autoProcessGames
|
|
from autoProcess.nzbToMediaEnv import *
|
|
from autoProcess.nzbToMediaUtil import *
|
|
|
|
#check to migrate old cfg before trying to load.
|
|
if os.path.isfile(os.path.join(os.path.dirname(sys.argv[0]), "autoProcessMedia.cfg.sample")):
|
|
migratecfg.migrate()
|
|
# check to write settings from nzbGet UI to autoProcessMedia.cfg.
|
|
if os.environ.has_key('NZBOP_SCRIPTDIR'):
|
|
migratecfg.addnzbget()
|
|
|
|
nzbtomedia_configure_logging(os.path.dirname(sys.argv[0]))
|
|
Logger = logging.getLogger(__name__)
|
|
|
|
Logger.info("====================") # Seperate old from new log
|
|
Logger.info("nzbToGamez %s", VERSION)
|
|
|
|
WakeUp()
|
|
|
|
# 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("MAIN: Script triggered from NZBGet (11.0 or later).")
|
|
|
|
# NZBGet argv: all passed as environment variables.
|
|
# Exit codes used by NZBGet
|
|
POSTPROCESS_PARCHECK=92
|
|
POSTPROCESS_SUCCESS=93
|
|
POSTPROCESS_ERROR=94
|
|
POSTPROCESS_NONE=95
|
|
|
|
# Check nzbget.conf options
|
|
status = 0
|
|
|
|
if os.environ['NZBOP_UNPACK'] != "yes":
|
|
Logger.error("Please enable option \"Unpack\" in nzbget configuration file, exiting")
|
|
sys.exit(POSTPROCESS_ERROR)
|
|
|
|
# Check par status
|
|
if os.environ['NZBPP_PARSTATUS'] == 3:
|
|
Logger.warning("Par-check successful, but Par-repair disabled, exiting")
|
|
sys.exit(POSTPROCESS_NONE)
|
|
|
|
if os.environ['NZBPP_PARSTATUS'] == 1:
|
|
Logger.warning("Par-check 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'] != 2:
|
|
# Unpack is disabled or was skipped due to nzb-file properties or due to errors during par-check
|
|
|
|
for dirpath, dirnames, filenames in os.walk(os.environ['NZBPP_DIRECTORY']):
|
|
for file in filenames:
|
|
fileExtension = os.path.splitext(file)[1]
|
|
|
|
if fileExtension in ['.rar', '.7z'] or os.path.splitext(fileExtension)[1] in ['.rar', '.7z']:
|
|
Logger.warning("Post-Process: Archive files exist but unpack skipped, exiting")
|
|
sys.exit(POSTPROCESS_NONE)
|
|
|
|
if fileExtension in ['.par2']:
|
|
Logger.warning("Post-Process: Unpack skipped and par-check skipped (although par2-files exist), exiting")
|
|
sys.exit(POSTPROCESS_NONE)
|
|
|
|
if os.path.isfile(os.path.join(os.environ['NZBPP_DIRECTORY'], "_brokenlog.txt")):
|
|
Logger.warning("Post-Process: _brokenlog.txt exists, download is probably damaged, exiting")
|
|
sys.exit(POSTPROCESS_NONE)
|
|
|
|
Logger.info("Neither archive- nor par2-files found, _brokenlog.txt doesn't exist, considering download successful")
|
|
|
|
# Check if destination directory exists (important for reprocessing of history items)
|
|
if not os.path.isdir(os.environ['NZBPP_DIRECTORY']):
|
|
Logger.error("Post-Process: Nothing to post-process: destination directory %s doesn't exist", os.environ['NZBPP_DIRECTORY'])
|
|
status = 1
|
|
|
|
# All checks done, now launching the script.
|
|
Logger.info("Script triggered from NZBGet, starting autoProcessGames...")
|
|
result = autoProcessGames.process(os.environ['NZBPP_DIRECTORY'], os.environ['NZBPP_NZBNAME'], status)
|
|
# SABnzbd
|
|
elif len(sys.argv) == 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
|
|
Logger.info("Script triggered from SABnzbd, starting autoProcessGames...")
|
|
result = autoProcessGames.process(sys.argv[1], sys.argv[2], sys.argv[7])
|
|
# NZBGet
|
|
elif len(sys.argv) == NZBGET_NO_OF_ARGUMENTS:
|
|
# NZBGet argv:
|
|
# 1 The final directory of the job (full path)
|
|
# 2 The original name of the NZB file
|
|
# 3 The status of the download: 0 == successful
|
|
# 4 The category of the download:
|
|
# 5 The download_id
|
|
Logger.info("Script triggered from NZBGet, starting autoProcessGames...")
|
|
result = autoProcessGames.process(sys.argv[1], sys.argv[2], sys.argv[3])
|
|
else:
|
|
Logger.warn("Invalid number of arguments received from client. Exiting")
|
|
sys.exit(1)
|
|
|
|
if result == 0:
|
|
Logger.info("MAIN: The autoProcessGames script completed successfully.")
|
|
if os.environ.has_key('NZBOP_SCRIPTDIR'): # return code for nzbget v11
|
|
sys.exit(POSTPROCESS_SUCCESS)
|
|
else:
|
|
Logger.info("MAIN: A problem was reported in the autoProcessGames script.")
|
|
if os.environ.has_key('NZBOP_SCRIPTDIR'): # return code for nzbget v11
|
|
sys.exit(POSTPROCESS_ERROR)
|