aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2014-01-07 05:34:14 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2014-01-07 05:34:14 +0100
commit79f82953039f832576f6d0202c7bbeaa2fd390c0 (patch)
tree245362cb28544d73f9acfcd97727c4d28ba9c082
parent400e58103d97d54f858dd70c62e1070de8d3c718 (diff)
Use original Referer URL in Brightcove requests (Fixes #2110)
-rw-r--r--youtube_dl/extractor/brightcove.py10
-rw-r--r--youtube_dl/extractor/generic.py3
-rw-r--r--youtube_dl/utils.py4
3 files changed, 11 insertions, 6 deletions
diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py
index 4351565d5..4ba3f7c42 100644
--- a/youtube_dl/extractor/brightcove.py
+++ b/youtube_dl/extractor/brightcove.py
@@ -14,6 +14,7 @@ from ..utils import (
compat_urllib_request,
ExtractorError,
+ unsmuggle_url,
)
@@ -121,6 +122,8 @@ class BrightcoveIE(InfoExtractor):
return None
def _real_extract(self, url):
+ url, smuggled_data = unsmuggle_url(url, {})
+
# Change the 'videoId' and others field to '@videoPlayer'
url = re.sub(r'(?<=[?&])(videoI(d|D)|bctid)', '%40videoPlayer', url)
# Change bckey (used by bcove.me urls) to playerKey
@@ -131,9 +134,10 @@ class BrightcoveIE(InfoExtractor):
videoPlayer = query.get('@videoPlayer')
if videoPlayer:
- return self._get_video_info(videoPlayer[0], query_str, query,
- # We set the original url as the default 'Referer' header
- referer=url)
+ # We set the original url as the default 'Referer' header
+ referer = smuggled_data.get('Referer', url)
+ return self._get_video_info(
+ videoPlayer[0], query_str, query, referer=referer)
else:
player_key = query['playerKey']
return self._get_playlist_info(player_key[0])
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
index 2bfdf8f01..7d0e117de 100644
--- a/youtube_dl/extractor/generic.py
+++ b/youtube_dl/extractor/generic.py
@@ -225,7 +225,8 @@ class GenericIE(InfoExtractor):
bc_url = BrightcoveIE._extract_brightcove_url(webpage)
if bc_url is not None:
self.to_screen('Brightcove video detected.')
- return self.url_result(bc_url, 'Brightcove')
+ surl = smuggle_url(bc_url, {'Referer': url})
+ return self.url_result(surl, 'Brightcove')
# Look for embedded (iframe) Vimeo player
mobj = re.search(
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 918a127ca..0b0d1eb90 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -1027,9 +1027,9 @@ def smuggle_url(url, data):
return url + u'#' + sdata
-def unsmuggle_url(smug_url):
+def unsmuggle_url(smug_url, default=None):
if not '#__youtubedl_smuggle' in smug_url:
- return smug_url, None
+ return smug_url, default
url, _, sdata = smug_url.rpartition(u'#')
jsond = compat_parse_qs(sdata)[u'__youtubedl_smuggle'][0]
data = json.loads(jsond)