diff --git a/src/invidious.cr b/src/invidious.cr index 1a8153e4..802e9233 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -243,10 +243,7 @@ get "/watch" do |env| subscriptions ||= [] of String params = process_video_params(env.params.query, preferences) - - if params[:listen] - env.params.query.delete_all("listen") - end + env.params.query.delete_all("listen") begin video = get_video(id, PG_DB, proxies) @@ -880,6 +877,10 @@ post "/preferences" do |env| autoplay ||= "off" autoplay = autoplay == "on" + listen = env.params.body["listen"]?.try &.as(String) + listen ||= "off" + listen = listen == "on" + speed = env.params.body["speed"]?.try &.as(String).to_f? speed ||= 1.0 @@ -935,6 +936,7 @@ post "/preferences" do |env| preferences = { "video_loop" => video_loop, "autoplay" => autoplay, + "listen" => listen, "speed" => speed, "quality" => quality, "volume" => volume, diff --git a/src/invidious/users.cr b/src/invidious/users.cr index 4116e732..b354306f 100644 --- a/src/invidious/users.cr +++ b/src/invidious/users.cr @@ -70,10 +70,14 @@ class Preferences JSON.mapping({ video_loop: Bool, autoplay: Bool, - speed: Float32, - quality: String, - volume: Int32, - comments: { + listen: { + type: Bool, + default: false, + }, + speed: Float32, + quality: String, + volume: Int32, + comments: { type: Array(String), default: ["youtube", ""], converter: StringToArray, diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr index 586ffe5d..26aa487e 100644 --- a/src/invidious/videos.cr +++ b/src/invidious/videos.cr @@ -708,6 +708,7 @@ end def process_video_params(query, preferences) autoplay = query["autoplay"]?.try &.to_i? + listen = query["listen"]? && (query["listen"] == "true" || query["listen"] == "1").to_unsafe preferred_captions = query["subtitles"]?.try &.split(",").map { |a| a.downcase } quality = query["quality"]? speed = query["speed"]?.try &.to_f? @@ -716,6 +717,7 @@ def process_video_params(query, preferences) if preferences autoplay ||= preferences.autoplay.to_unsafe + listen ||= preferences.listen.to_unsafe preferred_captions ||= preferences.captions quality ||= preferences.quality speed ||= preferences.speed @@ -724,6 +726,7 @@ def process_video_params(query, preferences) end autoplay ||= 0 + listen ||= 0 preferred_captions ||= [] of String quality ||= "hd720" speed ||= 1 @@ -731,6 +734,7 @@ def process_video_params(query, preferences) volume ||= 100 autoplay = autoplay == 1 + listen = listen == 1 video_loop = video_loop == 1 if query["t"]? @@ -750,11 +754,6 @@ def process_video_params(query, preferences) end video_end ||= -1 - if query["listen"]? && (query["listen"] == "true" || query["listen"] == "1") - listen = true - end - listen ||= false - raw = query["raw"]?.try &.to_i? raw ||= 0 raw = raw == 1 diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr index aa70e4dc..be15a54d 100644 --- a/src/invidious/views/preferences.ecr +++ b/src/invidious/views/preferences.ecr @@ -23,6 +23,11 @@ function update_value(element) { checked<% end %>> +