def run(): """ parse command line options """ usage = "%prog [--version] [--help] COMMAND [ARGS]" description = "Description: Media Rover is an automated TV download scheduler and catalogue maintainer" epilog = """ Available commands are: schedule Process configured sources and schedule nzb's for download episode-sort Sort downloaded episode configuration Generate default configuration and logging files set-quality Register quality of series episodes on disk migrate-metadata Migrate metadata database from one version to another See 'python mediarover.py COMMAND --help' for more information on a specific command.""" parser = OptionParser(version=__app_version__, usage=usage, description=description, epilog=epilog, add_help_option=False) # stop processing arguments when we find the command parser.disable_interspersed_args() parser.add_option("-h", "--help", action="callback", callback=print_epilog, help="show this help message and exit") # parse arguments and grab the command (options, args) = parser.parse_args() if len(args): command = args.pop(0) else: print_epilog(parser, code=2) # initialize dependency broker and register resources broker = initialize_broker() # determine default config path if os.name == "nt": if "LOCALAPPDATA" in os.environ: # Vista or better default path config_dir = os.path.expandvars("$LOCALAPPDATA\Mediarover") else: # XP default path config_dir = os.path.expandvars("$APPDATA\Mediarover") else: # os.name == "posix": config_dir = os.path.expanduser("~/.mediarover") broker.register(CONFIG_DIR, config_dir) broker.register(RESOURCES_DIR, os.path.join(sys.path[0], "resources")) if command == 'schedule': schedule(broker, args) elif command == 'episode-sort': episode_sort(broker, args) elif command == 'set-quality': set_quality(broker, args) elif command == 'configuration': configuration(broker, args) elif command == 'migrate-metadata': migrate_metadata(broker, args) else: parser.print_usage() print "%s: error: no such command: %s" % (os.path.basename(sys.argv[0]), command) exit(2)
# consistent lookups for name, filters in config['tv']['filter'].items(): del config['tv']['filter'][name] config['tv']['filter'][Series.sanitize_series_name(name)] = build_series_filters(config, filters) """ logging setup """ # initialize and retrieve logger for later use # set logging path using default_log_dir from config file logging.config.fileConfig(open(os.path.join(broker[CONFIG_DIR], "sabnzbd_episode_sort_logging.conf"))) logger = logging.getLogger("mediarover.command.episode_sort") """ post configuration setup """ if len(args) == 0: print_epilog(parser, code=1) # gather command line arguments params = {'path': args[0].rstrip("/\ ")} if len(args) == 2: params['quality'] = args[1] elif len(args) in (6,7): # NOTE: when SAB passes an empty value for the index id to the batch shell script (Windows), the empty # command line argument is lost. This means that MR is only called with 6 arguments rather than 7 # Add an additional argument (empty string) for the missing index id and move on if len(args) == 6: args.insert(3, '') params['nzb'] = args[1] params['job'] = args[2] params['report_id'] = args[3] params['category'] = args[4]