Merge pull request #8408 from remitamine/dash
authorremitamine <remitamine@gmail.com>
Sat, 6 Feb 2016 05:26:02 +0000 (06:26 +0100)
committerremitamine <remitamine@gmail.com>
Sat, 6 Feb 2016 05:26:02 +0000 (06:26 +0100)
Add generic support for mpd manifests(dash formats)

1  2 
youtube_dl/extractor/youtube.py

index 9b346d27aee81fea98c85fd98e6f6269fbe93e79,828f5d1f4b0dbe3245a9fff6076553cd5dfbb87c..63abe5477558ab23f7f39ef420b0b8119898ba20
@@@ -369,7 -369,6 +369,7 @@@ class YoutubeIE(YoutubeBaseInfoExtracto
          # RTMP (unnamed)
          '_rtmp': {'protocol': 'rtmp'},
      }
 +    _SUBTITLE_FORMATS = ('ttml', 'vtt')
  
      IE_NAME = 'youtube'
      _TESTS = [
              if lang in sub_lang_list:
                  continue
              sub_formats = []
 -            for ext in ['sbv', 'vtt', 'srt']:
 +            for ext in self._SUBTITLE_FORMATS:
                  params = compat_urllib_parse.urlencode({
                      'lang': lang,
                      'v': video_id,
              for lang_node in caption_list.findall('target'):
                  sub_lang = lang_node.attrib['lang_code']
                  sub_formats = []
 -                for ext in ['sbv', 'vtt', 'srt']:
 +                for ext in self._SUBTITLE_FORMATS:
                      params = compat_urllib_parse.urlencode({
                          'lang': original_lang,
                          'tlang': sub_lang,
          # Look for the DASH manifest
          if self._downloader.params.get('youtube_include_dash_manifest', True):
              dash_mpd_fatal = True
-             for dash_manifest_url in dash_mpds:
+             for mpd_url in dash_mpds:
                  dash_formats = {}
                  try:
                      def decrypt_sig(mobj):
                          dec_s = self._decrypt_signature(s, video_id, player_url, age_gate)
                          return '/signature/%s' % dec_s
  
-                     dash_manifest_url = re.sub(r'/s/([a-fA-F0-9\.]+)', decrypt_sig, dash_manifest_url)
+                     mpd_url = re.sub(r'/s/([a-fA-F0-9\.]+)', decrypt_sig, mpd_url)
  
-                     for df in self._extract_dash_manifest_formats(
-                             dash_manifest_url, video_id, fatal=dash_mpd_fatal,
-                             namespace='urn:mpeg:DASH:schema:MPD:2011', formats_dict=self._formats):
+                     for df in self._extract_mpd_formats(
+                             mpd_url, video_id, fatal=dash_mpd_fatal,
+                             formats_dict=self._formats):
                          # Do not overwrite DASH format found in some previous DASH manifest
                          if df['format_id'] not in dash_formats:
                              dash_formats[df['format_id']] = df