summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/invidious.cr4
-rw-r--r--src/invidious/helpers.cr2
-rw-r--r--src/invidious/views/preferences.ecr17
-rw-r--r--src/invidious/views/watch.ecr1
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 %>,