[youtube:user] Support another URL form
[youtube-dl] / youtube_dl / extractor / wdr.py
index 88369d3f2385f63265f89077fd5637ec35d1a158..6b83a2a04264e14883c09e98ef59895a520e792b 100644 (file)
@@ -6,10 +6,10 @@ import re
 from .common import InfoExtractor
 from ..utils import (
     determine_ext,
+    ExtractorError,
     js_to_json,
     strip_jsonp,
     unified_strdate,
-    ExtractorError,
     update_url_query,
     urlhandle_detect_ext,
 )
@@ -17,7 +17,7 @@ from ..utils import (
 
 class WDRIE(InfoExtractor):
     _CURRENT_MAUS_URL = r'https?://(?:www\.)wdrmaus.de/(?:[^/]+/){1,2}[^/?#]+\.php5'
-    _PAGE_REGEX = r'/(?:mediathek/)?(?P<media_type>[^/]+)/(?P<type>[^/]+)/(?P<display_id>.+)\.html'
+    _PAGE_REGEX = r'/(?:mediathek/)?[^/]+/(?P<type>[^/]+)/(?P<display_id>.+)\.html'
     _VALID_URL = r'(?P<page_url>https?://(?:www\d\.)?wdr\d?\.de)' + _PAGE_REGEX + '|' + _CURRENT_MAUS_URL
 
     _TESTS = [
@@ -34,7 +34,8 @@ class WDRIE(InfoExtractor):
                 'description': 'md5:87be8ff14d8dfd7a7ee46f0299b52318',
                 'is_live': False,
                 'subtitles': {'de': [{
-                    'url': 'http://ondemand-ww.wdr.de/medp/fsk0/105/1058683/1058683_12220974.xml'
+                    'url': 'http://ondemand-ww.wdr.de/medp/fsk0/105/1058683/1058683_12220974.xml',
+                    'ext': 'ttml',
                 }]},
             },
         },
@@ -162,10 +163,9 @@ class WDRIE(InfoExtractor):
 
                 ext = determine_ext(medium_url)
                 if ext == 'm3u8':
-                    m3u_fmt = self._extract_m3u8_formats(
+                    formats.extend(self._extract_m3u8_formats(
                         medium_url, display_id, 'mp4', 'm3u8_native',
-                        m3u8_id='hls')
-                    formats.extend(m3u_fmt)
+                        m3u8_id='hls'))
                 elif ext == 'f4m':
                     manifest_url = update_url_query(
                         medium_url, {'hdcore': '3.2.0', 'plugin': 'aasp-3.2.0.77.18'})
@@ -185,11 +185,14 @@ class WDRIE(InfoExtractor):
                         a_format['ext'] = ext
                     formats.append(a_format)
 
+        self._sort_formats(formats)
+
         subtitles = {}
         caption_url = metadata_media_resource.get('captionURL')
         if caption_url:
             subtitles['de'] = [{
-                'url': caption_url
+                'url': caption_url,
+                'ext': 'ttml',
             }]
 
         title = metadata_tracker_data.get('trackerClipTitle')
@@ -206,8 +209,6 @@ class WDRIE(InfoExtractor):
         if upload_date:
             upload_date = unified_strdate(upload_date)
 
-        self._sort_formats(formats)
-
         return {
             'id': metadata_tracker_data.get('trackerClipId', display_id),
             'display_id': display_id,