bilibili视频倍速管理器

在视频播放窗口,倍速的地方已经被替换了

目前为 2021-10-16 提交的版本,查看 最新版本

// ==UserScript==
// @name         bilibili视频倍速管理器
// @namespace    https://blog.csdn.net/weixin_46178937
// @homepage      https://blog.csdn.net/weixin_46178937
// @version      0.2
// @description  在视频播放窗口,倍速的地方已经被替换了
// @description  0.2  更新了记住倍速功能,即使关闭浏览器再重新打开也可以按照以前的倍速设置播放视频 2021年10月16日11:40:27
// @author       ziop
// @match *://www.bilibili.com/blackboard/*
// @match *://www.bilibili.com/*video/*
// @match *://player.bilibili.com/*
// @icon         https://www.bilibili.com/favicon.ico
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    let count = 0;

    function init() {
        document.querySelector("body").removeEventListener("click", init);
        setTimeout(function () {
                // console.log("初始化标签开始")
                // 包裹这六个选项卡的菜单
                let menu = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu");
                //六个控制标签
                let all = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list");
                //++标签
                let plusPlus = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list")[0];
                //+标签
                let plus = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list")[1];
                // 用于展示当前速度的标签
                let currentSpeed = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list")[2];
                //用于还原默认素的的标签
                let defaultSpeed = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list")[3];
                //-标签
                let minus = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list")[4];
                //--标签
                let minusMinus = document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list")[5];
                // 用于获取执行脚本时候的速度
                let showRateLabel = document.querySelector(".bilibili-player-video-btn-speed-name");
                // 较大 的跨度
                let secondRate = 0.5;
                // 较小的跨度
                let firstRate = 0.25;
                //  默认速度
                let defaultRate = 1.0;


                // 对标签进行初始化
                plusPlus.innerText = "+0.5";
                plus.innerText = "+0.25";
                defaultSpeed.innerText = "还原默认速度";
                minus.innerText = "-0.25";
                minusMinus.innerText = "-0.5";
                //获取之前存储的速度
                if (localStorage.getItem("ziop_bilibili_speedManager_rate") == null) {
                    localStorage.setItem("ziop_bilibili_speedManager_rate", defaultRate);
                }
                currentSpeed.innerHTML = localStorage.getItem("ziop_bilibili_speedManager_rate");
                currentSpeed.dataset.value = localStorage.getItem("ziop_bilibili_speedManager_rate");
                setSpeed(parseFloat(currentSpeed.dataset.value))
                // console.log("初始化标签结束")

                // console.log("设置控制事件开始")
                plusPlus.onclick = function () {
                    let currentSpeedValue = currentSpeed.dataset.value;
                    let number = parseFloat(currentSpeedValue);
                    number += secondRate;
                    setSpeed(number);
                }

                plus.onclick = function () {
                    let currentSpeedValue = currentSpeed.dataset.value;
                    let number = parseFloat(currentSpeedValue);
                    number += firstRate;
                    setSpeed(number);
                }

                minus.onclick = function () {
                    let currentSpeedValue = currentSpeed.dataset.value;
                    let number = parseFloat(currentSpeedValue);
                    number -= firstRate;
                    setSpeed(number);
                }
                minusMinus.onclick = function () {
                    let currentSpeedValue = currentSpeed.dataset.value;
                    let number = parseFloat(currentSpeedValue);
                    number -= secondRate;
                    setSpeed(number);
                }

                defaultSpeed.onclick = function () {
                    setSpeed(defaultRate);
                }

                // 设置播放速度
                function setSpeed(rate) {
                    for (let i = 0; i < all.length; i++) {
                        if (i != 3) {
                            document.querySelectorAll("li.bilibili-player-video-btn-speed-menu-list")[i].dataset.value = rate.toString();
                        }
                    }
                    currentSpeed.innerHTML = showRateLabel.innerHTML;
                    // console.log("first = " + currentSpeed.innerHTML)
                    currentSpeed.click();
                    // console.log("second = " + currentSpeed.innerHTML)
                    localStorage.setItem("ziop_bilibili_speedManager_rate", rate);
                }

                document.querySelector("body").addEventListener("click", init);
                // console.log("设置控制事件结束")
                console.log("bilibili视频倍速管理器脚本已经执行" + (++count) + "次")
            }, 5000
        )

    }

    document.querySelector("body").addEventListener("click", init);
    window.onload = init;


})();