[brightcove] Pass embed page URL as referrer (closes #15486)
authorSergey M․ <dstftw@gmail.com>
Sun, 4 Feb 2018 00:52:50 +0000 (07:52 +0700)
committerSergey M․ <dstftw@gmail.com>
Sun, 4 Feb 2018 00:55:04 +0000 (07:55 +0700)
youtube_dl/extractor/brightcove.py
youtube_dl/extractor/generic.py

index f04505011c39fbfe315763ce8182daf6c2b9f663..f3c0dc3fa438f25e521be7bf6e7ed3ff6c6beb6a 100644 (file)
@@ -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]
index 1d9da8115832126671233101dbc3b51759e63a33..c3f201949bce359b5a097f336965cbbefe6cf37b 100644 (file)
@@ -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)