ソースを参照

[extractor/generic] Detect DASH manifests and extract mpd formats

Sergey M․ 9 年 前
コミット
1b840245bd
1 ファイル変更7 行追加1 行削除
  1. 7 1
      youtube_dl/extractor/generic.py

+ 7 - 1
youtube_dl/extractor/generic.py

@@ -1291,7 +1291,7 @@ class GenericIE(InfoExtractor):
 
 
         self.report_extraction(video_id)
         self.report_extraction(video_id)
 
 
-        # Is it an RSS feed, a SMIL file or a XSPF playlist?
+        # Is it an RSS feed, a SMIL file, an XSPF playlist or a MPD manifest?
         try:
         try:
             doc = compat_etree_fromstring(webpage.encode('utf-8'))
             doc = compat_etree_fromstring(webpage.encode('utf-8'))
             if doc.tag == 'rss':
             if doc.tag == 'rss':
@@ -1300,6 +1300,12 @@ class GenericIE(InfoExtractor):
                 return self._parse_smil(doc, url, video_id)
                 return self._parse_smil(doc, url, video_id)
             elif doc.tag == '{http://xspf.org/ns/0/}playlist':
             elif doc.tag == '{http://xspf.org/ns/0/}playlist':
                 return self.playlist_result(self._parse_xspf(doc, video_id), video_id)
                 return self.playlist_result(self._parse_xspf(doc, video_id), video_id)
+            elif re.match(r'(?i)^(?:{[^}]+})?MPD$', doc.tag):
+                return {
+                    'id': video_id,
+                    'title': compat_urllib_parse_unquote(os.path.splitext(url_basename(url))[0]),
+                    'formats': self._parse_mpd_formats(doc, video_id),
+                }
         except compat_xml_parse_error:
         except compat_xml_parse_error:
             pass
             pass