From d21d0ba6c14e8a6696130090641da4e2028e1bb3 Mon Sep 17 00:00:00 2001 From: Timendum Date: Mon, 23 Oct 2017 15:32:45 +0200 Subject: [PATCH] [raiplay:playlist] Add extractor --- youtube_dl/extractor/extractors.py | 1 + youtube_dl/extractor/rai.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) 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[^/]+)' + _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)