浏览代码

[raiplay:playlist] Add extractor

Timendum 7 年之前
父节点
当前提交
d21d0ba6c1
共有 2 个文件被更改,包括 27 次插入0 次删除
  1. 1 0
      youtube_dl/extractor/extractors.py
  2. 26 0
      youtube_dl/extractor/rai.py

+ 1 - 0
youtube_dl/extractor/extractors.py

@@ -857,6 +857,7 @@ from .rai import (
     RaiPlayIE,
     RaiPlayIE,
     RaiPlayLiveIE,
     RaiPlayLiveIE,
     RaiIE,
     RaiIE,
+    RaiPlaylistIE,
 )
 )
 from .rbmaradio import RBMARadioIE
 from .rbmaradio import RBMARadioIE
 from .rds import RDSIE
 from .rds import RDSIE

+ 26 - 0
youtube_dl/extractor/rai.py

@@ -455,3 +455,29 @@ class RaiIE(RaiBaseIE):
         info.update(relinker_info)
         info.update(relinker_info)
 
 
         return info
         return info
+
+
+class RaiPlaylistIE(InfoExtractor):
+    _VALID_URL = r'https?://(?:www\.)?raiplay\.it/programmi/(?P<id>[^/]+)'
+    _TESTS = [{
+        'url': 'http://www.raiplay.it/programmi/nondirloalmiocapo/',
+        'info_dict': {
+            'id': 'nondirloalmiocapo',
+            'title': 'Non dirlo al mio capo',
+        },
+        'playlist_mincount': 12,
+    }]
+
+    def _real_extract(self, url):
+        playlist_id = self._match_id(url)
+        webpage = self._download_webpage(url, playlist_id)
+        title = self._html_search_meta('programma', webpage, default=None)
+        video_urls = re.findall(' href="(/raiplay/video.+)"', webpage)
+        video_urls = [urljoin(url, video_url) for video_url in video_urls]
+        entries = [
+            self.url_result(
+                video_url,
+                RaiPlayIE.ie_key())
+            for video_url in video_urls if RaiPlayIE.suitable(video_url)
+        ]
+        return self.playlist_result(entries, playlist_id, title)