【自用】Youtube字幕

自动切换到英文字幕

目前為 2021-10-16 提交的版本,檢視 最新版本

// ==UserScript==
// @icon        https://github.com/favicon.ico
// @name        【自用】Youtube字幕
// @homepage    https://greasyfork.org/zh-CN/scripts/433987-%E8%87%AA%E7%94%A8-youtube%E5%AD%97%E5%B9%95
// @namespace   Violentmonkey Scripts
// @match       https://www.youtube.com/watch
// @grant       none
// @version     v2021.10.16
// @author      heckles
// @description 自动切换到英文字幕
// ==/UserScript==
markcontainer = document.createElement("div");
document.body.appendChild(markcontainer);
markcontainer.setAttribute("id", "markcontainer");

if (document.getElementById("browser-app") || document.getElementById("masthead")) { //这两个元素,有一个是true,就往下执行
    var sx = setInterval(function () { //间隔执行
        //console.log(">>>>>>>>>>>               【YoutubeTools】      interval开始          <<<<<<<<<<<");
        if (window.location.href.indexOf("watch?v=") < 0) { //如果网址不匹配
            return false; //就不执行         【这里只能匹配域名,然后筛,直接用watch的网址,从首页点进去会不触发】
        } else {
            if (document.querySelector(".html5-video-container") && !document.getElementById(window.location.href.split("watch?v=")[1])) { //视频框架已加载,且mark没被标记(即StartJS()没运行过)
                StartJS(); //就执行函数,添加punisher
                console.log(">>>>>>>>>>>               【字幕Tools】      已加载          <<<<<<<<<<<");
            }
        }
    }, 1000); //间隔时间,毫秒
    //return;
}

//2.条件触发后加载
function StartJS() {
    var mark = document.createElement("div");
    markcontainer.appendChild(mark);
    mark.setAttribute("id", window.location.href.split("watch?v=")[1]);
    document.querySelector(".ytp-settings-button").click();
    if (document.querySelector(".ytp-menuitem-label-count")) { //如果有字幕则继续
        document.querySelector(".ytp-menuitem-label-count").click();
        var caps = document.querySelectorAll(".ytp-popup.ytp-settings-menu .ytp-menuitem-label");
        //加ID好在后面判断,别再遍历时判断
        for (i = 0; i < caps.length; i++) {
            if (caps[i].innerHTML.indexOf("英语") == 0 && caps[i].innerHTML.indexOf("自动") == -1) { //不知道为啥必须有两个=才行,英语不含自动
                caps[i].setAttribute("id", "EngSub");
            }
            if (caps[i].innerHTML.indexOf("英语") == 0 && caps[i].innerHTML.indexOf("自动") > -1) { //不知道为啥必须有两个=才行,英语含自动
                caps[i].setAttribute("id", "EngSubAuto");
            }
        }
        //开始判断,有英语字幕选之
        if (document.getElementById("EngSub")) {
            document.getElementById("EngSub").click();
        } else { //否则选择英语(自动生成)
            document.getElementById("EngSubAuto").click();
        }
        //markcontainer.innerHTML = "";//想想也没必要清空
        document.body.click();
    } else { //如果没字幕
        document.body.click();
    }
}