瀏覽代碼

Add a --max-quality flag to limit the highest quality (fixes issue #145)

Ricardo Garcia 15 年之前
父節點
當前提交
f2413e6793
共有 1 個文件被更改,包括 11 次插入0 次删除
  1. 11 0
      youtube-dl

+ 11 - 0
youtube-dl

@@ -189,6 +189,7 @@ class FileDownloader(object):
 	forcetitle:	Force printing title.
 	simulate:	Do not download the video files.
 	format:		Video format code.
+	format_limit:	Highest quality format to try.
 	outtmpl:	Template for output names.
 	ignoreerrors:	Do not stop on download errors.
 	ratelimit:	Download speed limit, in bytes/sec.
@@ -819,6 +820,13 @@ class YoutubeIE(InfoExtractor):
 			params = self._downloader.params
 			format_param = params.get('format', None)
 			if format_param == '0':
+				format_limit = params.get('format_limit', None)
+				if format_limit is not None:
+					try:
+						# Start at a different format if the user has limited the maximum quality
+						quality_index = self._available_formats.index(format_limit)
+					except ValueError:
+						pass
 				format_param = self._available_formats[quality_index]
 				best_quality = True
 			elif format_param == '-1':
@@ -2111,6 +2119,8 @@ if __name__ == '__main__':
 				action='store_const', dest='format', help='alias for -f 22', const='22')
 		video_format.add_option('--all-formats',
 				action='store_const', dest='format', help='download all available video formats', const='-1')
+		video_format.add_option('--max-quality',
+				action='store', dest='format_limit', metavar='FORMAT', help='highest quality format limit for -b')
 		parser.add_option_group(video_format)
 
 		verbosity = optparse.OptionGroup(parser, 'Verbosity / Simulation Options')
@@ -2210,6 +2220,7 @@ if __name__ == '__main__':
 			'forcedescription': opts.getdescription,
 			'simulate': (opts.simulate or opts.geturl or opts.gettitle or opts.getthumbnail or opts.getdescription),
 			'format': opts.format,
+			'format_limit': opts.format_limit,
 			'outtmpl': ((opts.outtmpl is not None and opts.outtmpl.decode(preferredencoding()))
 				or (opts.format == '-1' and opts.usetitle and u'%(stitle)s-%(id)s-%(format)s.%(ext)s')
 				or (opts.format == '-1' and opts.useliteral and u'%(title)s-%(id)s-%(format)s.%(ext)s')