mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-12-14 20:25:19 +00:00
[ie/youtube] Add request_no_ads extractor-arg (#15145)
Default is `true` for unauthenticated users. Default is `false` if logged-in cookies have been passed to yt-dlp. Using `true` results in a loss of premium formats. Closes #15144 Authored by: WhatAmISupposedToPutHere
This commit is contained in:
committed by
GitHub
parent
2a777ecbd5
commit
56ea3a00ea
@@ -2628,18 +2628,29 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||
def _get_checkok_params():
|
||||
return {'contentCheckOk': True, 'racyCheckOk': True}
|
||||
|
||||
@classmethod
|
||||
def _generate_player_context(cls, sts=None):
|
||||
def _generate_player_context(self, sts=None):
|
||||
context = {
|
||||
'html5Preference': 'HTML5_PREF_WANTS',
|
||||
}
|
||||
if sts is not None:
|
||||
context['signatureTimestamp'] = sts
|
||||
|
||||
playback_context = {
|
||||
'contentPlaybackContext': context,
|
||||
}
|
||||
|
||||
# The 'adPlaybackContext'/'request_no_ads' workaround results in a loss of premium formats.
|
||||
# Only default to 'true' if the user is unauthenticated, since we can't reliably detect all
|
||||
# types of premium accounts (e.g. YTMusic Premium), and since premium users don't have ads.
|
||||
default_arg_value = 'false' if self.is_authenticated else 'true'
|
||||
if self._configuration_arg('request_no_ads', [default_arg_value])[0] != 'false':
|
||||
playback_context['adPlaybackContext'] = {
|
||||
'pyv': True,
|
||||
}
|
||||
|
||||
return {
|
||||
'playbackContext': {
|
||||
'contentPlaybackContext': context,
|
||||
},
|
||||
**cls._get_checkok_params(),
|
||||
'playbackContext': playback_context,
|
||||
**self._get_checkok_params(),
|
||||
}
|
||||
|
||||
def _get_config_po_token(self, client: str, context: _PoTokenContext):
|
||||
|
||||
Reference in New Issue
Block a user