Add ability to decrypt signature for vflxuxnEY/en_US/base.js

This commit is contained in:
Omar Roth 2018-02-03 14:41:59 -06:00
parent 859517e206
commit 1e2139d78c
2 changed files with 24 additions and 1 deletions

View File

@ -163,3 +163,13 @@ def search(query, client)
end end
end end
end end
def decrypt_signature(a)
a = a.split("");
a.delete_at(0..2)
a = a.reverse
c = a[0]
a[0] = a[49 % a.size]
a[49] = c
return a.join("")
end

View File

@ -126,7 +126,14 @@ get "/watch" do |env|
fmt_stream << HTTP::Params.parse(string) fmt_stream << HTTP::Params.parse(string)
end end
fmt_stream.reverse! # We want lowest quality first if fmt_stream[0]["s"]?
fmt_stream.each do |fmt|
fmt["url"] = "#{fmt["url"]}&signature=#{decrypt_signature(fmt["s"])}"
end
end
# We want lowest quality first
fmt_stream.reverse!
adaptive_fmts = [] of HTTP::Params adaptive_fmts = [] of HTTP::Params
if video.info.has_key?("adaptive_fmts") if video.info.has_key?("adaptive_fmts")
@ -135,6 +142,12 @@ get "/watch" do |env|
end end
end end
if adaptive_fmts[0]["s"]?
adaptive_fmts.each do |fmt|
fmt["url"] = "#{fmt["url"]}&signature=#{decrypt_signature(fmt["s"])}"
end
end
rvs = [] of Hash(String, String) rvs = [] of Hash(String, String)
if video.info.has_key?("rvs") if video.info.has_key?("rvs")
video.info["rvs"].split(",").each do |rv| video.info["rvs"].split(",").each do |rv|