summary refs log tree commit diff
diff options
context:
space:
mode:
authorremitamine <remitamine@gmail.com>2016-02-04 01:25:36 +0100
committerremitamine <remitamine@gmail.com>2016-02-04 01:25:36 +0100
commiteadc3ccd504a13487a97172cb8468e12fd8bc068 (patch)
tree0b789e74b29ec6cbd0ad355d7620623d312f661d
parent58be922079a09bc56ff331864b094ba38beaf26e (diff)
downloadyoutube-dl-eadc3ccd504a13487a97172cb8468e12fd8bc068.tar.gz
youtube-dl-eadc3ccd504a13487a97172cb8468e12fd8bc068.tar.xz
youtube-dl-eadc3ccd504a13487a97172cb8468e12fd8bc068.zip
[generic] extract m3u8 formats when mpegurl content type detected
-rw-r--r--youtube_dl/extractor/generic.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
index b18e734c4..c02fe201c 100644
--- a/youtube_dl/extractor/generic.py
+++ b/youtube_dl/extractor/generic.py
@@ -1229,19 +1229,24 @@ class GenericIE(InfoExtractor):
 
         # Check for direct link to a video
         content_type = head_response.headers.get('Content-Type', '')
-        m = re.match(r'^(?P<type>audio|video|application(?=/ogg$))/(?P<format_id>.+)$', content_type)
+        m = re.match(r'^(?P<type>audio|video|application(?=/(?:ogg$|(?:vnd\.apple\.|x-)?mpegurl)))/(?P<format_id>.+)$', content_type)
         if m:
             upload_date = unified_strdate(
                 head_response.headers.get('Last-Modified'))
+            formats = []
+            if m.group('format_id').endswith('mpegurl'):
+                formats = self._extract_m3u8_formats(url, video_id, 'mp4')
+            else:
+                formats = [{
+                    'format_id': m.group('format_id'),
+                    'url': url,
+                    'vcodec': 'none' if m.group('type') == 'audio' else None
+                }]
             return {
                 'id': video_id,
                 'title': compat_urllib_parse_unquote(os.path.splitext(url_basename(url))[0]),
                 'direct': True,
-                'formats': [{
-                    'format_id': m.group('format_id'),
-                    'url': url,
-                    'vcodec': 'none' if m.group('type') == 'audio' else None
-                }],
+                'formats': formats,
                 'upload_date': upload_date,
             }