aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--youtube_dl/extractor/extractors.py1
-rw-r--r--youtube_dl/extractor/rai.py26
2 files changed, 27 insertions, 0 deletions
diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py
index 9c9739ad2..d8f9f94cc 100644
--- a/youtube_dl/extractor/extractors.py
+++ b/youtube_dl/extractor/extractors.py
@@ -857,6 +857,7 @@ from .rai import (
RaiPlayIE,
RaiPlayLiveIE,
RaiIE,
+ RaiPlaylistIE,
)
from .rbmaradio import RBMARadioIE
from .rds import RDSIE
diff --git a/youtube_dl/extractor/rai.py b/youtube_dl/extractor/rai.py
index 5bf64a56b..625458380 100644
--- a/youtube_dl/extractor/rai.py
+++ b/youtube_dl/extractor/rai.py
@@ -455,3 +455,29 @@ class RaiIE(RaiBaseIE):
info.update(relinker_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)