fix: ytInitialData parsing with regex

This commit is contained in:
Théo Gaillard 2020-11-26 07:22:47 +01:00
parent 1973f93d4a
commit 480d31eb5e
No known key found for this signature in database
GPG key ID: 9C6AAAF893B070FC

View file

@ -598,12 +598,7 @@ def create_notification_stream(env, topics, connection_channel)
end end
def extract_initial_data(body) : Hash(String, JSON::Any) def extract_initial_data(body) : Hash(String, JSON::Any)
initial_data = body.match(/(window\["ytInitialData"\]|var\s+ytInitialData)\s*=\s*(?<info>.*?);+\s*\n/).try &.["info"] || "{}" return JSON.parse(body.match(/(window\["ytInitialData"\]|var\s*ytInitialData)\s*=\s*(?<info>\{.*?\});/).try &.["info"] || "{}").as_h
if initial_data.starts_with?("JSON.parse(\"")
return JSON.parse(JSON.parse(%({"initial_data":"#{initial_data[12..-3]}"}))["initial_data"].as_s).as_h
else
return JSON.parse(initial_data).as_h
end
end end
def proxy_file(response, env) def proxy_file(response, env)