浏览代码

[jsinterp] Handle `Date` at epoch 0

See yt-dlp/yt_dlp#6400
pukkandan 2 年之前
父节点
当前提交
3e92c60fcd
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 4 0
      test/test_youtube_signature.py
  2. 1 1
      youtube_dl/jsinterp.py

+ 4 - 0
test/test_youtube_signature.py

@@ -67,6 +67,10 @@ _SIG_TESTS = [
 ]
 ]
 
 
 _NSIG_TESTS = [
 _NSIG_TESTS = [
+    (
+        'https://www.youtube.com/s/player/7862ca1f/player_ias.vflset/en_US/base.js',
+        'X_LCxVDjAavgE5t', 'yxJ1dM6iz5ogUg',
+    ),
     (
     (
         'https://www.youtube.com/s/player/9216d1f7/player_ias.vflset/en_US/base.js',
         'https://www.youtube.com/s/player/9216d1f7/player_ias.vflset/en_US/base.js',
         'SLp9F5bwjAdhE9F-', 'gWnb9IK2DJ8Q1w',
         'SLp9F5bwjAdhE9F-', 'gWnb9IK2DJ8Q1w',

+ 1 - 1
youtube_dl/jsinterp.py

@@ -405,7 +405,7 @@ class JSInterpreter(object):
                 left, right = self._separate_at_paren(obj[len(klass):])
                 left, right = self._separate_at_paren(obj[len(klass):])
                 argvals = self.interpret_iter(left, local_vars, allow_recursion)
                 argvals = self.interpret_iter(left, local_vars, allow_recursion)
                 expr = konstr(*argvals)
                 expr = konstr(*argvals)
-                if not expr:
+                if expr is None:
                     raise self.Exception('Failed to parse {klass} {left!r:.100}'.format(**locals()), expr=expr)
                     raise self.Exception('Failed to parse {klass} {left!r:.100}'.format(**locals()), expr=expr)
                 expr = self._dump(expr, local_vars) + right
                 expr = self._dump(expr, local_vars) + right
                 break
                 break