commit 5399ab3f0c63d47d44a7f8c3506192775f2605d3
parent b91a7a4e5e6221d6fdf8e4074fbc3e9b94a18602
Author: Sergey M․ <dstftw@gmail.com>
Date: Sun, 4 Feb 2018 07:52:50 +0700
[brightcove] Pass embed page URL as referrer (closes #15486)
Diffstat:
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py
@@ -690,10 +690,17 @@ class BrightcoveNewIE(AdobePassIE):
webpage, 'policy key', group='pk')
api_url = 'https://edge.api.brightcove.com/playback/v1/accounts/%s/videos/%s' % (account_id, video_id)
- try:
- json_data = self._download_json(api_url, video_id, headers={
- 'Accept': 'application/json;pk=%s' % policy_key
+ headers = {
+ 'Accept': 'application/json;pk=%s' % policy_key,
+ }
+ referrer = smuggled_data.get('referrer')
+ if referrer:
+ headers.update({
+ 'Referer': referrer,
+ 'Origin': re.search(r'https?://[^/]+', referrer).group(0),
})
+ try:
+ json_data = self._download_json(api_url, video_id, headers=headers)
except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
json_data = self._parse_json(e.cause.read().decode(), video_id)[0]
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
@@ -2280,7 +2280,10 @@ class GenericIE(InfoExtractor):
# Look for Brightcove New Studio embeds
bc_urls = BrightcoveNewIE._extract_urls(self, webpage)
if bc_urls:
- return self.playlist_from_matches(bc_urls, video_id, video_title, ie='BrightcoveNew')
+ return self.playlist_from_matches(
+ bc_urls, video_id, video_title,
+ getter=lambda x: smuggle_url(x, {'referrer': url}),
+ ie='BrightcoveNew')
# Look for Nexx embeds
nexx_urls = NexxIE._extract_urls(webpage)