1
0
Fork 0
mirror of https://github.com/blackjack4494/yt-dlc.git synced 2024-12-22 07:43:08 +00:00

[youtube] ultimate age gate fix

This commit is contained in:
Unknown 2020-10-26 04:32:37 +01:00
parent ff3c7af428
commit fb2c9277bc

View file

@ -1742,6 +1742,13 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
add_dash_mpd_pr(pl_response) add_dash_mpd_pr(pl_response)
return 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 = {} player_response = {}
# Get video info # Get video info
@ -1755,8 +1762,17 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
# this can be viewed without login into Youtube # this can be viewed without login into Youtube
url = proto + '://www.youtube.com/embed/%s' % video_id url = proto + '://www.youtube.com/embed/%s' % video_id
embed_webpage = self._download_webpage(url, video_id, 'Downloading embed webpage') 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) ext = extract_embedded_config(embed_webpage, video_id)
if re.search(r'player-unavailable">', embed_webpage) is not None: # 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 # TODO apply this patch when Support for Python 2.6(!) and above drops
if ({'VISITOR_INFO1_LIVE', 'HSID', 'SSID', 'SID'} <= cookie_keys if ({'VISITOR_INFO1_LIVE', 'HSID', 'SSID', 'SID'} <= cookie_keys