def main(): """Parses command line arguments, displays errors from tvnamer in terminal """ opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() if opts.verbose: logging.basicConfig( level = logging.DEBUG, format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s") else: logging.basicConfig() # If a config is specified, load it, update the defaults using the loaded # values, then reparse the options with the updated defaults. default_configuration = os.path.expanduser("~/.tvnamer.json") if opts.loadconfig is not None: # Command line overrides loading ~/.tvnamer.json configToLoad = opts.loadconfig elif os.path.isfile(default_configuration): # No --config arg, so load default config if it exists configToLoad = default_configuration else: # No arg, nothing at default config location, don't load anything configToLoad = None if configToLoad is not None: p("Loading config: %s" % (configToLoad)) try: loadedConfig = json.load(open(os.path.expanduser(configToLoad))) except ValueError as e: p("Error loading config: %s" % e) opter.exit(1) else: # Config loaded, update optparser's defaults and reparse defaults.update(loadedConfig) opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() # Decode args using filesystem encoding (done after config loading # as the args are reparsed when the config is loaded) if PY2: args = [x.decode(sys.getfilesystemencoding()) for x in args] # Save config argument if opts.saveconfig is not None: p("Saving config: %s" % (opts.saveconfig)) configToSave = dict(opts.__dict__) del configToSave['saveconfig'] del configToSave['loadconfig'] del configToSave['showconfig'] json.dump( configToSave, open(os.path.expanduser(opts.saveconfig), "w+"), sort_keys=True, indent=4) opter.exit(0) # Show config argument if opts.showconfig: print(json.dumps(opts.__dict__, sort_keys=True, indent=2)) return # Process values if opts.batch: opts.select_first = True opts.always_rename = True # Update global config object Config.update(opts.__dict__) if Config["move_files_only"] and not Config["move_files_enable"]: p("#" * 20) p("Parameter move_files_enable cannot be set to false while parameter move_only is set to true.") p("#" * 20) opter.exit(0) if Config['titlecase_filename'] and Config['lowercase_filename']: warnings.warn("Setting 'lowercase_filename' clobbers 'titlecase_filename' option") if len(args) == 0: opter.error("No filenames or directories supplied") try: tvnamer(paths = sorted(args)) except NoValidFilesFoundError: opter.error("No valid files were supplied") except UserAbort as errormsg: opter.error(errormsg) except SkipBehaviourAbort as errormsg: opter.error(errormsg)
def main(): """Parses command line arguments, displays errors from tvnamer in terminal """ opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() if opts.verbose: logging.basicConfig( level=logging.DEBUG, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") else: logging.basicConfig() # If a config is specified, load it, update the defaults using the loaded # values, then reparse the options with the updated defaults. default_configuration = os.path.expanduser("~/.tvnamer.json") if opts.loadconfig is not None: # Command line overrides loading ~/.tvnamer.json configToLoad = opts.loadconfig elif os.path.isfile(default_configuration): # No --config arg, so load default config if it exists configToLoad = default_configuration else: # No arg, nothing at default config location, don't load anything configToLoad = None if configToLoad is not None: p("Loading config: %s" % (configToLoad)) try: loadedConfig = json.load(open(os.path.expanduser(configToLoad))) except ValueError as e: p("Error loading config: %s" % e) opter.exit(1) else: # Config loaded, update optparser's defaults and reparse defaults.update(loadedConfig) opter = cliarg_parser.getCommandlineParser(defaults) opts, args = opter.parse_args() # Decode args using filesystem encoding (done after config loading # as the args are reparsed when the config is loaded) if PY2: args = [x.decode(sys.getfilesystemencoding()) for x in args] # Save config argument if opts.saveconfig is not None: p("Saving config: %s" % (opts.saveconfig)) configToSave = dict(opts.__dict__) del configToSave['saveconfig'] del configToSave['loadconfig'] del configToSave['showconfig'] json.dump(configToSave, open(os.path.expanduser(opts.saveconfig), "w+"), sort_keys=True, indent=4) opter.exit(0) # Show config argument if opts.showconfig: print(json.dumps(opts.__dict__, sort_keys=True, indent=2)) return # Process values if opts.batch: opts.select_first = True opts.always_rename = True # Update global config object Config.update(opts.__dict__) if Config["move_files_only"] and not Config["move_files_enable"]: p("#" * 20) p("Parameter move_files_enable cannot be set to false while parameter move_only is set to true." ) p("#" * 20) opter.exit(0) if Config['titlecase_filename'] and Config['lowercase_filename']: warnings.warn( "Setting 'lowercase_filename' clobbers 'titlecase_filename' option" ) if len(args) == 0: opter.error("No filenames or directories supplied") try: tvnamer(paths=sorted(args)) except NoValidFilesFoundError: opter.error("No valid files were supplied") except UserAbort as errormsg: opter.error(errormsg) except SkipBehaviourAbort as errormsg: opter.error(errormsg)
def main(): # type: () -> None """Parses command line arguments, displays errors from tvnamer in terminal """ opter = cliarg_parser.get_cli_parser(defaults) opts, args = opter.parse_args() if opts.show_version: print("tvnamer version: %s" % (__version__, )) print("tvdb_api version: %s" % (tvdb_api.__version__, )) print("python version: %s" % (sys.version, )) sys.exit(0) if opts.verbose: logging.basicConfig( level=logging.DEBUG, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", ) else: logging.basicConfig() # If a config is specified, load it, update the defaults using the loaded # values, then reparse the options with the updated defaults. default_configuration = os.path.expanduser( "~/.config/tvnamer/tvnamer.json") old_default_configuration = os.path.expanduser("~/.tvnamer.json") if opts.loadconfig is not None: # Command line overrides loading ~/.config/tvnamer/tvnamer.json config_to_load = opts.loadconfig elif os.path.isfile(default_configuration): # No --config arg, so load default config if it exists config_to_load = default_configuration elif os.path.isfile(old_default_configuration): # No --config arg and neow defualt config so load old version if it exist config_to_load = old_default_configuration else: # No arg, nothing at default config location, don't load anything config_to_load = None if config_to_load is not None: LOG.info("Loading config: %s" % (config_to_load)) if os.path.isfile(old_default_configuration): LOG.warning( "WARNING: you have a config at deprecated ~/.tvnamer.json location." ) LOG.warning( "Config must be moved to new location: ~/.config/tvnamer/tvnamer.json" ) try: loaded_config = json.load(open(os.path.expanduser(config_to_load))) except ValueError as e: LOG.error("Error loading config: %s" % e) opter.exit(1) else: # Config loaded, update optparser's defaults and reparse defaults.update(loaded_config) opter = cliarg_parser.get_cli_parser(defaults) opts, args = opter.parse_args() # Save config argument if opts.saveconfig is not None: LOG.info("Saving config: %s" % (opts.saveconfig)) config_to_save = dict(opts.__dict__) del config_to_save["saveconfig"] del config_to_save["loadconfig"] del config_to_save["showconfig"] json.dump( config_to_save, open(os.path.expanduser(opts.saveconfig), "w+"), sort_keys=True, indent=4, ) opter.exit(0) # Show config argument if opts.showconfig: print(json.dumps(opts.__dict__, sort_keys=True, indent=2)) return # Process values if opts.batch: opts.select_first = True opts.always_rename = True # Update global config object Config.update(opts.__dict__) if Config["move_files_only"] and not Config["move_files_enable"]: opter.error( "Parameter move_files_enable cannot be set to false while parameter move_only is set to true." ) if Config["titlecase_filename"] and Config["lowercase_filename"]: warnings.warn( "Setting 'lowercase_filename' clobbers 'titlecase_filename' option" ) if len(args) == 0: opter.error("No filenames or directories supplied") try: tvnamer(paths=sorted(args)) except NoValidFilesFoundError: opter.error("No valid files were supplied") except UserAbort as errormsg: opter.error(errormsg) except SkipBehaviourAbort as errormsg: opter.error(errormsg)