[utils] Check ext with trailing slash against the list of known extensions
This commit is contained in:
parent
5035536e3f
commit
9cb9a5df77
2 changed files with 19 additions and 1 deletions
|
@ -242,6 +242,9 @@ class TestUtil(unittest.TestCase):
|
||||||
def test_determine_ext(self):
|
def test_determine_ext(self):
|
||||||
self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4')
|
self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4')
|
||||||
self.assertEqual(determine_ext('http://example.com/foo/bar/?download', None), None)
|
self.assertEqual(determine_ext('http://example.com/foo/bar/?download', None), None)
|
||||||
|
self.assertEqual(determine_ext('http://example.com/foo/bar.nonext/?download', None), None)
|
||||||
|
self.assertEqual(determine_ext('http://example.com/foo/bar/mp4?download', None), None)
|
||||||
|
self.assertEqual(determine_ext('http://example.com/foo/bar.m3u8//?download'), 'm3u8')
|
||||||
|
|
||||||
def test_find_xpath_attr(self):
|
def test_find_xpath_attr(self):
|
||||||
testxml = '''<root>
|
testxml = '''<root>
|
||||||
|
|
|
@ -922,9 +922,24 @@ def unified_strdate(date_str, day_first=True):
|
||||||
def determine_ext(url, default_ext='unknown_video'):
|
def determine_ext(url, default_ext='unknown_video'):
|
||||||
if url is None:
|
if url is None:
|
||||||
return default_ext
|
return default_ext
|
||||||
guess = url.partition('?')[0].rpartition('.')[2].rstrip('/')
|
guess = url.partition('?')[0].rpartition('.')[2]
|
||||||
if re.match(r'^[A-Za-z0-9]+$', guess):
|
if re.match(r'^[A-Za-z0-9]+$', guess):
|
||||||
return guess
|
return guess
|
||||||
|
elif guess.rstrip('/') in (
|
||||||
|
'mp4', 'm4a', 'm4p', 'm4b', 'm4r', 'm4v', 'aac',
|
||||||
|
'flv', 'f4v', 'f4a', 'f4b',
|
||||||
|
'webm', 'ogg', 'ogv', 'oga', 'ogx', 'spx', 'opus',
|
||||||
|
'mkv', 'mka', 'mk3d',
|
||||||
|
'avi', 'divx',
|
||||||
|
'mov',
|
||||||
|
'asf', 'wmv', 'wma',
|
||||||
|
'3gp', '3g2',
|
||||||
|
'mp3',
|
||||||
|
'flac',
|
||||||
|
'ape',
|
||||||
|
'wav',
|
||||||
|
'f4f', 'f4m', 'm3u8', 'smil'):
|
||||||
|
return guess.rstrip('/')
|
||||||
else:
|
else:
|
||||||
return default_ext
|
return default_ext
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue