diff options
| -rw-r--r-- | src/invidious.cr | 4 | ||||
| -rw-r--r-- | src/invidious/helpers.cr | 2 | ||||
| -rw-r--r-- | src/invidious/views/preferences.ecr | 17 | ||||
| -rw-r--r-- | src/invidious/views/watch.ecr | 1 |
4 files changed, 20 insertions, 4 deletions
diff --git a/src/invidious.cr b/src/invidious.cr index 6f0bf088..82b8d0ed 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -700,6 +700,9 @@ post "/preferences" do |env| autoplay ||= "off" autoplay = autoplay == "on" + speed = env.params.body["speed"]?.try &.as(String).to_f + speed ||= 1.0 + quality = env.params.body["quality"]?.try &.as(String) quality ||= "hd720" @@ -713,6 +716,7 @@ post "/preferences" do |env| preferences = { "video_loop" => video_loop, "autoplay" => autoplay, + "speed" => speed, "quality" => quality, "volume" => volume, "dark_mode" => dark_mode, diff --git a/src/invidious/helpers.cr b/src/invidious/helpers.cr index ddd4914c..81c025a3 100644 --- a/src/invidious/helpers.cr +++ b/src/invidious/helpers.cr @@ -20,6 +20,7 @@ end DEFAULT_USER_PREFERENCES = Preferences.from_json({ "video_loop" => false, "autoplay" => false, + "speed" => 1.0, "quality" => "hd720", "volume" => 100, "dark_mode" => false, @@ -137,6 +138,7 @@ class Preferences JSON.mapping({ video_loop: Bool, autoplay: Bool, + speed: Float32, quality: String, volume: Int32, dark_mode: Bool, diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr index 20eddbab..c38b14d7 100644 --- a/src/invidious/views/preferences.ecr +++ b/src/invidious/views/preferences.ecr @@ -23,11 +23,20 @@ function update_value(element) { </div> <div class="pure-control-group"> + <label for="speed">Default speed: </label> + <select name="speed" id="speed"> + <% [2.0, 1.5, 1.0, 0.5].each do |option| %> + <option <% if user.preferences.speed == option %> selected <% end %>><%= option %></option> + <% end %> + </select> + </div> + + <div class="pure-control-group"> <label for="quality">Preferred video quality: </label> - <select name="quality" id="quality" selected="<%= user.preferences.quality %>"> - <option>hd720</option> - <option>medium</option> - <option>small</option> + <select name="quality" id="quality"> + <% ["hd720", "medium", "small"].each do |option| %> + <option <% if user.preferences.quality == option %> selected <% end %>><%= option %></option> + <% end %> </select> </div> diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr index 30ac00a1..afbb5658 100644 --- a/src/invidious/views/watch.ecr +++ b/src/invidious/views/watch.ecr @@ -91,6 +91,7 @@ var player = videojs('player', options, function() { <% if preferences %> player.volume(<%= preferences.volume.to_f / 100 %>); +player.playbackRate(<%= preferences.speed %>); <% end %> player.offset({ start: <%= video_start %>, |
