【自用】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();
  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();
}