diff --git a/autoProcessMedia.cfg.spec b/autoProcessMedia.cfg.spec index 82f1f864..745268ad 100644 --- a/autoProcessMedia.cfg.spec +++ b/autoProcessMedia.cfg.spec @@ -158,6 +158,8 @@ apikey = host = localhost port = 8085 + ###### + library = Set to path where you want the processed games to be moved to. ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ###### ssl = 0 web_root = diff --git a/nzbToGamez.py b/nzbToGamez.py index 066fe5a9..b476ac01 100755 --- a/nzbToGamez.py +++ b/nzbToGamez.py @@ -41,6 +41,11 @@ # Set to 1 if using ssl, else set to 0. #gzssl=0 +# Gamez library +# +# move downloaded games here. +#gzlibrary + # Gamez web_root # # set this if using a reverse proxy. diff --git a/nzbToMedia.py b/nzbToMedia.py index 44ec7c25..ee68fdad 100755 --- a/nzbToMedia.py +++ b/nzbToMedia.py @@ -221,6 +221,11 @@ # Set to 1 if using ssl, else set to 0. #gzssl=0 +# Gamez library +# +# move downloaded games here. +#gzlibrary + # Gamez web_root # # set this if using a reverse proxy. diff --git a/nzbtomedia/autoProcess/autoProcessComics.py b/nzbtomedia/autoProcess/autoProcessComics.py index 2820bfb3..0837e2cb 100644 --- a/nzbtomedia/autoProcess/autoProcessComics.py +++ b/nzbtomedia/autoProcess/autoProcessComics.py @@ -2,26 +2,54 @@ import os import time import nzbtomedia import requests +import time from nzbtomedia.nzbToMediaUtil import convert_to_ascii, replaceExtensions from nzbtomedia import logger class autoProcessComics: + def get_status(self, url, apikey, dirName): + logger.debug("Attempting to get current status for release:%s" % (os.path.basename(dirName)),section) + + params = {} + params['apikey'] = apikey + params['cmd'] = "getHistory" + + logger.debug("Opening URL: %s with PARAMS: %s" % (url, params)) + + try: + r = requests.get(url, params=params, verify=False) + except Exception, e: + logger.error("Unable to open URL") + return None + + try: + result = r.json() + for issue in result: + if os.path.basename(dirName) == issue['FolderName']: + return issue["Status"].lower() + except: + return None + def processEpisode(self, section, dirName, inputName=None, status=0, clientAgent='manual', inputCategory=None): + if status != 0: + logger.warning("FAILED DOWNLOAD DETECTED, nothing to process.",section) + return 0 + host = nzbtomedia.CFG[section][inputCategory]["host"] port = nzbtomedia.CFG[section][inputCategory]["port"] - username = nzbtomedia.CFG[section][inputCategory]["username"] - password = nzbtomedia.CFG[section][inputCategory]["password"] - + apikey = nzbtomedia.CFG[section][inputCategory]["apikey"] + try: + wait_for = int(nzbtomedia.CFG[section][inputCategory]["wait_for"]) + except: + wait_for = 1 try: ssl = int(nzbtomedia.CFG[section][inputCategory]["ssl"]) except: ssl = 0 - try: web_root = nzbtomedia.CFG[section][inputCategory]["web_root"] except: web_root = "" - try: remote_path = nzbtomedia.CFG[section][inputCategory]["remote_path"] except: @@ -32,9 +60,12 @@ class autoProcessComics: replaceExtensions(dirName) params = {} - params['nzb_folder'] = dirName + params['apikey'] = apikey + params['cmd'] = "forceProcess" if remote_path: params['nzb_folder'] = os.path.join(remote_path, os.path.basename(dirName)) + else: + params['nzb_folder'] = dirName if inputName != None: params['nzb_name'] = inputName @@ -44,11 +75,17 @@ class autoProcessComics: else: protocol = "http://" - url = "%s%s:%s%s/post_process" % (protocol, host, port, web_root) + url = "%s%s:%s%s/api" % (protocol, host, port, web_root) + + release_status = self.get_status(url, apikey, dirName) + if not release_status: + logger.error("Could not find a status for %s, is it in the wanted list ?" % (inputName),section) + return 1 + logger.debug("Opening URL: %s" % (url), section) try: - r = requests.get(url, params=params, auth=(username, password), stream=True, verify=False) + r = requests.get(url, params=params, stream=True, verify=False) except requests.ConnectionError: logger.error("Unable to open URL", section) return 1 # failure @@ -60,4 +97,18 @@ class autoProcessComics: logger.error("Server returned status %s" % (str(r.status_code)), section) return 1 else: - return 0 + logger.postprocess("Post-Processing started for %s in folder %s ..." % (inputName, dirName),section) + + # we will now wait 1 minutes for this album to be processed before returning to TorrentToMedia and unpausing. + timeout = time.time() + 60 * wait_for + while (time.time() < timeout): # only wait 1 (default) minutes, then return. + current_status = self.get_status(url, apikey, dirName) + if current_status is not None and current_status != release_status: # Something has changed. Mylar must have processed this issue. + logger.postprocess("SUCCESS: This issue is now marked as status [%s]" % (current_status),section) + return 0 + + time.sleep(10 * wait_for) + + # The status hasn't changed. we have waited 2 minutes which is more than enough. uTorrent can resume seeding now. + logger.warning("The issue does not appear to have changed status after %s minutes. Please check your Logs" % (wait_for),section) + return 1 # failure \ No newline at end of file diff --git a/nzbtomedia/autoProcess/autoProcessGames.py b/nzbtomedia/autoProcess/autoProcessGames.py index d72b26dc..503689bc 100644 --- a/nzbtomedia/autoProcess/autoProcessGames.py +++ b/nzbtomedia/autoProcess/autoProcessGames.py @@ -1,5 +1,6 @@ import nzbtomedia import requests +import shutil from nzbtomedia.nzbToMediaUtil import convert_to_ascii from nzbtomedia import logger @@ -10,12 +11,14 @@ class autoProcessGames: host = nzbtomedia.CFG[section][inputCategory]["host"] port = nzbtomedia.CFG[section][inputCategory]["port"] apikey = nzbtomedia.CFG[section][inputCategory]["apikey"] - + try: + library = nzbtomedia.CFG[section][inputCategory]["library"] + except: + library = None try: ssl = int(nzbtomedia.CFG[section][inputCategory]["ssl"]) except: ssl = 0 - try: web_root = nzbtomedia.CFG[section][inputCategory]["web_root"] except: @@ -54,6 +57,16 @@ class autoProcessGames: result = r.json() logger.postprocess("%s" % (result),section) + if library: + logger.postprocess("moving files to library: %s" % (library),section) + try: + shutil.move(dirName, os.path.join(library, inputName)) + except: + logger.error("Unable to move %s to %s" % (dirName, os.path.join(library, inputName)), section) + return 1 + else: + logger.error("No library specified to move files to. Please edit your configuration.", section) + return 1 if not r.status_code in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: logger.error("Server returned status %s" % (str(r.status_code)), section) diff --git a/nzbtomedia/autoProcess/autoProcessMusic.py b/nzbtomedia/autoProcess/autoProcessMusic.py index 585f2901..549fdb7f 100644 --- a/nzbtomedia/autoProcess/autoProcessMusic.py +++ b/nzbtomedia/autoProcess/autoProcessMusic.py @@ -109,5 +109,5 @@ class autoProcessMusic: time.sleep(10 * wait_for) # The status hasn't changed. we have waited 2 minutes which is more than enough. uTorrent can resule seeding now. - logger.warning("The music album does not appear to have changed status after %s minutes. Please check your Logs" % (wait_for)) + logger.warning("The music album does not appear to have changed status after %s minutes. Please check your Logs" % (wait_for),section) return 1 # failure diff --git a/nzbtomedia/autoProcess/autoProcessTV.py b/nzbtomedia/autoProcess/autoProcessTV.py index d975f39c..52c812fc 100644 --- a/nzbtomedia/autoProcess/autoProcessTV.py +++ b/nzbtomedia/autoProcess/autoProcessTV.py @@ -42,9 +42,12 @@ class autoProcessTV: host = nzbtomedia.CFG[section][inputCategory]["host"] port = nzbtomedia.CFG[section][inputCategory]["port"] - username = nzbtomedia.CFG[section][inputCategory]["username"] - password = nzbtomedia.CFG[section][inputCategory]["password"] - + try: + username = nzbtomedia.CFG[section][inputCategory]["username"] + password = nzbtomedia.CFG[section][inputCategory]["password"] + except: + username = "" + password = "" try: apikey = nzbtomedia.CFG[section][inputCategory]["apikey"] except: diff --git a/nzbtomedia/nzbToMediaConfig.py b/nzbtomedia/nzbToMediaConfig.py index 01d1cc35..2a37bca3 100644 --- a/nzbtomedia/nzbToMediaConfig.py +++ b/nzbtomedia/nzbToMediaConfig.py @@ -300,8 +300,8 @@ class ConfigObj(configobj.ConfigObj, Section): section = "Gamez" envCatKey = 'NZBPO_GZCATEGORY' - envKeys = ['ENABLED', 'APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT', 'WATCH_DIR'] - cfgKeys = ['enabled', 'apikey', 'host', 'port', 'ssl', 'web_root', 'watch_dir'] + envKeys = ['ENABLED', 'APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT', 'WATCH_DIR', 'LIBRARY'] + cfgKeys = ['enabled', 'apikey', 'host', 'port', 'ssl', 'web_root', 'watch_dir', 'library'] if os.environ.has_key(envCatKey): for index in range(len(envKeys)): key = 'NZBPO_GZ' + envKeys[index]