From 0ce4bb601deae81bdf015a4186af83e266a2a47b Mon Sep 17 00:00:00 2001 From: echel0n Date: Sat, 5 Apr 2014 21:28:12 -0700 Subject: [PATCH] Moved config migration code into our config class, makes more sense. Added more detailed log messages for get_dirnames function. --- TorrentToMedia.py | 3 +- nzbToCouchPotato.py | 5 +- nzbToGamez.py | 5 +- nzbToHeadPhones.py | 5 +- nzbToMedia.py | 5 +- nzbToMylar.py | 5 +- nzbToSickBeard.py | 5 +- nzbtomedia/migratecfg.py | 241 -------------------------------- nzbtomedia/nzbToMediaConfig.py | 242 ++++++++++++++++++++++++++++++++- nzbtomedia/nzbToMediaUtil.py | 23 ++-- 10 files changed, 269 insertions(+), 270 deletions(-) delete mode 100644 nzbtomedia/migratecfg.py diff --git a/TorrentToMedia.py b/TorrentToMedia.py index bc03ddf5..0165d3e7 100755 --- a/TorrentToMedia.py +++ b/TorrentToMedia.py @@ -17,7 +17,6 @@ from nzbtomedia.autoProcess.autoProcessMovie import autoProcessMovie from nzbtomedia.autoProcess.autoProcessMusic import autoProcessMusic from nzbtomedia.autoProcess.autoProcessTV import autoProcessTV from nzbtomedia.extractor import extractor -from nzbtomedia.migratecfg import migratecfg from nzbtomedia.nzbToMediaAutoFork import autoFork from nzbtomedia.nzbToMediaConfig import config from nzbtomedia.nzbToMediaUtil import category_search, safeName, is_sample, copy_link, WakeUp, parse_args, flatten, \ @@ -393,7 +392,7 @@ def external_script(outputDestination,torrentName,torrentLabel): if __name__ == "__main__": # run migrate to convert old cfg to new style cfg plus fix any cfg missing values/options. - if migratecfg().migrate(): + if config.migrate(): nzbtomedia_configure_logging(config.LOG_FILE) Logger = logging.getLogger(__name__) Logger.info("====================") # Seperate old from new log diff --git a/nzbToCouchPotato.py b/nzbToCouchPotato.py index 08818246..616f149e 100755 --- a/nzbToCouchPotato.py +++ b/nzbToCouchPotato.py @@ -129,15 +129,14 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib' import logging from nzbtomedia.autoProcess.autoProcessMovie import autoProcessMovie -from nzbtomedia.migratecfg import migratecfg from nzbtomedia.nzbToMediaConfig import config from nzbtomedia.nzbToMediaUtil import nzbtomedia_configure_logging, WakeUp, get_dirnames # run migrate to convert old cfg to new style cfg plus fix any cfg missing values/options. -if migratecfg().migrate(): +if config.migrate(): # check to write settings from nzbGet UI to autoProcessMedia.cfg. if os.environ.has_key('NZBOP_SCRIPTDIR'): - migratecfg().addnzbget() + config.addnzbget() nzbtomedia_configure_logging(config.LOG_FILE) Logger = logging.getLogger(__name__) diff --git a/nzbToGamez.py b/nzbToGamez.py index 7ecc6d82..38d4e1e8 100755 --- a/nzbToGamez.py +++ b/nzbToGamez.py @@ -64,15 +64,14 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib' ############################################################################## import logging from nzbtomedia.autoProcess.autoProcessGames import autoProcessGames -from nzbtomedia.migratecfg import migratecfg from nzbtomedia.nzbToMediaConfig import config from nzbtomedia.nzbToMediaUtil import WakeUp, nzbtomedia_configure_logging, get_dirnames # run migrate to convert old cfg to new style cfg plus fix any cfg missing values/options. -if migratecfg().migrate(): +if config.migrate(): # check to write settings from nzbGet UI to autoProcessMedia.cfg. if os.environ.has_key('NZBOP_SCRIPTDIR'): - migratecfg().addnzbget() + config.addnzbget() nzbtomedia_configure_logging(config.LOG_FILE) Logger = logging.getLogger(__name__) diff --git a/nzbToHeadPhones.py b/nzbToHeadPhones.py index 94708a5c..1e3b7234 100755 --- a/nzbToHeadPhones.py +++ b/nzbToHeadPhones.py @@ -77,15 +77,14 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib' # Exit codes used by NZBGet import logging from nzbtomedia.autoProcess.autoProcessMusic import autoProcessMusic -from nzbtomedia.migratecfg import migratecfg from nzbtomedia.nzbToMediaConfig import config from nzbtomedia.nzbToMediaUtil import get_dirnames, WakeUp, nzbtomedia_configure_logging # run migrate to convert old cfg to new style cfg plus fix any cfg missing values/options. -if migratecfg().migrate(): +if config.migrate(): # check to write settings from nzbGet UI to autoProcessMedia.cfg. if os.environ.has_key('NZBOP_SCRIPTDIR'): - migratecfg().addnzbget() + config.addnzbget() nzbtomedia_configure_logging(config.LOG_FILE) Logger = logging.getLogger(__name__) diff --git a/nzbToMedia.py b/nzbToMedia.py index ce4b6045..bcb918fb 100755 --- a/nzbToMedia.py +++ b/nzbToMedia.py @@ -282,7 +282,6 @@ from nzbtomedia.autoProcess.autoProcessGames import autoProcessGames from nzbtomedia.autoProcess.autoProcessMovie import autoProcessMovie from nzbtomedia.autoProcess.autoProcessMusic import autoProcessMusic from nzbtomedia.autoProcess.autoProcessTV import autoProcessTV -from nzbtomedia.migratecfg import migratecfg from nzbtomedia.nzbToMediaConfig import config from nzbtomedia.nzbToMediaUtil import nzbtomedia_configure_logging, WakeUp, get_dirnames @@ -345,10 +344,10 @@ def process(nzbDir, inputName=None, status=0, clientAgent='manual', download_id= ######################################################################################################################## # run migrate to convert old cfg to new style cfg plus fix any cfg missing values/options. -if migratecfg().migrate(): +if config.migrate(): # check to write settings from nzbGet UI to autoProcessMedia.cfg. if os.environ.has_key('NZBOP_SCRIPTDIR'): - migratecfg().addnzbget() + config.addnzbget() nzbtomedia_configure_logging(config.LOG_FILE) diff --git a/nzbToMylar.py b/nzbToMylar.py index ac48d837..d130d5b9 100755 --- a/nzbToMylar.py +++ b/nzbToMylar.py @@ -69,15 +69,14 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib' # Exit codes used by NZBGet import logging from nzbtomedia.autoProcess.autoProcessComics import autoProcessComics -from nzbtomedia.migratecfg import migratecfg from nzbtomedia.nzbToMediaConfig import config from nzbtomedia.nzbToMediaUtil import nzbtomedia_configure_logging, WakeUp, get_dirnames # run migrate to convert old cfg to new style cfg plus fix any cfg missing values/options. -if migratecfg().migrate(): +if config.migrate(): # check to write settings from nzbGet UI to autoProcessMedia.cfg. if os.environ.has_key('NZBOP_SCRIPTDIR'): - migratecfg().addnzbget() + config.addnzbget() nzbtomedia_configure_logging(config.LOG_FILE) Logger = logging.getLogger(__name__) diff --git a/nzbToSickBeard.py b/nzbToSickBeard.py index 584eea37..dff4cf24 100755 --- a/nzbToSickBeard.py +++ b/nzbToSickBeard.py @@ -131,15 +131,14 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'lib' ############################################################################## import logging from nzbtomedia.autoProcess.autoProcessTV import autoProcessTV -from nzbtomedia.migratecfg import migratecfg from nzbtomedia.nzbToMediaConfig import config from nzbtomedia.nzbToMediaUtil import nzbtomedia_configure_logging, WakeUp, get_dirnames # run migrate to convert old cfg to new style cfg plus fix any cfg missing values/options. -if migratecfg().migrate(): +if config.migrate(): # check to write settings from nzbGet UI to autoProcessMedia.cfg. if os.environ.has_key('NZBOP_SCRIPTDIR'): - migratecfg().addnzbget() + config.addnzbget() nzbtomedia_configure_logging(config.LOG_FILE) Logger = logging.getLogger(__name__) diff --git a/nzbtomedia/migratecfg.py b/nzbtomedia/migratecfg.py deleted file mode 100644 index 4aafbe3e..00000000 --- a/nzbtomedia/migratecfg.py +++ /dev/null @@ -1,241 +0,0 @@ -import os -import shutil -from nzbtomedia.nzbToMediaConfig import config -from itertools import chain - -class migratecfg: - def migrate(self): - categories = {} - confignew = None - configold = None - - try: - # check for autoProcessMedia.cfg and create if it does not exist - if not config(config.CONFIG_FILE): - shutil.copyfile(config.SAMPLE_CONFIG_FILE, config.CONFIG_FILE) - configold = config(config.CONFIG_FILE) - except:pass - - try: - # check for autoProcessMedia.cfg.sample and create if it does not exist - if not config(config.SAMPLE_CONFIG_FILE): - shutil.copyfile(config.CONFIG_FILE, config.SAMPLE_CONFIG_FILE) - confignew = config(config.SAMPLE_CONFIG_FILE) - except:pass - - # check for autoProcessMedia.cfg and autoProcessMedia.cfg.sample and if they don't exist return and fail - if not config() and not config(config.SAMPLE_CONFIG_FILE) or not confignew or not configold: - return False - - for section in configold.sections: - for option, value in configold[section].items(): - if section == "CouchPotato": - if option == "category": # change this old format - option = "cpsCategory" - if section == "SickBeard": - if option == "category": # change this old format - option = "sbCategory" - if option in ["cpsCategory","sbCategory","hpCategory","mlCategory","gzCategory"]: - if not isinstance(value, list): - value = [value] - - categories.update({section: value}) - continue - - try: - for section in configold.sections: - subsection = None - if section in list(chain.from_iterable(categories.values())): - subsection = section - section = ''.join([k for k, v in categories.iteritems() if subsection in v]) - elif section in categories.keys(): - subsection = categories[section][0] - - # create subsection if it does not exist - if subsection and subsection not in confignew[section].sections: - confignew[section][subsection] = {} - - for option, value in configold[section].items(): - if section == "CouchPotato": - if option == "outputDirectory": # move this to new location format - value = os.path.split(os.path.normpath(value))[0] - confignew['Torrent'][option] = value - continue - if option in ["username", "password"]: # these are no-longer needed. - continue - if option in ["category","cpsCategory"]: - continue - - if section == "SickBeard": - if option == "wait_for": # remove old format - continue - if option == "failed_fork": # change this old format - option = "fork" - value = "auto" - if option == "Torrent_ForceLink": - continue - if option == "outputDirectory": # move this to new location format - value = os.path.split(os.path.normpath(value))[0] - confignew['Torrent'][option] = value - continue - if option in ["category", "sbCategory"]: - continue - - if section == "HeadPhones": - if option in ["username", "password" ]: - continue - if option == "hpCategory": - continue - - if section == "Mylar": - if option in "mlCategory": - continue - - if section == "Gamez": - if option in ["username", "password"]: # these are no-longer needed. - continue - if option == "gzCategory": - continue - - if section == "Torrent": - if option in ["compressedExtensions", "mediaExtensions", "metaExtensions", "minSampleSize"]: - section = "Extensions" # these were moved - if option == "useLink": # Sym links supported now as well. - if isinstance(value, int): - num_value = int(value) - if num_value == 1: - value = "hard" - else: - value = "no" - - if subsection: - confignew[section][subsection][option] = value - else: - confignew[section][option] = value - except:pass - - # create a backup of our old config - if os.path.isfile(config.CONFIG_FILE): - cfgbak_name = config.CONFIG_FILE + ".old" - if os.path.isfile(cfgbak_name): # remove older backups - os.unlink(cfgbak_name) - os.rename(config.CONFIG_FILE, cfgbak_name) - - # writing our configuration file to 'autoProcessMedia.cfg' - with open(config.CONFIG_FILE, 'wb') as configFile: - confignew.write(configFile) - - return True - - def addnzbget(self): - confignew = config() - section = "CouchPotato" - envCatKey = 'NZBPO_CPSCATEGORY' - envKeys = ['APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT', 'DELAY', 'METHOD', 'DELETE_FAILED', 'REMOTECPS', 'WAIT_FOR', 'TIMEPERGIB'] - cfgKeys = ['apikey', 'host', 'port', 'ssl', 'web_root', 'delay', 'method', 'delete_failed', 'remoteCPS', 'wait_for', 'TimePerGiB'] - if os.environ.has_key(envCatKey): - for index in range(len(envKeys)): - key = 'NZBPO_CPS' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - if os.environ[envCatKey] not in confignew[section].sections: - confignew[section][os.environ[envCatKey]] = {} - confignew[section][os.environ[envCatKey]][option] = value - - section = "SickBeard" - envCatKey = 'NZBPO_SBCATEGORY' - envKeys = ['HOST', 'PORT', 'USERNAME', 'PASSWORD', 'SSL', 'WEB_ROOT', 'WATCH_DIR', 'FORK', 'DELETE_FAILED', 'DELAY', 'TIMEPERGIB', 'PROCESS_METHOD'] - cfgKeys = ['host', 'port', 'username', 'password', 'ssl', 'web_root', 'watch_dir', 'fork', 'delete_failed', 'delay', 'TimePerGiB', 'process_method'] - if os.environ.has_key(envCatKey): - for index in range(len(envKeys)): - key = 'NZBPO_SB' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - if os.environ[envCatKey] not in confignew[section].sections: - confignew[section][os.environ[envCatKey]] = {} - confignew[section][os.environ[envCatKey]][option] = value - - section = "HeadPhones" - envCatKey = 'NZBPO_HPCATEGORY' - envKeys = ['APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT', 'DELAY', 'TIMEPERGIB'] - cfgKeys = ['apikey', 'host', 'port', 'ssl', 'web_root', 'delay', 'TimePerGiB'] - if os.environ.has_key(envCatKey): - for index in range(len(envKeys)): - key = 'NZBPO_HP' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - if os.environ[envCatKey] not in confignew[section].sections: - confignew[section][os.environ[envCatKey]] = {} - confignew[section][os.environ[envCatKey]][option] = value - - section = "Mylar" - envCatKey = 'NZBPO_MYCATEGORY' - envKeys = ['HOST', 'PORT', 'USERNAME', 'PASSWORD', 'SSL', 'WEB_ROOT'] - cfgKeys = ['host', 'port', 'username', 'password', 'ssl', 'web_root'] - if os.environ.has_key(envCatKey): - for index in range(len(envKeys)): - key = 'NZBPO_MY' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - if os.environ[envCatKey] not in confignew[section].sections: - confignew[section][os.environ[envCatKey]] = {} - confignew[section][os.environ[envCatKey]][option] = value - - section = "Gamez" - envCatKey = 'NZBPO_GZCATEGORY' - envKeys = ['APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT'] - cfgKeys = ['apikey', 'host', 'port', 'ssl', 'web_root'] - if os.environ.has_key(envCatKey): - for index in range(len(envKeys)): - key = 'NZBPO_GZ' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - if os.environ[envCatKey] not in confignew[section].sections: - confignew[section][os.environ[envCatKey]] = {} - confignew[section][os.environ[envCatKey]][option] = value - - section = "Extensions" - envKeys = ['COMPRESSEDEXTENSIONS', 'MEDIAEXTENSIONS', 'METAEXTENSIONS'] - cfgKeys = ['compressedExtensions', 'mediaExtensions', 'metaExtensions'] - for index in range(len(envKeys)): - key = 'NZBPO_' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - confignew[section][option] = value - - section = "Transcoder" - envKeys = ['TRANSCODE', 'DUPLICATE', 'IGNOREEXTENSIONS', 'OUTPUTVIDEOEXTENSION', 'OUTPUTVIDEOCODEC', 'OUTPUTVIDEOPRESET', 'OUTPUTVIDEOFRAMERATE', 'OUTPUTVIDEOBITRATE', 'OUTPUTAUDIOCODEC', 'OUTPUTAUDIOBITRATE', 'OUTPUTSUBTITLECODEC'] - cfgKeys = ['transcode', 'duplicate', 'ignoreExtensions', 'outputVideoExtension', 'outputVideoCodec', 'outputVideoPreset', 'outputVideoFramerate', 'outputVideoBitrate', 'outputAudioCodec', 'outputAudioBitrate', 'outputSubtitleCodec'] - for index in range(len(envKeys)): - key = 'NZBPO_' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - confignew[section][option] = value - - section = "WakeOnLan" - envKeys = ['WAKE', 'HOST', 'PORT', 'MAC'] - cfgKeys = ['wake', 'host', 'port', 'mac'] - for index in range(len(envKeys)): - key = 'NZBPO_WOL' + envKeys[index] - if os.environ.has_key(key): - option = cfgKeys[index] - value = os.environ[key] - confignew[section][option] = value - - # create a backup of our old config - if os.path.isfile(config.CONFIG_FILE): - cfgbak_name = config.CONFIG_FILE + ".old" - if os.path.isfile(cfgbak_name): # remove older backups - os.unlink(cfgbak_name) - os.rename(config.CONFIG_FILE, cfgbak_name) - - # writing our configuration file to 'autoProcessMedia.cfg' - with open(config.CONFIG_FILE, 'wb') as configFile: - confignew.write(configFile) \ No newline at end of file diff --git a/nzbtomedia/nzbToMediaConfig.py b/nzbtomedia/nzbToMediaConfig.py index bc6d0004..9034af8b 100644 --- a/nzbtomedia/nzbToMediaConfig.py +++ b/nzbtomedia/nzbToMediaConfig.py @@ -1,4 +1,6 @@ import os +import shutil +from itertools import chain from lib import configobj class config(object): @@ -57,4 +59,242 @@ class config(object): for x in section: if config().has_key(x): sections.update({x: config()[x].sections}) - return sections \ No newline at end of file + return sections + + @staticmethod + def migrate(): + categories = {} + confignew = None + configold = None + + try: + # check for autoProcessMedia.cfg and create if it does not exist + if not config(config.CONFIG_FILE): + shutil.copyfile(config.SAMPLE_CONFIG_FILE, config.CONFIG_FILE) + configold = config(config.CONFIG_FILE) + except:pass + + try: + # check for autoProcessMedia.cfg.sample and create if it does not exist + if not config(config.SAMPLE_CONFIG_FILE): + shutil.copyfile(config.CONFIG_FILE, config.SAMPLE_CONFIG_FILE) + confignew = config(config.SAMPLE_CONFIG_FILE) + except:pass + + # check for autoProcessMedia.cfg and autoProcessMedia.cfg.sample and if they don't exist return and fail + if not config() and not config(config.SAMPLE_CONFIG_FILE) or not confignew or not configold: + return False + + for section in configold.sections: + for option, value in configold[section].items(): + if section == "CouchPotato": + if option == "category": # change this old format + option = "cpsCategory" + if section == "SickBeard": + if option == "category": # change this old format + option = "sbCategory" + if option in ["cpsCategory","sbCategory","hpCategory","mlCategory","gzCategory"]: + if not isinstance(value, list): + value = [value] + + categories.update({section: value}) + continue + + try: + for section in configold.sections: + subsection = None + if section in list(chain.from_iterable(categories.values())): + subsection = section + section = ''.join([k for k, v in categories.iteritems() if subsection in v]) + elif section in categories.keys(): + subsection = categories[section][0] + + # create subsection if it does not exist + if subsection and subsection not in confignew[section].sections: + confignew[section][subsection] = {} + + for option, value in configold[section].items(): + if section == "CouchPotato": + if option == "outputDirectory": # move this to new location format + value = os.path.split(os.path.normpath(value))[0] + confignew['Torrent'][option] = value + continue + if option in ["username", "password"]: # these are no-longer needed. + continue + if option in ["category","cpsCategory"]: + continue + + if section == "SickBeard": + if option == "wait_for": # remove old format + continue + if option == "failed_fork": # change this old format + option = "fork" + value = "auto" + if option == "Torrent_ForceLink": + continue + if option == "outputDirectory": # move this to new location format + value = os.path.split(os.path.normpath(value))[0] + confignew['Torrent'][option] = value + continue + if option in ["category", "sbCategory"]: + continue + + if section == "HeadPhones": + if option in ["username", "password" ]: + continue + if option == "hpCategory": + continue + + if section == "Mylar": + if option in "mlCategory": + continue + + if section == "Gamez": + if option in ["username", "password"]: # these are no-longer needed. + continue + if option == "gzCategory": + continue + + if section == "Torrent": + if option in ["compressedExtensions", "mediaExtensions", "metaExtensions", "minSampleSize"]: + section = "Extensions" # these were moved + if option == "useLink": # Sym links supported now as well. + if isinstance(value, int): + num_value = int(value) + if num_value == 1: + value = "hard" + else: + value = "no" + + if subsection: + confignew[section][subsection][option] = value + else: + confignew[section][option] = value + except:pass + + # create a backup of our old config + if os.path.isfile(config.CONFIG_FILE): + cfgbak_name = config.CONFIG_FILE + ".old" + if os.path.isfile(cfgbak_name): # remove older backups + os.unlink(cfgbak_name) + os.rename(config.CONFIG_FILE, cfgbak_name) + + # writing our configuration file to 'autoProcessMedia.cfg' + with open(config.CONFIG_FILE, 'wb') as configFile: + confignew.write(configFile) + + return True + + @staticmethod + def addnzbget(): + confignew = config() + section = "CouchPotato" + envCatKey = 'NZBPO_CPSCATEGORY' + envKeys = ['APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT', 'DELAY', 'METHOD', 'DELETE_FAILED', 'REMOTECPS', 'WAIT_FOR', 'TIMEPERGIB'] + cfgKeys = ['apikey', 'host', 'port', 'ssl', 'web_root', 'delay', 'method', 'delete_failed', 'remoteCPS', 'wait_for', 'TimePerGiB'] + if os.environ.has_key(envCatKey): + for index in range(len(envKeys)): + key = 'NZBPO_CPS' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + if os.environ[envCatKey] not in confignew[section].sections: + confignew[section][os.environ[envCatKey]] = {} + confignew[section][os.environ[envCatKey]][option] = value + + section = "SickBeard" + envCatKey = 'NZBPO_SBCATEGORY' + envKeys = ['HOST', 'PORT', 'USERNAME', 'PASSWORD', 'SSL', 'WEB_ROOT', 'WATCH_DIR', 'FORK', 'DELETE_FAILED', 'DELAY', 'TIMEPERGIB', 'PROCESS_METHOD'] + cfgKeys = ['host', 'port', 'username', 'password', 'ssl', 'web_root', 'watch_dir', 'fork', 'delete_failed', 'delay', 'TimePerGiB', 'process_method'] + if os.environ.has_key(envCatKey): + for index in range(len(envKeys)): + key = 'NZBPO_SB' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + if os.environ[envCatKey] not in confignew[section].sections: + confignew[section][os.environ[envCatKey]] = {} + confignew[section][os.environ[envCatKey]][option] = value + + section = "HeadPhones" + envCatKey = 'NZBPO_HPCATEGORY' + envKeys = ['APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT', 'DELAY', 'TIMEPERGIB'] + cfgKeys = ['apikey', 'host', 'port', 'ssl', 'web_root', 'delay', 'TimePerGiB'] + if os.environ.has_key(envCatKey): + for index in range(len(envKeys)): + key = 'NZBPO_HP' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + if os.environ[envCatKey] not in confignew[section].sections: + confignew[section][os.environ[envCatKey]] = {} + confignew[section][os.environ[envCatKey]][option] = value + + section = "Mylar" + envCatKey = 'NZBPO_MYCATEGORY' + envKeys = ['HOST', 'PORT', 'USERNAME', 'PASSWORD', 'SSL', 'WEB_ROOT'] + cfgKeys = ['host', 'port', 'username', 'password', 'ssl', 'web_root'] + if os.environ.has_key(envCatKey): + for index in range(len(envKeys)): + key = 'NZBPO_MY' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + if os.environ[envCatKey] not in confignew[section].sections: + confignew[section][os.environ[envCatKey]] = {} + confignew[section][os.environ[envCatKey]][option] = value + + section = "Gamez" + envCatKey = 'NZBPO_GZCATEGORY' + envKeys = ['APIKEY', 'HOST', 'PORT', 'SSL', 'WEB_ROOT'] + cfgKeys = ['apikey', 'host', 'port', 'ssl', 'web_root'] + if os.environ.has_key(envCatKey): + for index in range(len(envKeys)): + key = 'NZBPO_GZ' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + if os.environ[envCatKey] not in confignew[section].sections: + confignew[section][os.environ[envCatKey]] = {} + confignew[section][os.environ[envCatKey]][option] = value + + section = "Extensions" + envKeys = ['COMPRESSEDEXTENSIONS', 'MEDIAEXTENSIONS', 'METAEXTENSIONS'] + cfgKeys = ['compressedExtensions', 'mediaExtensions', 'metaExtensions'] + for index in range(len(envKeys)): + key = 'NZBPO_' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + confignew[section][option] = value + + section = "Transcoder" + envKeys = ['TRANSCODE', 'DUPLICATE', 'IGNOREEXTENSIONS', 'OUTPUTVIDEOEXTENSION', 'OUTPUTVIDEOCODEC', 'OUTPUTVIDEOPRESET', 'OUTPUTVIDEOFRAMERATE', 'OUTPUTVIDEOBITRATE', 'OUTPUTAUDIOCODEC', 'OUTPUTAUDIOBITRATE', 'OUTPUTSUBTITLECODEC'] + cfgKeys = ['transcode', 'duplicate', 'ignoreExtensions', 'outputVideoExtension', 'outputVideoCodec', 'outputVideoPreset', 'outputVideoFramerate', 'outputVideoBitrate', 'outputAudioCodec', 'outputAudioBitrate', 'outputSubtitleCodec'] + for index in range(len(envKeys)): + key = 'NZBPO_' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + confignew[section][option] = value + + section = "WakeOnLan" + envKeys = ['WAKE', 'HOST', 'PORT', 'MAC'] + cfgKeys = ['wake', 'host', 'port', 'mac'] + for index in range(len(envKeys)): + key = 'NZBPO_WOL' + envKeys[index] + if os.environ.has_key(key): + option = cfgKeys[index] + value = os.environ[key] + confignew[section][option] = value + + # create a backup of our old config + if os.path.isfile(config.CONFIG_FILE): + cfgbak_name = config.CONFIG_FILE + ".old" + if os.path.isfile(cfgbak_name): # remove older backups + os.unlink(cfgbak_name) + os.rename(config.CONFIG_FILE, cfgbak_name) + + # writing our configuration file to 'autoProcessMedia.cfg' + with open(config.CONFIG_FILE, 'wb') as configFile: + confignew.write(configFile) \ No newline at end of file diff --git a/nzbtomedia/nzbToMediaUtil.py b/nzbtomedia/nzbToMediaUtil.py index a0d80924..7abe2894 100644 --- a/nzbtomedia/nzbToMediaUtil.py +++ b/nzbtomedia/nzbToMediaUtil.py @@ -452,31 +452,38 @@ def parse_args(clientAgent): return clients[clientAgent](sys.argv) def get_dirnames(section, inputCategory): + + dirNames = [] + try: watch_dir = config()[section][inputCategory]["watch_dir"] + if not os.path.exists(watch_dir): + watch_dir = "" except: watch_dir = "" + try: outputDirectory = os.path.join(config()["Torrent"]["outputDirectory"], inputCategory) + if not os.path.exists(watch_dir): + outputDirectory = "" except: outputDirectory = "" - # set dirName - dirNames = [] if watch_dir != "": - if os.path.exists(watch_dir): - dirNames.extend([os.path.join(watch_dir, o) for o in os.listdir(watch_dir) if - os.path.isdir(os.path.join(watch_dir, o))]) + dirNames.extend([os.path.join(watch_dir, o) for o in os.listdir(watch_dir) if + os.path.isdir(os.path.join(watch_dir, o))]) if not dirNames: Logger.warn("No Directories identified to Scan inside " + watch_dir) if outputDirectory != "": - if os.path.exists(outputDirectory): - dirNames.extend([os.path.join(outputDirectory, o) for o in os.listdir(outputDirectory) if - os.path.isdir(os.path.join(outputDirectory, o))]) + dirNames.extend([os.path.join(outputDirectory, o) for o in os.listdir(outputDirectory) if + os.path.isdir(os.path.join(outputDirectory, o))]) if not dirNames: Logger.warn("No Directories identified to Scan inside " + outputDirectory) + if watch_dir == "" and outputDirectory == "": + Logger.warn("No watch_dir or outputDirectory setup to be Scanned, go fix you autoProcessMedia.cfg file.") + return dirNames def delete(dirName):