diff --git a/youtube_dl/extractor/binustv.py b/youtube_dl/extractor/binustv.py new file mode 100644 index 000000000..6fc766a23 --- /dev/null +++ b/youtube_dl/extractor/binustv.py @@ -0,0 +1,35 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor + +# BINUS TV uses YouTube to host videos. However, it uses additional private APIs for other features (i.e. comments). +# This script only uses URLs from the BINUS TV Android app share API (https://binus.bedigital.co.id/app/share/video/). +# Videos from the main BINUS TV website (https://www.binus.tv/video/) can still be extracted using generic extractor. + + +class BinusTVAppIE(InfoExtractor): + _VALID_URL = r'(?:https?://)?(?:www\.)?binus\.bedigital\.co\.id/app/share/video/[^\/]+/[^\/]+/(?P[^/?\0]+)' + _TEST = { + 'url': 'https://binus.bedigital.co.id/app/share/video/7/65156/headline-gerakan-stayforus-mulai-menggema-di-laman-media', + 'info_dict': { + 'id': 'mjH-3DDJLmU', + 'ext': 'mp4', + 'title': '[Headline] Gerakan #StayForUs Mulai Menggema di Laman Media', + 'upload_date': '20200323', + 'description': 'md5:a602c6fba2e474a0d5844489fe42f689', + 'uploader': 'BINUSTV Channel', + 'uploader_id': 'ChannelBINUSTV' + }, + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + webpage = self._download_webpage(url, video_id) + youtube_id = self._search_regex(r'https:\/\/i.ytimg.com\/vi\/([0-9A-Za-z-_]{11})\/default.jpg', webpage, 'youtube_id') + + # Returns the YouTube video + return self.url_result(youtube_id, ie='Youtube') diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 3da5f8020..00860ae7c 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -128,6 +128,7 @@ from .bilibili import ( BilibiliAudioAlbumIE, BiliBiliPlayerIE, ) +from .binustv import BinusTVAppIE from .biobiochiletv import BioBioChileTVIE from .bitchute import ( BitChuteIE,