mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 06:37:07 -05:00 
			
		
		
		
	Use original Referer URL in Brightcove requests (Fixes #2110)
This commit is contained in:
		@@ -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])
 | 
			
		||||
 
 | 
			
		||||
@@ -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(
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user