diff options
author | bashonly <88596187+bashonly@users.noreply.github.com> | 2024-07-08 17:04:48 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-08 22:04:48 +0000 |
commit | 297b0a379282a15c80d82d51f3757c961db2dae1 (patch) | |
tree | bdf8c08d89b5a5ad1314430acd0166215ef7366e | |
parent | 6c056ea7aeb03660281653a9668547f2548f194f (diff) |
[ie/youtube] Fix JS `n` function name extraction (#10390)
Fixes nsig decoding for player b22ef6e7
Closes #10391
Authored by: bashonly, seproDev
Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
-rw-r--r-- | test/test_youtube_signature.py | 4 | ||||
-rw-r--r-- | yt_dlp/extractor/youtube.py | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/test/test_youtube_signature.py b/test/test_youtube_signature.py index b0f3269e1..a14bef511 100644 --- a/test/test_youtube_signature.py +++ b/test/test_youtube_signature.py @@ -167,6 +167,10 @@ _NSIG_TESTS = [ 'https://www.youtube.com/s/player/590f65a6/player_ias.vflset/en_US/base.js', '1tm7-g_A9zsI8_Lay_', 'xI4Vem4Put_rOg', ), + ( + 'https://www.youtube.com/s/player/b22ef6e7/player_ias.vflset/en_US/base.js', + 'b6HcntHGkvBLk_FRf', 'kNPW6A7FyP2l8A', + ), ] diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index 18e0ee91c..bb043afab 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -3130,7 +3130,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): def _extract_n_function_name(self, jscode): funcname, idx = self._search_regex( - r'\.get\("n"\)\)&&\(b=(?P<nfunc>[a-zA-Z0-9$]+)(?:\[(?P<idx>\d+)\])?\([a-zA-Z0-9]\)', + r'''(?x)(?:\.get\("n"\)\)&&\(b=|b=String\.fromCharCode\(110\),c=a\.get\(b\)\)&&\(c=) + (?P<nfunc>[a-zA-Z0-9$]+)(?:\[(?P<idx>\d+)\])?\([a-zA-Z0-9]\)''', jscode, 'Initial JS player n function name', group=('nfunc', 'idx')) if not idx: return funcname |