diff --git a/test/test_youtube_signature.py b/test/test_youtube_signature.py index c79fdc9df8..ac4b7409fc 100644 --- a/test/test_youtube_signature.py +++ b/test/test_youtube_signature.py @@ -252,6 +252,10 @@ _NSIG_TESTS = [ 'https://www.youtube.com/s/player/4fcd6e4a/player_ias.vflset/en_US/base.js', 'o_L251jm8yhZkWtBW', 'lXoxI3XvToqn6A', ), + ( + 'https://www.youtube.com/s/player/20830619/tv-player-ias.vflset/tv-player-ias.js', + 'ir9-V6cdbCiyKxhr', '9YE85kNjZiS4', + ), ] diff --git a/yt_dlp/extractor/youtube/_video.py b/yt_dlp/extractor/youtube/_video.py index e349b36517..a402550514 100644 --- a/yt_dlp/extractor/youtube/_video.py +++ b/yt_dlp/extractor/youtube/_video.py @@ -2215,7 +2215,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): else: self.write_debug('No global array variable found in player JS') return argnames, re.sub( - rf';\s*if\s*\(\s*typeof\s+[a-zA-Z0-9_$]+\s*===?\s*(?:(["\'])undefined\1|{varname}\[\d+\])\s*\)\s*return\s+{argnames[0]};', + rf';\s*if\s*\(\s*typeof\s+[a-zA-Z0-9_$]+\s*===?\s*(?:(["\'])undefined\1|{re.escape(varname)}\[\d+\])\s*\)\s*return\s+{re.escape(argnames[0])};', ';', code) def _extract_n_function_code(self, video_id, player_url):