Greasy Fork

Greasy Fork is available in English.

Youtube自动选择中文翻译字幕

Youtube自动点击中文翻译字幕

目前为 2022-01-17 提交的版本。查看 最新版本

// ==UserScript==
// @name         Youtube自动选择中文翻译字幕
// @namespace    http://tampermonkey.net/
// @version      4.2
// @description  Youtube自动点击中文翻译字幕
// @author       大奶瓜
// @match        https://www.youtube.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(() => {
    const lcc_log = log => console.log(`%c${log}`, "color: #66b2ff; font-style: italic; background-color: #001e3c ;padding: 5px 10px;font-size:20px;border-radius:10px");
    const $ = el => document.querySelector(el)
    const $$ = el => document.querySelectorAll(el)
    const contains = (css, inner) => {
        let resultNode = null
        $$(css).forEach(e => e.innerText.trim().includes(inner) ? resultNode = e : '')
        return resultNode
    }
    const translate = () => {
        //lcc_log("begin translate")
        // 设置菜单按钮点击器
        const clickActive = (clickBtn, role = "menuitemradio",) => {
            const theNode = contains(`[role=${role}]`, clickBtn)
            theNode ? theNode.click() : ''
        }
        const ccBtnT = $('.ytp-subtitles-button[aria-pressed="true"]')
        const ccBtnF = $('.ytp-subtitles-button[aria-pressed="false"]')
        lcc_log(ccBtnT,ccBtnF)
        if (ccBtnT === null && ccBtnF === null) return
        // 字幕按钮
        if (ccBtnF) ccBtnF.click()
        // 设置按钮
        $('.ytp-settings-button').click()
        //lcc_log("set button clicked")
        // 设置菜单按钮
        clickActive("字幕", "menuitem")
        clickActive("中文(简体)")
        clickActive("中文(中国)")
        clickActive("自动翻译")
        clickActive("中文(简体)")
    }
    // 创建一个循环定时器
    const intervalId = setInterval(() => {
        // 一直循环,一直到找到video元素为止,然后把事件添加上去
        const videoNode = $('video')
        if (videoNode) {
            clearInterval(intervalId)
            translate()
            videoNode.addEventListener('loadeddata', translate, false)
        }
    }, 500)
})()