summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/invidious/helpers/utils.cr16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr
index 66ad6961..8c893310 100644
--- a/src/invidious/helpers/utils.cr
+++ b/src/invidious/helpers/utils.cr
@@ -409,3 +409,19 @@ def convert_theme(theme)
theme
end
end
+
+def fetch_random_instance()
+ instance_list = HTTP::Client.get "https://api.invidious.io/instances.json"
+ instance_list = JSON.parse(instance_list.body)
+
+ filtered_instance_list = [] of String
+ instance_list.as_a.each do |data|
+ if data[1]["type"] == "https"
+ if data[1]["monitor"]
+ health = data[1]["monitor"].as_h["dailyRatios"][0].as_h["ratio"]
+ filtered_instance_list << data[0].as_s if health.to_s.to_f > 90
+ end
+ end
+ end
+ return filtered_instance_list.sample(1)[0]
+end