Esempio n. 1
0
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)
Esempio n. 2
0
	# 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]