From b8f701418de9b3be6e9c886373a26b2f4909f9b1 Mon Sep 17 00:00:00 2001 From: John Green Date: Sun, 12 Apr 2020 18:34:58 +0100 Subject: [PATCH] Fixes issue #24668 --- youtube_dl/extractor/brightcove.py | 27 +++++++++++++++++++++++++++ youtube_dl/extractor/extractors.py | 1 + 2 files changed, 28 insertions(+) diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index 85001b3ad..b78df3cca 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -667,3 +667,30 @@ class BrightcoveNewIE(AdobePassIE): return self._parse_brightcove_metadata( json_data, video_id, headers=headers) + + +class BrightcoveServicesIE(InfoExtractor): + IE_NAME = 'brightcove:services' + _VALID_URL = r'https?://.*\.brightcove\.services/\?(?Pvideo|playlist)Id=(?P\d+)' + _TESTS = [{ + 'url': 'https://metoperafree.brightcove.services/?videoId=6146557024001', + 'info_dict': { + 'id': '102076671001', + 'ext': 'mp4', + }, + # 'params': { + # 'skip_download': True, + # }, + }] + + def _real_extract(self, url): + content_type, video_id = re.match(self._VALID_URL, url).groups() + webpage = self._download_webpage(url, video_id) + player_url = self._html_search_regex(r'(https://players.brightcove.net/\d+/[^/]+_[^/]+/index.min.js)', webpage, 'player_url') + valid_player_url = r'https://players.brightcove.net/(?P\d+)/(?P[^/]+)_(?P[^/]+)/index.min.js' + account_id, player_id, embed = re.match(valid_player_url, player_url).groups() + return { + '_type': 'url', + 'url': 'https://players.brightcove.net/%s/%s_%s/index.html?%sId=%s' % (account_id, player_id, embed, content_type, video_id), + 'ie_key': 'BrightcoveNew' + } diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index e407ab3d9..8a82a1e93 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -131,6 +131,7 @@ from .breakcom import BreakIE from .brightcove import ( BrightcoveLegacyIE, BrightcoveNewIE, + BrightcoveServicesIE, ) from .businessinsider import BusinessInsiderIE from .buzzfeed import BuzzFeedIE