]> jfr.im git - yt-dlp.git/commitdiff
[jsinterp] Fix `_separate`
authorpukkandan <redacted>
Tue, 30 Aug 2022 10:27:17 +0000 (15:57 +0530)
committerpukkandan <redacted>
Tue, 30 Aug 2022 10:36:40 +0000 (16:06 +0530)
Ref: https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1231126941

test/test_youtube_signature.py
yt_dlp/extractor/youtube.py
yt_dlp/jsinterp.py
yt_dlp/version.py

index 2f124a738c9f6816f5eb5f1009c3646c2be93523..717c949540b73d1e830cc32e49b515dcb36ea4d1 100644 (file)
         'https://www.youtube.com/s/player/dc0c6770/player_ias.vflset/en_US/base.js',
         '5EHDMgYLV6HPGk_Mu-kk', 'n9lUJLHbxUI0GQ',
     ),
+    (
+        'https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js',
+        'cgYl-tlYkhjT7A', 'hI7BBr2zUgcmMg',
+    ),
 ]
 
 
index d66732c2fbef89fce7092583b8ee3575bca1fc09..b30dadf9f0b816e9e6c55347820952d8e0224d01 100644 (file)
@@ -2670,7 +2670,7 @@ def _extract_n_function_name(self, jscode):
 
     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, after='2022.08.19')
+        func_code = self.cache.load('youtube-nsig', player_id, after='2022.08.19.1')
         jscode = func_code or self._load_player(video_id, player_url)
         jsi = JSInterpreter(jscode)
 
index 1995e9d0e1a0d52f481986c22b071ce7884e27d9..cadb013a314e4b7e613612457ed5fb892a4f17fb 100644 (file)
@@ -226,7 +226,7 @@ def _regex_flags(cls, expr):
 
     @staticmethod
     def _separate(expr, delim=',', max_split=None):
-        OP_CHARS = '+-*/%&|^=<>!,;'
+        OP_CHARS = '+-*/%&|^=<>!,;{}()[]:'
         if not expr:
             return
         counters = {k: 0 for k in _MATCHING_PARENS.values()}
@@ -243,7 +243,7 @@ def _separate(expr, delim=',', max_split=None):
             elif in_quote == '/' and char in '[]':
                 in_regex_char_group = char == '['
             escaping = not escaping and in_quote and char == '\\'
-            after_op = not in_quote and char in OP_CHARS or (char == ' ' and after_op)
+            after_op = not in_quote and char in OP_CHARS or (char.isspace() and after_op)
 
             if char != delim[pos] or any(counters.values()) or in_quote:
                 pos = 0
index 1ded15df4240a4e77c8c8326bd943154e054bbea..8bfe0a09b466a3d7f69ee0af2a91e765852ea5bf 100644 (file)
@@ -1,6 +1,6 @@
 # Autogenerated by devscripts/update-version.py
 
-__version__ = '2022.08.19.1'
+__version__ = '2022.08.19.2'
 
 RELEASE_GIT_HEAD = '48c88e088'