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

This commit is contained in:
Ricardo Garcia 2010-07-13 18:20:02 +02:00
parent c833bb97dc
commit f2413e6793
1 changed files with 11 additions and 0 deletions

View File

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