Allow to use the extension for the format selection
The best format with the extension is downloaded.
This commit is contained in:
parent
a9c58ad945
commit
49e86983e7
@ -96,9 +96,10 @@ class TestFormatSelection(unittest.TestCase):
|
|||||||
|
|
||||||
def test_format_selection(self):
|
def test_format_selection(self):
|
||||||
formats = [
|
formats = [
|
||||||
{u'format_id': u'35'},
|
{u'format_id': u'35', u'ext': u'mp4'},
|
||||||
{u'format_id': u'47'},
|
{u'format_id': u'45', u'ext': u'webm'},
|
||||||
{u'format_id': u'2'},
|
{u'format_id': u'47', u'ext': u'webm'},
|
||||||
|
{u'format_id': u'2', u'ext': u'flv'},
|
||||||
]
|
]
|
||||||
info_dict = {u'formats': formats, u'extractor': u'test'}
|
info_dict = {u'formats': formats, u'extractor': u'test'}
|
||||||
|
|
||||||
@ -117,6 +118,16 @@ class TestFormatSelection(unittest.TestCase):
|
|||||||
downloaded = ydl.downloaded_info_dicts[0]
|
downloaded = ydl.downloaded_info_dicts[0]
|
||||||
self.assertEqual(downloaded['format_id'], u'2')
|
self.assertEqual(downloaded['format_id'], u'2')
|
||||||
|
|
||||||
|
ydl = YDL({'format': u'webm/mp4'})
|
||||||
|
ydl.process_ie_result(info_dict)
|
||||||
|
downloaded = ydl.downloaded_info_dicts[0]
|
||||||
|
self.assertEqual(downloaded['format_id'], u'47')
|
||||||
|
|
||||||
|
ydl = YDL({'format': u'3gp/40/mp4'})
|
||||||
|
ydl.process_ie_result(info_dict)
|
||||||
|
downloaded = ydl.downloaded_info_dicts[0]
|
||||||
|
self.assertEqual(downloaded['format_id'], u'35')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
@ -454,7 +454,12 @@ class YoutubeDL(object):
|
|||||||
elif format_spec == 'worst':
|
elif format_spec == 'worst':
|
||||||
return available_formats[0]
|
return available_formats[0]
|
||||||
else:
|
else:
|
||||||
matches = list(filter(lambda f:f['format_id'] == format_spec ,available_formats))
|
extensions = [u'mp4', u'flv', u'webm', u'3gp']
|
||||||
|
if format_spec in extensions:
|
||||||
|
filter_f = lambda f: f['ext'] == format_spec
|
||||||
|
else:
|
||||||
|
filter_f = lambda f: f['format_id'] == format_spec
|
||||||
|
matches = list(filter(filter_f ,available_formats))
|
||||||
if matches:
|
if matches:
|
||||||
return matches[-1]
|
return matches[-1]
|
||||||
return None
|
return None
|
||||||
|
Loading…
Reference in New Issue
Block a user