mirror of
https://github.com/yt-dlp/yt-dlp
synced 2024-12-25 21:59:04 +01:00
[ie/youtube] Add age-gate workaround for some embeddable videos (#11821)
Closes #11296 Authored by: bashonly
This commit is contained in:
parent
1a8851b689
commit
09a6c68712
1 changed files with 12 additions and 3 deletions
|
@ -1496,7 +1496,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
},
|
},
|
||||||
# Age-gate videos. See https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-888837000
|
# Age-gate videos. See https://github.com/yt-dlp/yt-dlp/pull/575#issuecomment-888837000
|
||||||
{
|
{
|
||||||
'note': 'Embed allowed age-gate video',
|
'note': 'Embed allowed age-gate video; works with web_embedded',
|
||||||
'url': 'https://youtube.com/watch?v=HtVdAasjOgU',
|
'url': 'https://youtube.com/watch?v=HtVdAasjOgU',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'HtVdAasjOgU',
|
'id': 'HtVdAasjOgU',
|
||||||
|
@ -1526,7 +1526,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'heatmap': 'count:100',
|
'heatmap': 'count:100',
|
||||||
'timestamp': 1401991663,
|
'timestamp': 1401991663,
|
||||||
},
|
},
|
||||||
'skip': 'Age-restricted; requires authentication',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'note': 'Age-gate video with embed allowed in public site',
|
'note': 'Age-gate video with embed allowed in public site',
|
||||||
|
@ -4013,10 +4012,20 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
else:
|
else:
|
||||||
prs.append(pr)
|
prs.append(pr)
|
||||||
|
|
||||||
|
# web_embedded can work around age-gate and age-verification for some embeddable videos
|
||||||
|
if self._is_agegated(pr) and variant != 'web_embedded':
|
||||||
|
append_client(f'web_embedded.{base_client}')
|
||||||
|
# Unauthenticated users will only get web_embedded client formats if age-gated
|
||||||
|
if self._is_agegated(pr) and not self.is_authenticated:
|
||||||
|
self.to_screen(
|
||||||
|
f'{video_id}: This video is age-restricted; some formats may be missing '
|
||||||
|
f'without authentication. {self._login_hint()}', only_once=True)
|
||||||
|
|
||||||
''' This code is pointless while web_creator is in _DEFAULT_AUTHED_CLIENTS
|
''' This code is pointless while web_creator is in _DEFAULT_AUTHED_CLIENTS
|
||||||
# EU countries require age-verification for accounts to access age-restricted videos
|
# EU countries require age-verification for accounts to access age-restricted videos
|
||||||
# If account is not age-verified, _is_agegated() will be truthy for non-embedded clients
|
# If account is not age-verified, _is_agegated() will be truthy for non-embedded clients
|
||||||
if self.is_authenticated and self._is_agegated(pr):
|
embedding_is_disabled = variant == 'web_embedded' and self._is_unplayable(pr)
|
||||||
|
if self.is_authenticated and (self._is_agegated(pr) or embedding_is_disabled):
|
||||||
self.to_screen(
|
self.to_screen(
|
||||||
f'{video_id}: This video is age-restricted and YouTube is requiring '
|
f'{video_id}: This video is age-restricted and YouTube is requiring '
|
||||||
'account age-verification; some formats may be missing', only_once=True)
|
'account age-verification; some formats may be missing', only_once=True)
|
||||||
|
|
Loading…
Reference in a new issue