1
0
mirror of https://github.com/ytdl-org/youtube-dl synced 2025-12-04 10:33:48 +00:00

[YouTube] Revert forcing player JS by default

* still leaving the parameters in place

thx bashonly for confirming this suggestion
This commit is contained in:
dirkf 2025-11-20 17:29:25 +00:00
parent 6315f4b1df
commit d0283f5385
2 changed files with 19 additions and 18 deletions

View File

@ -1699,7 +1699,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
self._player_cache = {} self._player_cache = {}
def _get_player_js_version(self): def _get_player_js_version(self):
player_js_version = self.get_param('youtube_player_js_version') or '20348@0004de42' player_js_version = self.get_param('youtube_player_js_version')
if player_js_version:
sts_hash = self._search_regex( sts_hash = self._search_regex(
('^actual$(^)?(^)?', r'^([0-9]{5,})@([0-9a-f]{8,})$'), ('^actual$(^)?(^)?', r'^([0-9]{5,})@([0-9a-f]{8,})$'),
player_js_version, 'player_js_version', group=(1, 2), default=None) player_js_version, 'player_js_version', group=(1, 2), default=None)
@ -1723,18 +1724,18 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
ytcfgs = ytcfgs + ({'PLAYER_JS_URL': player_url},) ytcfgs = ytcfgs + ({'PLAYER_JS_URL': player_url},)
player_url = traverse_obj( player_url = traverse_obj(
ytcfgs, (Ellipsis, 'PLAYER_JS_URL'), (Ellipsis, 'WEB_PLAYER_CONTEXT_CONFIGS', Ellipsis, 'jsUrl'), ytcfgs, (Ellipsis, 'PLAYER_JS_URL'), (Ellipsis, 'WEB_PLAYER_CONTEXT_CONFIGS', Ellipsis, 'jsUrl'),
get_all=False, expected_type=lambda u: urljoin('https://www.youtube.com', u)) get_all=False, expected_type=self._yt_urljoin)
player_id_override = self._get_player_js_version()[1] requested_js_variant = self.get_param('youtube_player_js_variant')
requested_js_variant = self.get_param('youtube_player_js_variant') or 'main'
variant_js = next( variant_js = next(
(v for k, v in self._PLAYER_JS_VARIANT_MAP if k == requested_js_variant), (v for k, v in self._PLAYER_JS_VARIANT_MAP if k == requested_js_variant),
None) None)
if variant_js: if variant_js:
player_id_override = self._get_player_js_version()[1]
player_id = player_id_override or self._extract_player_info(player_url) player_id = player_id_override or self._extract_player_info(player_url)
original_url = player_url original_url = player_url
player_url = '/s/player/{0}/{1}'.format(player_id, variant_js) player_url = self._yt_urljoin(
'/s/player/{0}/{1}'.format(player_id, variant_js))
if original_url != player_url: if original_url != player_url:
self.write_debug( self.write_debug(
'Forcing "{0}" player JS variant for player {1}\n' 'Forcing "{0}" player JS variant for player {1}\n'
@ -1748,7 +1749,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
requested_js_variant, ','.join(k for k, _ in self._PLAYER_JS_VARIANT_MAP)), requested_js_variant, ','.join(k for k, _ in self._PLAYER_JS_VARIANT_MAP)),
only_once=True) only_once=True)
return urljoin('https://www.youtube.com', player_url) return player_url
def _download_player_url(self, video_id, fatal=False): def _download_player_url(self, video_id, fatal=False):
res = self._download_webpage( res = self._download_webpage(

View File

@ -421,12 +421,12 @@ def parseOpts(overrideArguments=None):
action='store', dest='youtube_player_js_variant', action='store', dest='youtube_player_js_variant',
help='For YouTube, the player javascript variant to use for n/sig deciphering; `actual` to follow the site; default `%default`.', help='For YouTube, the player javascript variant to use for n/sig deciphering; `actual` to follow the site; default `%default`.',
choices=('actual', 'main', 'tcc', 'tce', 'es5', 'es6', 'tv', 'tv_es6', 'phone', 'tablet'), choices=('actual', 'main', 'tcc', 'tce', 'es5', 'es6', 'tv', 'tv_es6', 'phone', 'tablet'),
default='main', metavar='VARIANT') default='actual', metavar='VARIANT')
video_format.add_option( video_format.add_option(
'--youtube-player-js-version', '--youtube-player-js-version',
action='store', dest='youtube_player_js_version', action='store', dest='youtube_player_js_version',
help='For YouTube, the player javascript version to use for n/sig deciphering, specified as `signature_timestamp@hash`, or `actual` to follow the site; default `%default`', help='For YouTube, the player javascript version to use for n/sig deciphering, specified as `signature_timestamp@hash`, or `actual` to follow the site; default `%default`',
default='20348@0004de42', metavar='STS@HASH') default='actual', metavar='STS@HASH')
video_format.add_option( video_format.add_option(
'--merge-output-format', '--merge-output-format',
action='store', dest='merge_output_format', metavar='FORMAT', default=None, action='store', dest='merge_output_format', metavar='FORMAT', default=None,