[extractor/generic] Add support for xspf playlists
authorSergey M․ <dstftw@gmail.com>
Sun, 9 Aug 2015 13:43:42 +0000 (19:43 +0600)
committerSergey M․ <dstftw@gmail.com>
Sun, 9 Aug 2015 13:43:42 +0000 (19:43 +0600)
youtube_dl/extractor/generic.py

index 901f77304103af4aa28c3cb1104ff23a15da59cc..a382d6be41301417e466e4f81e65f1b372f42c91 100644 (file)
@@ -1198,6 +1198,8 @@ class GenericIE(InfoExtractor):
                 return self._extract_rss(url, video_id, doc)
             elif re.match(r'^(?:{[^}]+})?smil$', doc.tag):
                 return self._parse_smil(doc, url, video_id)
+            elif doc.tag == '{http://xspf.org/ns/0/}playlist':
+                return self.playlist_result(self._parse_xspf(doc, video_id), video_id)
         except compat_xml_parse_error:
             pass
 
@@ -1799,7 +1801,8 @@ class GenericIE(InfoExtractor):
             # here's a fun little line of code for you:
             video_id = os.path.splitext(video_id)[0]
 
-            if determine_ext(video_url) == 'smil':
+            ext = determine_ext(video_url)
+            if ext == 'smil':
                 entries.append({
                     'id': video_id,
                     'formats': self._extract_smil_formats(video_url, video_id),
@@ -1807,6 +1810,8 @@ class GenericIE(InfoExtractor):
                     'title': video_title,
                     'age_limit': age_limit,
                 })
+            elif ext == 'xspf':
+                return self.playlist_result(self._extract_xspf_playlist(video_url, video_id), video_id)
             else:
                 entries.append({
                     'id': video_id,