diff options
| -rw-r--r-- | youtube_dl/extractor/brightcove.py | 10 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 3 | ||||
| -rw-r--r-- | youtube_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 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) | 
