diff options
| author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2015-07-20 19:34:24 +0200 | 
|---|---|---|
| committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2015-07-20 19:34:24 +0200 | 
| commit | 2ee8f5d80f8eb80a28c0012b32f1abff9b633c1c (patch) | |
| tree | bb4448a864d358581eb1a50a2d6943de8a18dcb6 /youtube_dl/extractor/youtube.py | |
| parent | 3f302bca8cf29f618d1f1c2fb7bc4ea9538af805 (diff) | |
| parent | 8a1a26ce4c64d7a2c142718fc56f46d9a1c2c4f2 (diff) | |
Merge remote-tracking branch 'yan12125/download-dash-segments' (#5886)
Diffstat (limited to 'youtube_dl/extractor/youtube.py')
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 27 | 
1 files changed, 26 insertions, 1 deletions
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index e7f5c7861..9a08924ef 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -535,7 +535,25 @@ class YoutubeIE(YoutubeBaseInfoExtractor):                  'uploader': 'dorappi2000',                  'formats': 'mincount:33',              }, -        } +        }, +        # DASH manifest with segment_list +        { +            'url': 'https://www.youtube.com/embed/CsmdDsKjzN8', +            'md5': '8ce563a1d667b599d21064e982ab9e31', +            'info_dict': { +                'id': 'CsmdDsKjzN8', +                'ext': 'mp4', +                'upload_date': '20150510', +                'uploader': 'Airtek', +                'description': 'Retransmisión en directo de la XVIII media maratón de Zaragoza.', +                'uploader_id': 'UCzTzUmjXxxacNnL8I3m4LnQ', +                'title': 'Retransmisión XVIII Media maratón Zaragoza 2015', +            }, +            'params': { +                'youtube_include_dash_manifest': True, +                'format': '135',  # bestvideo +            } +        },      ]      def __init__(self, *args, **kwargs): @@ -826,6 +844,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):                      # TODO implement WebVTT downloading                      pass                  elif mime_type.startswith('audio/') or mime_type.startswith('video/'): +                    segment_list = r.find('{urn:mpeg:DASH:schema:MPD:2011}SegmentList')                      format_id = r.attrib['id']                      video_url = url_el.text                      filesize = int_or_none(url_el.attrib.get('{http://youtube.com/yt/2012/10/10}contentLength')) @@ -839,6 +858,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor):                          'filesize': filesize,                          'fps': int_or_none(r.attrib.get('frameRate')),                      } +                    if segment_list is not None: +                        f.update({ +                            'initialization_url': segment_list.find('{urn:mpeg:DASH:schema:MPD:2011}Initialization').attrib['sourceURL'], +                            'segment_urls': [segment.attrib.get('media') for segment in segment_list.findall('{urn:mpeg:DASH:schema:MPD:2011}SegmentURL')], +                            'protocol': 'http_dash_segments', +                        })                      try:                          existing_format = next(                              fo for fo in formats  | 
