From 5159ec0f6e2a9f6f1b2fabdd3066b0ea3ce9c17d Mon Sep 17 00:00:00 2001 From: Omar Roth Date: Wed, 7 Feb 2018 22:04:47 -0600 Subject: [PATCH] Pull rank_videos into seperate thread --- src/invidious.cr | 42 ++++++++++++++++++++++++++---------------- src/views/index.ecr | 2 +- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/invidious.cr b/src/invidious.cr index 9eecf1063..5497ad3a1 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -109,26 +109,36 @@ threads.times do end end +top_videos = [] of Video + +spawn do + loop do + top = rank_videos(PG_DB, 120) + client = get_client(pool) + + args = [] of String + 1..(top.size - 1).times { |i| args << "($#{i + 1}), " } + args << "($#{top.size}) " + args = args.join("") + + PG_DB.query("SELECT * FROM videos d INNER JOIN (VALUES #{args}) v(id) USING (id)", top) do |rs| + rs.each do + video = rs.read(Video) + top_videos << video + end + end + + pool << client + + sleep 5.minutes + end +end + macro templated(filename) render "src/views/#{{{filename}}}.ecr", "src/views/layout.ecr" end get "/" do |env| - top = rank_videos(PG_DB, 120) - - args = [] of String - 1..(top.size - 1).times { |i| args << "($#{i + 1}), " } - args << "($#{top.size}) " - args = args.join("") - - videos = [] of Video - PG_DB.query("SELECT * FROM videos d INNER JOIN (VALUES #{args}) v(id) USING (id)", top) do |rs| - rs.each do - video = rs.read(Video) - videos << video - end - end - templated "index" end @@ -259,7 +269,7 @@ get "/:path" do |env| end error 500 do |env| - "Error 500" + templated "index" end public_folder "assets" diff --git a/src/views/index.ecr b/src/views/index.ecr index 7a25c739d..3b061fa19 100644 --- a/src/views/index.ecr +++ b/src/views/index.ecr @@ -2,7 +2,7 @@ Invidious <% end %> -<% videos.each_slice(4) do |slice| %> +<% top_videos.each_slice(4) do |slice| %>
<% slice.each do |video| %> <% player_response = JSON.parse(video.info["player_response"]) %>