diff --git a/src/invidious/config.cr b/src/invidious/config.cr index 92c510d0..ce602cc4 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -52,6 +52,7 @@ struct ConfigPreferences property vr_mode : Bool = true property show_nick : Bool = true property save_player_pos : Bool = false + property mark_watched_after_duration : Bool = false @[YAML::Field(ignore: true)] property default_playlist : String? = nil diff --git a/src/invidious/routes/preferences.cr b/src/invidious/routes/preferences.cr index 9936e523..81500e55 100644 --- a/src/invidious/routes/preferences.cr +++ b/src/invidious/routes/preferences.cr @@ -82,6 +82,10 @@ module Invidious::Routes::PreferencesRoute save_player_pos ||= "off" save_player_pos = save_player_pos == "on" + mark_watched_after_duration = env.params.body["mark_watched_after_duration"]?.try &.as(String) + mark_watched_after_duration ||= "off" + mark_watched_after_duration = mark_watched_after_duration == "on" + show_nick = env.params.body["show_nick"]?.try &.as(String) show_nick ||= "off" show_nick = show_nick == "on" @@ -182,6 +186,7 @@ module Invidious::Routes::PreferencesRoute vr_mode: vr_mode, show_nick: show_nick, save_player_pos: save_player_pos, + mark_watched_after_duration: mark_watched_after_duration, default_playlist: default_playlist, }.to_json) diff --git a/src/invidious/user/preferences.cr b/src/invidious/user/preferences.cr index df195dd6..1894bfdb 100644 --- a/src/invidious/user/preferences.cr +++ b/src/invidious/user/preferences.cr @@ -56,6 +56,7 @@ struct Preferences property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc property volume : Int32 = CONFIG.default_user_preferences.volume property save_player_pos : Bool = CONFIG.default_user_preferences.save_player_pos + property mark_watched_after_duration : Bool = CONFIG.default_user_preferences.mark_watched_after_duration property default_playlist : String? = nil module BoolToString diff --git a/src/invidious/videos/video_preferences.cr b/src/invidious/videos/video_preferences.cr index 48177bd8..9e0e2f64 100644 --- a/src/invidious/videos/video_preferences.cr +++ b/src/invidious/videos/video_preferences.cr @@ -25,6 +25,7 @@ struct VideoPreferences property volume : Int32 property vr_mode : Bool property save_player_pos : Bool + property mark_watched_after_duration : Bool end def process_video_params(query, preferences) @@ -48,6 +49,7 @@ def process_video_params(query, preferences) volume = query["volume"]?.try &.to_i? vr_mode = query["vr_mode"]?.try { |q| (q == "true" || q == "1").to_unsafe } save_player_pos = query["save_player_pos"]?.try { |q| (q == "true" || q == "1").to_unsafe } + mark_watched_after_duration = query["mark_watched_after_duration"]?.try { |q| (q == "true" || q == "1").to_unsafe } if preferences # region ||= preferences.region @@ -70,6 +72,7 @@ def process_video_params(query, preferences) volume ||= preferences.volume vr_mode ||= preferences.vr_mode.to_unsafe save_player_pos ||= preferences.save_player_pos.to_unsafe + mark_watched_after_duration ||= preferences.mark_watched_after_duration.to_unsafe end annotations ||= CONFIG.default_user_preferences.annotations.to_unsafe @@ -91,6 +94,7 @@ def process_video_params(query, preferences) volume ||= CONFIG.default_user_preferences.volume vr_mode ||= CONFIG.default_user_preferences.vr_mode.to_unsafe save_player_pos ||= CONFIG.default_user_preferences.save_player_pos.to_unsafe + mark_watched_after_duration ||= CONFIG.default_user_preferences.mark_watched_after_duration.to_unsafe annotations = annotations == 1 preload = preload == 1 @@ -104,6 +108,7 @@ def process_video_params(query, preferences) extend_desc = extend_desc == 1 vr_mode = vr_mode == 1 save_player_pos = save_player_pos == 1 + mark_watched_after_duration = mark_watched_after_duration == 1 if CONFIG.disabled?("dash") && quality == "dash" quality = "high" @@ -132,30 +137,31 @@ def process_video_params(query, preferences) controls = controls >= 1 params = VideoPreferences.new({ - annotations: annotations, - preload: preload, - autoplay: autoplay, - comments: comments, - continue: continue, - continue_autoplay: continue_autoplay, - controls: controls, - listen: listen, - local: local, - player_style: player_style, - preferred_captions: preferred_captions, - quality: quality, - quality_dash: quality_dash, - raw: raw, - region: region, - related_videos: related_videos, - speed: speed, - video_end: video_end, - video_loop: video_loop, - extend_desc: extend_desc, - video_start: video_start, - volume: volume, - vr_mode: vr_mode, - save_player_pos: save_player_pos, + annotations: annotations, + preload: preload, + autoplay: autoplay, + comments: comments, + continue: continue, + continue_autoplay: continue_autoplay, + controls: controls, + listen: listen, + local: local, + player_style: player_style, + preferred_captions: preferred_captions, + quality: quality, + quality_dash: quality_dash, + raw: raw, + region: region, + related_videos: related_videos, + speed: speed, + video_end: video_end, + video_loop: video_loop, + extend_desc: extend_desc, + video_start: video_start, + volume: volume, + vr_mode: vr_mode, + save_player_pos: save_player_pos, + mark_watched_after_duration: mark_watched_after_duration, }) return params