]> code.delx.au - youtube-cgi/blobdiff - youtube.cgi
changed script prefix/suffix
[youtube-cgi] / youtube.cgi
index 3149343fe286d9281fa595dcc181bc5acdff5ab7..349842fb24b03f22789edfd1e38603bb9583e87c 100755 (executable)
@@ -132,8 +132,8 @@ def get_player_config(doc):
                     return json.loads(line[p1:p2])
 
 def extract_js(script):
-    PREFIX = "(function(){"
-    SUFFIX = "})();\n"
+    PREFIX = "var _yt_player={};(function(g){var window=this;"
+    SUFFIX = ";})(_yt_player);\n"
     assert script.startswith(PREFIX)
     assert script.endswith(SUFFIX)
 
@@ -165,24 +165,27 @@ def decode_signature(js_url, signature):
         stdout=subprocess.PIPE
     )
     js_decode_script = ("""
-        var vm = require("vm");
+        var vm = require('vm');
 
         var sandbox = {
-            window: {
-                location: {},
-                history: {
-                    pushState: function(){}
-                },
-                navigator: {}
+            location: {
+                hash: '',
+                href: '',
+                protocol: 'http:'
+            },
+            history: {
+                pushState: function(){}
             },
             document: {},
             navigator: {},
             signature: %(signature)s,
             transformed_signature: null
         };
+        sandbox.window = sandbox;
 
-        var execstring = ";transformed_signature = %(func_name)s(signature);";
-        vm.runInNewContext(%(code)s + execstring, sandbox);
+        var code_string = %(code)s + ';';
+        var exec_string = 'transformed_signature = %(func_name)s(signature);';
+        vm.runInNewContext(code_string + exec_string, sandbox);
 
         console.log(sandbox.transformed_signature);
     """ % params)