From a550dfc904a02843a26369ae50dbb7c0febfb30e Mon Sep 17 00:00:00 2001 From: sepro Date: Wed, 26 Mar 2025 00:40:58 +0100 Subject: [PATCH] [ie/youtube] Fix signature and nsig extraction for player `4fcd6e4a` (#12748) Closes #12746 Authored by: seproDev --- test/test_youtube_signature.py | 9 +++++++++ yt_dlp/extractor/youtube/_video.py | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/test/test_youtube_signature.py b/test/test_youtube_signature.py index 453caacd65..c79fdc9df8 100644 --- a/test/test_youtube_signature.py +++ b/test/test_youtube_signature.py @@ -88,6 +88,11 @@ _SIG_TESTS = [ '2aq0aqSyOoJXtK73m-uME_jv7-pT15gOFC02RFkGMqWpzEICs69VdbwQ0LDp1v7j8xx92efCJlYFYb1sUkkBSPOlPmXgIARw8JQ0qOAOAA', '0aqSyOoJXtK73m-uME_jv7-pT15gOFC02RFkGMqWpz2ICs6EVdbwQ0LDp1v7j8xx92efCJlYFYb1sUkkBSPOlPmXgIARw8JQ0qOAOAA', ), + ( + 'https://www.youtube.com/s/player/4fcd6e4a/player_ias.vflset/en_US/base.js', + '2aq0aqSyOoJXtK73m-uME_jv7-pT15gOFC02RFkGMqWpzEICs69VdbwQ0LDp1v7j8xx92efCJlYFYb1sUkkBSPOlPmXgIARw8JQ0qOAOAA', + 'wAOAOq0QJ8ARAIgXmPlOPSBkkUs1bYFYlJCfe29xx8q7v1pDL0QwbdV96sCIEzpWqMGkFR20CFOg51Tp-7vj_EMu-m37KtXJoOySqa0', + ), ] _NSIG_TESTS = [ @@ -243,6 +248,10 @@ _NSIG_TESTS = [ 'https://www.youtube.com/s/player/363db69b/player_ias.vflset/en_US/base.js', 'eWYu5d5YeY_4LyEDc', 'XJQqf-N7Xra3gg', ), + ( + 'https://www.youtube.com/s/player/4fcd6e4a/player_ias.vflset/en_US/base.js', + 'o_L251jm8yhZkWtBW', 'lXoxI3XvToqn6A', + ), ] diff --git a/yt_dlp/extractor/youtube/_video.py b/yt_dlp/extractor/youtube/_video.py index b7203fd895..16e9a3eed5 100644 --- a/yt_dlp/extractor/youtube/_video.py +++ b/yt_dlp/extractor/youtube/_video.py @@ -2182,6 +2182,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): (?P (?P["\'])(?:(?!(?P=q2)).|\\.)+(?P=q2) \.split\((?P["\'])(?:(?!(?P=q3)).)+(?P=q3)\) + |\[\s*(?:(?P["\'])(?:(?!(?P=q4)).|\\.)*(?P=q4)\s*,?\s*)+\] ) )[;,] ''', jscode, 'global variable', group=('code', 'name', 'value'), default=(None, None, None)) @@ -2199,7 +2200,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): def _extract_n_function_code(self, video_id, player_url): player_id = self._extract_player_info(player_url) - func_code = self.cache.load('youtube-nsig', player_id, min_ver='2025.03.25') + func_code = self.cache.load('youtube-nsig', player_id, min_ver='2025.03.26') jscode = func_code or self._load_player(video_id, player_url) jsi = JSInterpreter(jscode)