kopia lustrzana https://github.com/iv-org/invidious
Merge e94fc2154b
into eda7444ca4
commit
273bb176c7
|
@ -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);
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "Источник комментариев: ",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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">
|
||||
|
|
Ładowanie…
Reference in New Issue