Greasy Fork is available in English.
Youtube自动点击中文翻译字幕
当前为
// ==UserScript==
// @name Youtube自动选择中文翻译字幕
// @namespace http://tampermonkey.net/
// @version 4.0
// @description Youtube自动点击中文翻译字幕
// @author 大奶瓜
// @match https://www.youtube.com/*
// @grant GM_setValue
// @grant GM_getValue
// @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)
GM_getValue("trans_flag", true)
const contains = (css, inner) => {
let resultNode = null
$$(css).forEach(e => e.innerText.trim().includes(inner) ? resultNode = e : '')
return resultNode
}
const translate = (click_change=false) => {
const trans_flag = GM_getValue("trans_flag")
// 设置菜单按钮点击器
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"]')
if (ccBtnT === null && ccBtnF === null) return
// 字幕按钮
if (ccBtnF) ccBtnF.click()
if (!trans_flag) return
// 设置按钮
$('.ytp-settings-button').click()
// 设置菜单按钮
clickActive("字幕", "menuitem")
clickActive("中文(简体)")
clickActive("中文(中国)")
clickActive("自动翻译")
clickActive("中文(简体)")
}
// 创建一个循环定时器
const trans_interval = setInterval(() => {
// 一直循环,一直到找到video元素为止,然后把事件添加上去
const videoNode = $('video')
if (videoNode) {
clearInterval(trans_interval)
translate()
videoNode.addEventListener('loadeddata', translate, false)
}
}, 500)
// 创建一个循环定时器
const btn_interval = setInterval(() => {
const menu_container = $("#menu-container")
if (menu_container) {
clearInterval(btn_interval)
const trans_flag = GM_getValue("trans_flag")
const change_trans = document.createElement('div')
const change_input = document.createElement('input')
const change_lable = document.createElement('lable')
Object.assign(change_trans.style, { paddingTop: "10px", display: "flex", paddingRight: "8px" })
change_trans.id = "change_trans"
change_input.type = "checkbox"
if (!trans_flag) {
change_input.checked = false
change_lable.innerHTML = "自动翻译已关闭"
} else {
change_input.checked = true
change_lable.innerHTML = "自动翻译已开启"
}
change_trans.onclick = e => {
const trans_flag = GM_getValue("trans_flag")
if (trans_flag != change_input.checked) {
GM_setValue("trans_flag", change_input.checked)
if (trans_flag) {
change_lable.innerHTML = "自动翻译已关闭"
} else {
change_lable.innerHTML = "自动翻译已开启"
}
translate(true)
}
}
change_trans.appendChild(change_input)
change_trans.appendChild(change_lable)
menu_container.parentNode.insertBefore(change_trans, menu_container)
}
}, 1000)
})()