diff options
Diffstat (limited to 'src/invidious.cr')
| -rw-r--r-- | src/invidious.cr | 68 |
1 files changed, 42 insertions, 26 deletions
diff --git a/src/invidious.cr b/src/invidious.cr index 8cb1cedf..d17f3867 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -293,10 +293,8 @@ before_all do |env| end dark_mode = convert_theme(env.params.query["dark_mode"]?) || preferences.dark_mode.to_s - thin_mode = env.params.query["thin_mode"]? || preferences.thin_mode.to_s thin_mode = thin_mode == "true" - locale = env.params.query["hl"]? || preferences.locale preferences.dark_mode = dark_mode @@ -319,21 +317,21 @@ before_all do |env| end get "/" do |env| - locale = LOCALES[env.get("preferences").as(Preferences).locale]? + preferences = env.get("preferences").as(Preferences) + locale = LOCALES[preferences.locale]? user = env.get? "user" - if user - user = user.as(User) - if user.preferences.redirect_feed - next env.redirect "/feed/subscriptions" - end - end - - case config.default_home + case preferences.default_home + when "" + templated "empty" when "Popular" templated "popular" when "Top" - templated "top" + if config.top_enabled + templated "top" + else + templated "empty" + end when "Trending" env.redirect "/feed/trending" when "Subscriptions" @@ -342,6 +340,12 @@ get "/" do |env| else templated "popular" end + when "Playlists" + if user + env.redirect "/view_all_playlists" + else + templated "popular" + end end end @@ -489,7 +493,7 @@ get "/watch" do |env| # Older videos may not have audio sources available. # We redirect here so they're not unplayable - if audio_streams.empty? + if audio_streams.empty? && !video.live_now if params.quality == "dash" env.params.query.delete_all("quality") env.params.query["quality"] = "medium" @@ -729,14 +733,14 @@ get "/embed/:id" do |env| video_streams = video.video_streams(adaptive_fmts) audio_streams = video.audio_streams(adaptive_fmts) - if audio_streams.empty? + if audio_streams.empty? && !video.live_now if params.quality == "dash" env.params.query.delete_all("quality") - next env.redirect "/embed/#{video_id}?#{env.params.query}" + next env.redirect "/embed/#{id}?#{env.params.query}" elsif params.listen env.params.query.delete_all("listen") env.params.query["listen"] = "0" - next env.redirect "/embed/#{video_id}?#{env.params.query}" + next env.redirect "/embed/#{id}?#{env.params.query}" end end @@ -783,6 +787,10 @@ end # Playlists +get "/feed/playlists" do |env| + env.redirect "/view_all_playlists" +end + get "/view_all_playlists" do |env| locale = LOCALES[env.get("preferences").as(Preferences).locale]? @@ -1952,9 +1960,15 @@ post "/preferences" do |env| related_videos ||= "off" related_videos = related_videos == "on" - redirect_feed = env.params.body["redirect_feed"]?.try &.as(String) - redirect_feed ||= "off" - redirect_feed = redirect_feed == "on" + default_home = env.params.body["default_home"]?.try &.as(String) || CONFIG.default_user_preferences.default_home + + feed_menu = [] of String + 5.times do |index| + option = env.params.body["feed_menu[#{index}]"]?.try &.as(String) || "" + if !option.empty? + feed_menu << option + end + end locale = env.params.body["locale"]?.try &.as(String) locale ||= CONFIG.default_user_preferences.locale @@ -2002,7 +2016,8 @@ post "/preferences" do |env| notifications_only: notifications_only, player_style: player_style, quality: quality, - redirect_feed: redirect_feed, + default_home: default_home, + feed_menu: feed_menu, related_videos: related_videos, sort: sort, speed: speed, @@ -2017,16 +2032,16 @@ post "/preferences" do |env| PG_DB.exec("UPDATE users SET preferences = $1 WHERE email = $2", preferences, user.email) if config.admins.includes? user.email - config.default_home = env.params.body["default_home"]?.try &.as(String) || config.default_home + config.default_user_preferences.default_home = env.params.body["admin_default_home"]?.try &.as(String) || config.default_user_preferences.default_home - feed_menu = [] of String - 4.times do |index| - option = env.params.body["feed_menu[#{index}]"]?.try &.as(String) || "" + admin_feed_menu = [] of String + 5.times do |index| + option = env.params.body["admin_feed_menu[#{index}]"]?.try &.as(String) || "" if !option.empty? - feed_menu << option + admin_feed_menu << option end end - config.feed_menu = feed_menu + config.default_user_preferences.feed_menu = admin_feed_menu top_enabled = env.params.body["top_enabled"]?.try &.as(String) top_enabled ||= "off" @@ -2048,6 +2063,7 @@ post "/preferences" do |env| statistics_enabled ||= "off" config.statistics_enabled = statistics_enabled == "on" + CONFIG.default_user_preferences = config.default_user_preferences File.write("config/config.yml", config.to_yaml) end else |
