diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index d9289e5bf..d70ea8bd9 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1033,6 +1033,7 @@ from .rbgtum import ( RbgTumCourseIE, ) from .rbmaradio import RBMARadioIE +from .rcti import RCTIplusIE from .rds import RDSIE from .redbulltv import ( RedBullTVIE, diff --git a/youtube_dl/extractor/rcti.py b/youtube_dl/extractor/rcti.py new file mode 100644 index 000000000..f79cab9a3 --- /dev/null +++ b/youtube_dl/extractor/rcti.py @@ -0,0 +1,42 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class RCTIplusIE(InfoExtractor): + _VALID_URL = r'https://www\.rctiplus\.com/programs/\d+?/.*?/episode/(?P\d+)/.*' + _TEST = { + 'url': 'https://www.rctiplus.com/programs/540/upin-ipin/episode/5642/esok-puasa-upin-ipin-ep1', + 'md5': 'e9b7c88101aab04d9115e2718dae7260', + 'info_dict': { + 'id': '5642', + 'title': 'Esok Puasa - Upin & Ipin Ep.1', + 'ext': 'm3u8', + }, + 'params': { + 'format': 'bestvideo, bestaudio', + }, + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + title = self._og_search_title(webpage) + + auth_key = self._search_regex( + r'\'Authorization\':"(?P[^"]+)"', webpage, 'auth-key') + request_url = ('https://api.rctiplus.com/api/v1/episode/' + video_id + + '/url?appierid=.1') + json = self._download_json( + request_url, video_id, headers={'Authorization': auth_key}) + video_url = json.get('data').get('url') + + formats = self._extract_m3u8_formats(video_url, video_id) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'formats': formats, + }