自研 - 母带吧 - 调整音量

调整在线播放器音量。

// ==UserScript==
// @name               自研 - 母带吧 - 调整音量
// @name:en_US         Self-made - MuDaiBa MUSIC BBS - Adjust volume
// @description        调整在线播放器音量。
// @description:en_US  Adjust the volume of the online player.
// @version            1.0.1
// @author             CPlayerCHN
// @license            MulanPSL-2.0
// @namespace          https://www.gitlink.org.cn/CPlayerCHN
// @match              https://mudaiba.com/thread-*.htm
// @icon               https://mudaiba.com/view/img/favicon.ico
// @grant              GM_setValue
// @grant              GM_getValue
// @grant              GM_registerMenuCommand
// @run-at             document-end
// @noframes
// ==/UserScript==

(function() {
    'use strict';

    // 从「音量值」数据中提取并定义对应变量,定义「获取音量值」和「插入脚本」函数。
    var volume = GM_getValue("volume");

    function getVolume() {

        // 判断「音量值」变量是否被定义且数值是否合规,如果不满足判断就记录并保存。
        do {

            insertScript("ap4.pause()");
            volume = window.prompt("请输入您期望的音量。", GM_getValue("volume", 10));
            GM_setValue("volume", volume);
            insertScript("if(ap4.audio.currentTime !== 0) { ap4.play() }");

        } while(typeof volume !== undefined && !(volume > 0 && volume <= 100));

    };
    function insertScript(script = `ap4.volume(${volume * 0.01}, true);`) {

        // 将修改音量的代码插入页面尾部,并在执行后自动销毁。
        const scripts = document.createElement('script');

        scripts.textContent = script;
        document.body.appendChild(scripts);

        scripts.remove();

    }


    // 调整音量;判断「音量值」是否被定义,如果通过判断就执行「获取音量值」函数。
    if(typeof volume === "undefined") {

        getVolume();

    }
    // 调整音量;增加「修改音量」菜单命令。
    GM_registerMenuCommand("设置新音量", () => {

        getVolume();
        insertScript();

    });
    // 调整音量;监听按下`.`键。
    document.addEventListener("keydown", (event) => {

        if (event.key === '.') {

            getVolume();
            insertScript();

        }

    });
    // 调整音量;脚本执行时。
    insertScript();

})();