diff options
Diffstat (limited to 'src/invidious.cr')
| -rw-r--r-- | src/invidious.cr | 28 |
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 |
