自己完成的3.0
// ==UserScript==
// @name 修改B站视频播放速度3.0
// @namespace http://tampermonkey.net/
// @version 3.0
// @description 自定义B站视频播放速度
// @author 武幻空
// @match https://www.bilibili.com/video/*
// @icon https://www.bilibili.com/favicon.ico?v=1
// @grant none
// ==/UserScript==
let autoAdjust = true; // 控制自动调整的开关
function toggleAutoAdjust() {
autoAdjust = !autoAdjust; // 切换状态
const button = document.querySelector('.toggle_button');
button.textContent = autoAdjust ? '暂停自动调整' : '启用自动调整'; // 更新按钮文本
}
function solve() {
var tmp = document.getElementsByClassName('video-info-detail-list')[0];
var addd = document.createElement("span");
var att = document.createAttribute("class");
att.value = "bbb";
addd.setAttributeNode(att);
addd.innerHTML = `
<input type="text" value=1.0 placeholder="1.0" size=4 class="input_speed">
<button type="button" class="speed_rate_button000" onclick='(function(){document.querySelector("video").playbackRate = document.getElementsByClassName("input_speed")[0].value;})()'>确定</button>
<button type="button" class="toggle_button">切换自动调整</button>`;
tmp.appendChild(addd);
// 绑定 toggleAutoAdjust 函数到按钮的点击事件
document.querySelector('.toggle_button').addEventListener('click', toggleAutoAdjust);
}
setTimeout(function() { solve(); }, 2000);
setInterval(function() {
if (autoAdjust) {
if (document.getElementsByClassName("input_speed")[0].value <= 0) {
document.querySelector("video").playbackRate = 1.0;
} else if (document.querySelector("video").playbackRate !== document.getElementsByClassName("input_speed")[0].value) {
document.querySelector("video").playbackRate = document.getElementsByClassName("input_speed")[0].value;
}
}
}, 2000);
chatgpt优化后的4.0
// ==UserScript==
// @name 修改B站视频播放速度4.0
// @namespace http://tampermonkey.net/
// @version 4.0
// @description 自定义B站视频播放速度
// @author 武幻空
// @match https://www.bilibili.com/video/*
// @icon https://www.bilibili.com/favicon.ico?v=1
// @grant none
// ==/UserScript==
let autoAdjust = true; // 控制自动调整的开关
const videoElement = document.querySelector('video');
let speedInput, toggleButton;
const updatePlaybackRate = () => {
const speed = parseFloat(speedInput.value);
videoElement.playbackRate = speed > 0 ? speed : 1.0;
};
const toggleAutoAdjust = () => {
autoAdjust = !autoAdjust;
toggleButton.textContent = autoAdjust ? '暂停自动调整' : '启用自动调整'; // 更新按钮文本
};
const createControls = () => {
const videoInfo = document.getElementsByClassName('video-info-detail-list')[0];
const controlsContainer = document.createElement("span");
controlsContainer.className = "bbb";
controlsContainer.innerHTML = `
<input type="text" value="1.0" placeholder="1.0" size="4" class="input_speed">
<button class="speed_rate_button000">确定</button>
<button class="toggle_button">暂停自动调整</button>
`;
speedInput = controlsContainer.querySelector('.input_speed');
toggleButton = controlsContainer.querySelector('.toggle_button');
toggleButton.addEventListener('click', toggleAutoAdjust);
controlsContainer.querySelector('.speed_rate_button000').addEventListener('click', updatePlaybackRate);
videoInfo.appendChild(controlsContainer);
};
setTimeout(createControls, 2000);
setInterval(() => {
if (autoAdjust) {
updatePlaybackRate();
}
}, 2000);