summaryrefslogtreecommitdiffstats
path: root/src/invidious.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/invidious.cr')
-rw-r--r--src/invidious.cr28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 4bde39ef..1a96b50a 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -16,6 +16,7 @@
require "detect_language"
require "digest/md5"
+require "file_utils"
require "kemal"
require "openssl/hmac"
require "option_parser"
@@ -35,6 +36,8 @@ channel_threads = CONFIG.channel_threads
feed_threads = CONFIG.feed_threads
video_threads = CONFIG.video_threads
+logger = Invidious::LogHandler.new
+
Kemal.config.extra_options do |parser|
parser.banner = "Usage: invidious [arguments]"
parser.on("-t THREADS", "--crawl-threads=THREADS", "Number of threads for crawling YouTube (default: #{crawl_threads})") do |number|
@@ -69,6 +72,10 @@ Kemal.config.extra_options do |parser|
exit
end
end
+ parser.on("-o OUTPUT", "--output=OUTPUT", "Redirect output (default: STDOUT)") do |output|
+ FileUtils.mkdir_p(File.dirname(output))
+ logger = Invidious::LogHandler.new(File.open(output, mode: "a"))
+ end
end
Kemal::CLI.new
@@ -101,17 +108,17 @@ LOCALES = {
crawl_threads.times do
spawn do
- crawl_videos(PG_DB)
+ crawl_videos(PG_DB, logger)
end
end
-refresh_channels(PG_DB, channel_threads, CONFIG.full_refresh)
+refresh_channels(PG_DB, logger, channel_threads, CONFIG.full_refresh)
-refresh_feeds(PG_DB, feed_threads)
+refresh_feeds(PG_DB, logger, feed_threads)
video_threads.times do |i|
spawn do
- refresh_videos(PG_DB)
+ refresh_videos(PG_DB, logger)
end
end
@@ -295,7 +302,7 @@ get "/watch" do |env|
next env.redirect "/watch?v=#{ex.message}"
rescue ex
error_message = ex.message
- STDOUT << id << " : " << ex.message << "\n"
+ logger.write("#{id} : #{ex.message}\n")
next templated "error"
end
@@ -2135,6 +2142,16 @@ get "/c/:user" do |env|
env.redirect anchor["href"]
end
+# Legacy endpoint for /user/:username
+get "/profile" do |env|
+ user = env.params.query["user"]?
+ if !user
+ env.redirect "/"
+ else
+ env.redirect "/user/#{user}"
+ end
+end
+
get "/user/:user" do |env|
user = env.params.url["user"]
env.redirect "/channel/#{user}"
@@ -3849,4 +3866,5 @@ add_handler FilteredCompressHandler.new
add_handler DenyFrame.new
add_context_storage_type(User)
+Kemal.config.logger = logger
Kemal.run