mirror of https://github.com/yt-dlp/yt-dlp.git
[youtube] ultimate age gate fix
This commit is contained in:
parent
ff3c7af428
commit
fb2c9277bc
|
@ -1742,6 +1742,13 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||
add_dash_mpd_pr(pl_response)
|
||||
return pl_response
|
||||
|
||||
def extract_embedded_config(embed_webpage, video_id):
|
||||
embedded_config = self._search_regex(
|
||||
r'setConfig\(({.*})\);',
|
||||
embed_webpage, 'ytInitialData', default=None)
|
||||
if embedded_config:
|
||||
return embedded_config
|
||||
|
||||
player_response = {}
|
||||
|
||||
# Get video info
|
||||
|
@ -1755,8 +1762,17 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||
# this can be viewed without login into Youtube
|
||||
url = proto + '://www.youtube.com/embed/%s' % video_id
|
||||
embed_webpage = self._download_webpage(url, video_id, 'Downloading embed webpage')
|
||||
# check if video is only playable on youtube - if so it requires auth (cookies)
|
||||
if re.search(r'player-unavailable">', embed_webpage) is not None:
|
||||
ext = extract_embedded_config(embed_webpage, video_id)
|
||||
# playabilityStatus = re.search(r'{\\\"status\\\":\\\"(?P<playabilityStatus>[^\"]+)\\\"', ext)
|
||||
playable_in_embed = re.search(r'{\\\"playableInEmbed\\\":(?P<playableinEmbed>[^\,]+)', ext)
|
||||
if not playable_in_embed:
|
||||
self.to_screen('Could not determine whether playabale in embed for video %s' % video_id)
|
||||
playable_in_embed = ''
|
||||
else:
|
||||
playable_in_embed = playable_in_embed.group('playableinEmbed')
|
||||
# check if video is only playable on youtube in other words not playable in embed - if so it requires auth (cookies)
|
||||
# if re.search(r'player-unavailable">', embed_webpage) is not None:
|
||||
if playable_in_embed == 'false':
|
||||
'''
|
||||
# TODO apply this patch when Support for Python 2.6(!) and above drops
|
||||
if ({'VISITOR_INFO1_LIVE', 'HSID', 'SSID', 'SID'} <= cookie_keys
|
||||
|
|
Loading…
Reference in New Issue