diff options
| -rw-r--r-- | test/test_utils.py | 3 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 17 | 
2 files changed, 19 insertions, 1 deletions
diff --git a/test/test_utils.py b/test/test_utils.py index 4f0d9e481..501355c74 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -242,6 +242,9 @@ class TestUtil(unittest.TestCase):      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/?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):          testxml = '''<root> diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 7dab60bb8..c0325f054 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -922,9 +922,24 @@ def unified_strdate(date_str, day_first=True):  def determine_ext(url, default_ext='unknown_video'):      if url is None:          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):          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:          return default_ext  | 
