[YouTube] Revert forcing player JS by default

* still leaving the parameters in place

thx bashonly for confirming this suggestion
pull/29686/merge
dirkf 2 weeks ago
parent 6315f4b1df
commit d0283f5385

@ -1699,16 +1699,17 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
self._player_cache = {}
def _get_player_js_version(self):
player_js_version = self.get_param('youtube_player_js_version') or '20348@0004de42'
sts_hash = self._search_regex(
('^actual$(^)?(^)?', r'^([0-9]{5,})@([0-9a-f]{8,})$'),
player_js_version, 'player_js_version', group=(1, 2), default=None)
if sts_hash:
return sts_hash
self.report_warning(
'Invalid player JS version "{0}" specified. '
'It should be "{1}" or in the format of {2}'.format(
player_js_version, 'actual', 'SignatureTimeStamp@Hash'), only_once=True)
player_js_version = self.get_param('youtube_player_js_version')
if player_js_version:
sts_hash = self._search_regex(
('^actual$(^)?(^)?', r'^([0-9]{5,})@([0-9a-f]{8,})$'),
player_js_version, 'player_js_version', group=(1, 2), default=None)
if sts_hash:
return sts_hash
self.report_warning(
'Invalid player JS version "{0}" specified. '
'It should be "{1}" or in the format of {2}'.format(
player_js_version, 'actual', 'SignatureTimeStamp@Hash'), only_once=True)
return None, None
# *ytcfgs, webpage=None
@ -1723,18 +1724,18 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
ytcfgs = ytcfgs + ({'PLAYER_JS_URL': player_url},)
player_url = traverse_obj(
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))
player_id_override = self._get_player_js_version()[1]
get_all=False, expected_type=self._yt_urljoin)
requested_js_variant = self.get_param('youtube_player_js_variant') or 'main'
requested_js_variant = self.get_param('youtube_player_js_variant')
variant_js = next(
(v for k, v in self._PLAYER_JS_VARIANT_MAP if k == requested_js_variant),
None)
if variant_js:
player_id_override = self._get_player_js_version()[1]
player_id = player_id_override or self._extract_player_info(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:
self.write_debug(
'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)),
only_once=True)
return urljoin('https://www.youtube.com', player_url)
return player_url
def _download_player_url(self, video_id, fatal=False):
res = self._download_webpage(

@ -421,12 +421,12 @@ def parseOpts(overrideArguments=None):
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`.',
choices=('actual', 'main', 'tcc', 'tce', 'es5', 'es6', 'tv', 'tv_es6', 'phone', 'tablet'),
default='main', metavar='VARIANT')
default='actual', metavar='VARIANT')
video_format.add_option(
'--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`',
default='20348@0004de42', metavar='STS@HASH')
default='actual', metavar='STS@HASH')
video_format.add_option(
'--merge-output-format',
action='store', dest='merge_output_format', metavar='FORMAT', default=None,

Loading…
Cancel
Save