pull/4284/merge
Daniil ひっかもりい 2024-04-26 22:49:04 +00:00 zatwierdzone przez GitHub
commit 273bb176c7
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
7 zmienionych plików z 70 dodań i 5 usunięć

Wyświetl plik

@ -580,11 +580,34 @@ function toggle_fullscreen() {
}
function increase_playback_rate(steps) {
const maxIndex = options.playbackRates.length - 1;
const curIndex = options.playbackRates.indexOf(player.playbackRate());
let newIndex = curIndex + steps;
newIndex = helpers.clamp(newIndex, 0, maxIndex);
player.playbackRate(options.playbackRates[newIndex]);
let speed = player.playbackRate();
// Considering 1/-1 as step against pre-defined speeds,
// otherwise treat as absolute change
if (steps == 1 || steps == -1) {
// If current speed is not pre-defined, reset it to 1
if (!options.playbackRates.includes(speed)) {
speed = 1;
}
else {
const maxIndex = options.playbackRates.length - 1;
const curIndex = options.playbackRates.indexOf(player.playbackRate());
let newIndex = curIndex;
// Set speed to minimum if at max speed
if (curIndex >= maxIndex)
newIndex = 0;
else
newIndex = curIndex + steps;
speed = options.playbackRates[newIndex];
}
}
else {
speed += steps;
speed = parseFloat(speed.toFixed(2));
}
player.playbackRate(speed);
}
addEventListener('keydown', function (e) {
@ -721,6 +744,34 @@ addEventListener('keydown', function (e) {
player.on('DOMMouseScroll', mouseScroll);
}());
(function () {
const pEl = document.getElementById('player');
var speedHover = false;
var speedSelector = pEl.querySelector('.vjs-playback-rate');
var allowscroll = video_data.preferences.toggle_speed_onscroll;
if (speedSelector !== null) {
speedSelector.onmouseover = function () { speedHover = true; };
speedSelector.onmouseout = function () { speedHover = false; };
// Increase speed by a single step, or reset when scrollable
speedSelector.onclick = function() { allowscroll ? player.playbackRate(video_data.preferences.speed) : increase_playback_rate(1); };
}
function mouseScroll(event) {
// When controls are disabled, hotkeys will be disabled as well
if (!player.controls() || !speedHover || !allowscroll) return;
event.preventDefault();
var wheelMove = event.wheelDelta || -event.detail;
var speedSign = Math.sign(wheelMove);
increase_playback_rate(speedSign * 0.10); // increase speed by .10
}
player.on('mousewheel', mouseScroll);
player.on('DOMMouseScroll', mouseScroll);
}());
// Since videojs-share can sometimes be blocked, we defer it until last
if (player.share) player.share(shareOptions);

Wyświetl plik

@ -78,6 +78,7 @@
"preferences_local_label": "Proxy videos: ",
"preferences_watch_history_label": "Enable watch history: ",
"preferences_speed_label": "Default speed: ",
"preferences_toggle_speed_onscroll_label": "Enable adjusting playback speed on scrolling: ",
"preferences_quality_label": "Preferred video quality: ",
"preferences_quality_option_dash": "DASH (adaptive quality)",
"preferences_quality_option_hd720": "HD720",

Wyświetl plik

@ -53,6 +53,7 @@
"preferences_listen_label": "Режим «только аудио» по умолчанию: ",
"preferences_local_label": "Проигрывать видео через прокси? ",
"preferences_speed_label": "Скорость видео по умолчанию: ",
"toggle_speed_onscroll": "Разрешить изменения скорости по колесику мыши: ",
"preferences_quality_label": "Предпочтительное качество видео: ",
"preferences_volume_label": "Громкость видео: ",
"preferences_comments_label": "Источник комментариев: ",

Wyświetl plik

@ -36,6 +36,7 @@ struct ConfigPreferences
property related_videos : Bool = true
property sort : String = "published"
property speed : Float32 = 1.0_f32
property toggle_speed_onscroll : Bool = false
property thin_mode : Bool = false
property unseen_only : Bool = false
property video_loop : Bool = false

Wyświetl plik

@ -54,6 +54,10 @@ module Invidious::Routes::PreferencesRoute
speed = env.params.body["speed"]?.try &.as(String).to_f32?
speed ||= CONFIG.default_user_preferences.speed
toggle_speed_onscroll = env.params.body["toggle_speed_onscroll"]?.try &.as(String)
toggle_speed_onscroll ||= "off"
toggle_speed_onscroll = toggle_speed_onscroll == "on"
player_style = env.params.body["player_style"]?.try &.as(String)
player_style ||= CONFIG.default_user_preferences.player_style
@ -167,6 +171,7 @@ module Invidious::Routes::PreferencesRoute
related_videos: related_videos,
sort: sort,
speed: speed,
toggle_speed_onscroll: toggle_speed_onscroll,
thin_mode: thin_mode,
unseen_only: unseen_only,
video_loop: video_loop,

Wyświetl plik

@ -49,6 +49,7 @@ struct Preferences
@[JSON::Field(converter: Preferences::ProcessString)]
property sort : String = CONFIG.default_user_preferences.sort
property speed : Float32 = CONFIG.default_user_preferences.speed
property toggle_speed_onscroll : Bool = CONFIG.default_user_preferences.toggle_speed_onscroll
property thin_mode : Bool = CONFIG.default_user_preferences.thin_mode
property unseen_only : Bool = CONFIG.default_user_preferences.unseen_only
property video_loop : Bool = CONFIG.default_user_preferences.video_loop

Wyświetl plik

@ -46,6 +46,11 @@
</select>
</div>
<div class="pure-control-group">
<label for="toggle_speed_onscroll"><%= translate(locale, "preferences_toggle_speed_onscroll_label") %></label>
<input name="toggle_speed_onscroll" id="toggle_speed_onscroll" type="checkbox" <% if preferences.toggle_speed_onscroll %>checked<% end %>>
</div>
<div class="pure-control-group">
<label for="quality"><%= translate(locale, "preferences_quality_label") %></label>
<select name="quality" id="quality">