Bilibili 转录文本复制

用来一键复制 Bilibili 网页版视频的转录文本

// ==UserScript==
// @name         Bilibili 转录文本复制
// @version      1.0
// @description  用来一键复制 Bilibili 网页版视频的转录文本
// @author       BHznJNs
// @license      MIT
// @namespace    https://bilibili.com/
// @match        https://www.bilibili.com/video/*
// @icon         https://www.bilibili.com/favicon.ico
// @grant        none
// ==/UserScript==

const copyButton = document.createElement("button");
copyButton.textContent = "复制转录文本";
copyButton.style.marginRight = "10px";
copyButton.addEventListener("click", async function() {
    const aiAssistantButton = document.querySelector("#arc_toolbar_report .video-toolbar-right .video-ai-assistant");
    aiAssistantButton.click();
    const transcriptionBodyQuery = "[data-video-assistant-subject-main]";
    while (!document.querySelector(transcriptionBodyQuery)) {
        console.log("can not find transcriptionBodyQuery");
        await new Promise(resolve => setTimeout(resolve, 1000));
    }
    // switch to transcription tab
    document.querySelector("[data-video-assistant-subject-tabs]").childNodes[1].click();

    const transcriptionBodyElement = document.querySelector(transcriptionBodyQuery);
    navigator.clipboard.writeText(transcriptionBodyElement.innerText);
});

(async function() {
    'use strict';
    const toolbar = document.querySelector("#arc_toolbar_report .video-toolbar-right");
    while (!toolbar.querySelector(".video-ai-assistant")) {
        await new Promise(resolve => setTimeout(resolve, 1000));
    }
    toolbar.prepend(copyButton);
})();