mirror of
				https://github.com/ytdl-org/ytdl-nightly.git
				synced 2025-06-05 21:49:13 +02:00 
			
		
		
		
	Option parsing refactoring ; Moved version string to __version__
Brings terser option formatting to youtube-dl: from: -u USERNAME, --username USERNAME to: -u, --username USERNAME
This commit is contained in:
		
							
								
								
									
										90
									
								
								youtube-dl
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								youtube-dl
									
									
									
									
									
								
							| @@ -12,6 +12,7 @@ __author__  = ( | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| __license__ = "Public Domain" | __license__ = "Public Domain" | ||||||
|  | __version__ = '2011.08.04' | ||||||
|  |  | ||||||
| import cookielib | import cookielib | ||||||
| import ctypes | import ctypes | ||||||
| @@ -2725,59 +2726,80 @@ def updateSelf(downloader, filename): | |||||||
| 	downloader.to_screen('Updated to version %s' % latest_version) | 	downloader.to_screen('Updated to version %s' % latest_version) | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | def parseOpts(): | ||||||
| 	try: | 	# Deferred imports | ||||||
| 		# Modules needed only when running the main program |  | ||||||
| 	import getpass | 	import getpass | ||||||
| 	import optparse | 	import optparse | ||||||
|  |  | ||||||
|  | 	def _format_option_string(option): | ||||||
|  | 		''' ('-o', '--option') -> -o, --format METAVAR''' | ||||||
|  |  | ||||||
| 		# Parse command line | 		opts = [] | ||||||
| 		parser = optparse.OptionParser( |  | ||||||
| 			usage='Usage: %prog [options] url...', |  | ||||||
| 			version='2011.08.04', |  | ||||||
| 			conflict_handler='resolve', |  | ||||||
| 		) |  | ||||||
|  |  | ||||||
| 		parser.add_option('-h', '--help', | 		if option._short_opts: opts.append(option._short_opts[0]) | ||||||
|  | 		if option._long_opts: opts.append(option._long_opts[0]) | ||||||
|  | 		if len(opts) > 1: opts.insert(1, ', ') | ||||||
|  |  | ||||||
|  | 		if option.takes_value(): opts.append(' %s' % option.metavar) | ||||||
|  |  | ||||||
|  | 		return "".join(opts) | ||||||
|  |  | ||||||
|  | 	fmt = optparse.IndentedHelpFormatter() | ||||||
|  | 	fmt.format_option_strings = _format_option_string | ||||||
|  |  | ||||||
|  | 	kw = { | ||||||
|  | 		'version'   : __version__, | ||||||
|  | 		'formatter' : fmt, | ||||||
|  | 		'usage' : 'Usage : %prog [options] url...', | ||||||
|  | 		'conflict_handler' : 'resolve', | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	parser = optparse.OptionParser(**kw) | ||||||
|  |  | ||||||
|  | 	# option groups | ||||||
|  | 	general        = optparse.OptionGroup(parser, 'General Options') | ||||||
|  | 	authentication = optparse.OptionGroup(parser, 'Authentication Options') | ||||||
|  | 	video_format   = optparse.OptionGroup(parser, 'Video Format Options') | ||||||
|  | 	postproc       = optparse.OptionGroup(parser, 'Post-processing Options') | ||||||
|  | 	filesystem     = optparse.OptionGroup(parser, 'Filesystem Options') | ||||||
|  | 	verbosity      = optparse.OptionGroup(parser, 'Verbosity / Simulation Options') | ||||||
|  |  | ||||||
|  | 	general.add_option('-h', '--help', | ||||||
| 			action='help', help='print this help text and exit') | 			action='help', help='print this help text and exit') | ||||||
| 		parser.add_option('-v', '--version', | 	general.add_option('-v', '--version', | ||||||
| 			action='version', help='print program version and exit') | 			action='version', help='print program version and exit') | ||||||
| 		parser.add_option('-U', '--update', | 	general.add_option('-U', '--update', | ||||||
| 			action='store_true', dest='update_self', help='update this program to latest stable version') | 			action='store_true', dest='update_self', help='update this program to latest stable version') | ||||||
| 		parser.add_option('-i', '--ignore-errors', | 	general.add_option('-i', '--ignore-errors', | ||||||
| 			action='store_true', dest='ignoreerrors', help='continue on download errors', default=False) | 			action='store_true', dest='ignoreerrors', help='continue on download errors', default=False) | ||||||
| 		parser.add_option('-r', '--rate-limit', | 	general.add_option('-r', '--rate-limit', | ||||||
| 			dest='ratelimit', metavar='LIMIT', help='download rate limit (e.g. 50k or 44.6m)') | 			dest='ratelimit', metavar='LIMIT', help='download rate limit (e.g. 50k or 44.6m)') | ||||||
| 		parser.add_option('-R', '--retries', | 	general.add_option('-R', '--retries', | ||||||
| 			dest='retries', metavar='RETRIES', help='number of retries (default is 10)', default=10) | 			dest='retries', metavar='RETRIES', help='number of retries (default is 10)', default=10) | ||||||
| 		parser.add_option('--playlist-start', | 	general.add_option('--playlist-start', | ||||||
| 			dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is 1)', default=1) | 			dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is 1)', default=1) | ||||||
| 		parser.add_option('--playlist-end', | 	general.add_option('--playlist-end', | ||||||
| 			dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1) | 			dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1) | ||||||
| 		parser.add_option('--dump-user-agent', | 	general.add_option('--dump-user-agent', | ||||||
| 			action='store_true', dest='dump_user_agent', | 			action='store_true', dest='dump_user_agent', | ||||||
| 			help='display the current browser identification', default=False) | 			help='display the current browser identification', default=False) | ||||||
|  |  | ||||||
| 		authentication = optparse.OptionGroup(parser, 'Authentication Options') |  | ||||||
| 	authentication.add_option('-u', '--username', | 	authentication.add_option('-u', '--username', | ||||||
| 			dest='username', metavar='USERNAME', help='account username') | 			dest='username', metavar='USERNAME', help='account username') | ||||||
| 	authentication.add_option('-p', '--password', | 	authentication.add_option('-p', '--password', | ||||||
| 			dest='password', metavar='PASSWORD', help='account password') | 			dest='password', metavar='PASSWORD', help='account password') | ||||||
| 	authentication.add_option('-n', '--netrc', | 	authentication.add_option('-n', '--netrc', | ||||||
| 			action='store_true', dest='usenetrc', help='use .netrc authentication data', default=False) | 			action='store_true', dest='usenetrc', help='use .netrc authentication data', default=False) | ||||||
| 		parser.add_option_group(authentication) |  | ||||||
|  |  | ||||||
| 		video_format = optparse.OptionGroup(parser, 'Video Format Options') |  | ||||||
| 	video_format.add_option('-f', '--format', | 	video_format.add_option('-f', '--format', | ||||||
| 			action='store', dest='format', metavar='FORMAT', help='video format code') | 			action='store', dest='format', metavar='FORMAT', help='video format code') | ||||||
| 	video_format.add_option('--all-formats', | 	video_format.add_option('--all-formats', | ||||||
| 			action='store_const', dest='format', help='download all available video formats', const='-1') | 			action='store_const', dest='format', help='download all available video formats', const='-1') | ||||||
| 	video_format.add_option('--max-quality', | 	video_format.add_option('--max-quality', | ||||||
| 			action='store', dest='format_limit', metavar='FORMAT', help='highest quality format to download') | 			action='store', dest='format_limit', metavar='FORMAT', help='highest quality format to download') | ||||||
| 		parser.add_option_group(video_format) |  | ||||||
|  |  | ||||||
| 		verbosity = optparse.OptionGroup(parser, 'Verbosity / Simulation Options') |  | ||||||
| 	verbosity.add_option('-q', '--quiet', | 	verbosity.add_option('-q', '--quiet', | ||||||
| 			action='store_true', dest='quiet', help='activates quiet mode', default=False) | 			action='store_true', dest='quiet', help='activates quiet mode', default=False) | ||||||
| 	verbosity.add_option('-s', '--simulate', | 	verbosity.add_option('-s', '--simulate', | ||||||
| @@ -2800,9 +2822,8 @@ if __name__ == '__main__': | |||||||
| 	verbosity.add_option('--console-title', | 	verbosity.add_option('--console-title', | ||||||
| 			action='store_true', dest='consoletitle', | 			action='store_true', dest='consoletitle', | ||||||
| 			help='display progress in console titlebar', default=False) | 			help='display progress in console titlebar', default=False) | ||||||
| 		parser.add_option_group(verbosity) |  | ||||||
|  |  | ||||||
| 		filesystem = optparse.OptionGroup(parser, 'Filesystem Options') |  | ||||||
| 	filesystem.add_option('-t', '--title', | 	filesystem.add_option('-t', '--title', | ||||||
| 			action='store_true', dest='usetitle', help='use title in file name', default=False) | 			action='store_true', dest='usetitle', help='use title in file name', default=False) | ||||||
| 	filesystem.add_option('-l', '--literal', | 	filesystem.add_option('-l', '--literal', | ||||||
| @@ -2825,16 +2846,29 @@ if __name__ == '__main__': | |||||||
| 	filesystem.add_option('--no-mtime', | 	filesystem.add_option('--no-mtime', | ||||||
| 			action='store_false', dest='updatetime', | 			action='store_false', dest='updatetime', | ||||||
| 			help='do not use the Last-modified header to set the file modification time', default=True) | 			help='do not use the Last-modified header to set the file modification time', default=True) | ||||||
| 		parser.add_option_group(filesystem) |  | ||||||
|  |  | ||||||
| 		postproc = optparse.OptionGroup(parser, 'Post-processing Options') |  | ||||||
| 	postproc.add_option('--extract-audio', action='store_true', dest='extractaudio', default=False, | 	postproc.add_option('--extract-audio', action='store_true', dest='extractaudio', default=False, | ||||||
| 			help='convert video files to audio-only files (requires ffmpeg and ffprobe)') | 			help='convert video files to audio-only files (requires ffmpeg and ffprobe)') | ||||||
| 	postproc.add_option('--audio-format', metavar='FORMAT', dest='audioformat', default='best', | 	postproc.add_option('--audio-format', metavar='FORMAT', dest='audioformat', default='best', | ||||||
| 			help='"best", "aac" or "mp3"; best by default') | 			help='"best", "aac" or "mp3"; best by default') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	parser.add_option_group(general) | ||||||
|  | 	parser.add_option_group(filesystem) | ||||||
|  | 	parser.add_option_group(verbosity) | ||||||
|  | 	parser.add_option_group(video_format) | ||||||
|  | 	parser.add_option_group(authentication) | ||||||
| 	parser.add_option_group(postproc) | 	parser.add_option_group(postproc) | ||||||
|  |  | ||||||
| 		(opts, args) = parser.parse_args() | 	opts, args = parser.parse_args() | ||||||
|  |  | ||||||
|  | 	return parser, opts, args | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if __name__ == '__main__': | ||||||
|  | 	try: | ||||||
|  | 		parser, opts, args = parseOpts() | ||||||
|  |  | ||||||
| 		# Open appropriate CookieJar | 		# Open appropriate CookieJar | ||||||
| 		if opts.cookiefile is None: | 		if opts.cookiefile is None: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user