Bilibili 自动打开字幕

自动打开B站视频的字幕

// ==UserScript==
// @name         Bilibili 自动打开字幕
// @namespace    http://tampermonkey.net/
// @version      2.1
// @description  自动打开B站视频的字幕
// @author       神明佑我.
// @author       as AAZl3l4
// @license MIT
// @match              *://www.bilibili.com/video*
// @match              *://www.bilibili.com/list*
// @match              *://www.bilibili.com/blackboard*
// @match              *://www.bilibili.com/watchlater*
// @match              *://www.bilibili.com/bangumi*
// @match              *://www.bilibili.com/watchroom*
// @match              *://www.bilibili.com/medialist*
// @match              *://bangumi.bilibili.com*
// @match              *://live.bilibili.com/*
// @grant        GM_registerMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==
// ==/UserScript==

(function() {
    'use strict';

    let isSubtitleEnabled = GM_getValue('isSubtitleEnabled', false);

    let menuText = !isSubtitleEnabled ? "开启自动字幕" : "关闭自动字幕"
    GM_registerMenuCommand(menuText, toggleSubtitle);

    function toggleSubtitle() {
        isSubtitleEnabled = !isSubtitleEnabled;
        GM_setValue('isSubtitleEnabled', isSubtitleEnabled);
        window.location.reload();
    }

    function enableSubtitles() {
        const video = document.querySelector("video");
        if (video) {
            video.addEventListener("loadeddata", (event) => {
                const timer = setInterval(() => {
                    if (document.querySelector(".bpx-player-control-bottom-right:has(*)")) {
                        document.querySelector("[aria-label='字幕'] span")?.click();
                        clearInterval(timer);
                    }
                }, 500);
            });
        }
    }

    if (isSubtitleEnabled) {
        enableSubtitles();
    }
})();