// ==UserScript==
// @name 自定义哔哩哔哩视频播放速度
// @namespace http://tampermonkey.net/
// @version 0.1.1
// @description 可以使用按键 z(恢复1倍速)、x(减0.1)、c(加0.1)调整倍速,支持0.1-5倍速
// @author felix
// @match https://www.bilibili.com/video/*
// @grant none
// @downloadURL none
// ==/UserScript==
(function () {
'use strict';
var Setting = {
stepSize: 0.1,
maxSpeed: 5,
minSpeed: 0.1
};
var autoAddInterval = setInterval(addButton, 2000);
function addButton() {
clearInterval(autoAddInterval);
var viewbox_report = document.getElementById("arc_toolbar_report");
var div = document.createElement("div");
div.innerHTML = '';
viewbox_report.appendChild(div);
document.getElementById("reduce").onclick = function () {
reduceSpeed();
};
document.getElementById("add").onclick = function () {
addSpeed();
};
}
function reduceSpeed(stepSize) {
if (!stepSize) {
stepSize = Setting.stepSize;
}
var speedSpan = document.getElementById("speed");
var playSpeed = Number(Number(Number(speedSpan.innerText) * 10 - stepSize * 10) / 10).toFixed(1);
changeSpeed(playSpeed);
}
function addSpeed(stepSize) {
if (!stepSize) {
stepSize = Setting.stepSize;
}
var speedSpan = document.getElementById("speed");
var playSpeed = Number(Number(Number(speedSpan.innerText) * 10 + stepSize * 10) / 10).toFixed(1);
changeSpeed(playSpeed);
}
function changeSpeed(playSpeed) {
if (playSpeed && playSpeed >= Setting.minSpeed && playSpeed <= Setting.maxSpeed) {
document.querySelector('video').playbackRate = playSpeed;
var speedSpan = document.getElementById("speed");
speedSpan.innerText = playSpeed;
}
}
// 键盘快捷键
document.onkeydown = function (e) {
if (e.target.nodeName !== 'BODY') return;
if (/^[zxc]$/.test(e.key)) {
if (e.key === 'z') {
changeSpeed(1);
}
if (e.key === 'x') {
reduceSpeed();
}
if (e.key === 'c') {
addSpeed();
}
}
};
})();