youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 79f82953039f832576f6d0202c7bbeaa2fd390c0
parent 400e58103d97d54f858dd70c62e1070de8d3c718
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Tue,  7 Jan 2014 05:34:14 +0100

Use original Referer URL in Brightcove requests (Fixes #2110)

Diffstat:
Myoutube_dl/extractor/brightcove.py | 10+++++++---
Myoutube_dl/extractor/generic.py | 3++-
Myoutube_dl/utils.py | 4++--
3 files changed, 11 insertions(+), 6 deletions(-)

diff --git 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 @@ -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 @@ -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)