From 480d31eb5e68c0d90ab8e3f43034484bfc0e158a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9o=20Gaillard?= <theo.gaillard@protonmail.com>
Date: Thu, 26 Nov 2020 07:22:47 +0100
Subject: [PATCH] fix: ytInitialData parsing with regex

---
 src/invidious/helpers/helpers.cr | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr
index 620d2ec8..7ff68b32 100644
--- a/src/invidious/helpers/helpers.cr
+++ b/src/invidious/helpers/helpers.cr
@@ -598,12 +598,7 @@ def create_notification_stream(env, topics, connection_channel)
 end
 
 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"] || "{}"
-  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
+  return JSON.parse(body.match(/(window\["ytInitialData"\]|var\s*ytInitialData)\s*=\s*(?<info>\{.*?\});/).try &.["info"] || "{}").as_h
 end
 
 def proxy_file(response, env)