summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOmar Roth <omarroth@hotmail.com>2019-01-05 15:23:22 -0600
committerOmar Roth <omarroth@hotmail.com>2019-01-05 15:23:22 -0600
commit7f8349d4b13b371821f73839bf9bf2edff2d5b15 (patch)
treedb6d74c384ed0f7a559663fe2be67d37ab5d0b82
parent4ae57cb475ef64730a13982f94f4810d901bc6b5 (diff)
downloadinvidious-7f8349d4b13b371821f73839bf9bf2edff2d5b15.tar.gz
invidious-7f8349d4b13b371821f73839bf9bf2edff2d5b15.tar.bz2
invidious-7f8349d4b13b371821f73839bf9bf2edff2d5b15.zip
Escape function names in signature extractor
-rw-r--r--src/invidious/signatures.cr8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/invidious/signatures.cr b/src/invidious/signatures.cr
index eaf91902..b2ed89d2 100644
--- a/src/invidious/signatures.cr
+++ b/src/invidious/signatures.cr
@@ -1,15 +1,15 @@
def fetch_decrypt_function(id = "CvFH_6DNRCY")
client = make_client(YT_URL)
- document = client.get("/watch?v=#{id}").body
- url = document.match(/src="(?<url>\/yts\/jsbin\/player-.{9}\/en_US\/base.js)"/).not_nil!["url"]
+ document = client.get("/watch?v=#{id}&gl=US&hl=en&disable_polymer=1").body
+ url = document.match(/src="(?<url>\/yts\/jsbin\/player_ias-.{9}\/en_US\/base.js)"/).not_nil!["url"]
player = client.get(url).body
function_name = player.match(/^(?<name>[^=]+)=function\(a\){a=a\.split\(""\)/m).not_nil!["name"]
- function_body = player.match(/^#{function_name}=function\(a\){(?<body>[^}]+)}/m).not_nil!["body"]
+ function_body = player.match(/^#{Regex.escape(function_name)}=function\(a\){(?<body>[^}]+)}/m).not_nil!["body"]
function_body = function_body.split(";")[1..-2]
var_name = function_body[0][0, 2]
- var_body = player.delete("\n").match(/var #{var_name}={(?<body>(.*?))};/).not_nil!["body"]
+ var_body = player.delete("\n").match(/var #{Regex.escape(var_name)}={(?<body>(.*?))};/).not_nil!["body"]
operations = {} of String => String
var_body.split("},").each do |operation|