Youtube double language subtitle / Youtube 双语字幕

Youtube double language subtitle / Youtube 双语字幕. 如果不能自动加载,请关闭字幕再次打开即可。默认语言为浏览器首选语言。已知Bug:默认为zh-TW繁体中文时,即使请求简体中文翻译,Youtube依旧会返回繁体,已向 Youtube 提交 Issue,有新动向此处代码也会同步修改。

目前为 2020-03-05 提交的版本。查看 最新版本

// ==UserScript==
// @name         Youtube double language subtitle / Youtube 双语字幕
// @version      1.0
// @description  Youtube double language subtitle / Youtube 双语字幕. 如果不能自动加载,请关闭字幕再次打开即可。默认语言为浏览器首选语言。已知Bug:默认为zh-TW繁体中文时,即使请求简体中文翻译,Youtube依旧会返回繁体,已向 Youtube 提交 Issue,有新动向此处代码也会同步修改。
// @author       Coink
// @match        https://www.youtube.com/watch*
// @require      https://unpkg.com/xhook@latest/dist/xhook.min.js
// @grant        none
// @namespace    https://github.com/CoinkWang/Y2BDoubleSubs
// ==/UserScript==

(function() {
    let localeLang = navigator.language ? navigator.language : 'en'
    // let localeLang = 'en'  // or comment the upper line and define the language you wish here
    xhook.after(function (request, response) {
        if (request.url.includes('/api/timedtext') && !request.url.includes('&translate_h00ked')) {
            let xhr = new XMLHttpRequest();
            let reg = new RegExp("(^|[&?])tlang=([^&]*)",'g');
            // Use RegExp to clean '&tlang=...' and '&lang=...' in xhr url while using Y2B auto translate.
            xhr.open('GET', `${request.url.replace(reg,'')}&tlang=${localeLang}&translate_h00ked`, false);
            xhr.send();
            let defaultJson = null, localeJson = null;
            if (response.data && JSON.parse(response.data).events){
                defaultJson = JSON.parse(response.data)
            }
            localeJson = JSON.parse(xhr.response)
            for(let i = 0,len = defaultJson.events.length; i<len; i++){
                defaultJson.events[i].segs[0].utf8 += ('\n'+localeJson.events[i].segs[0].utf8)
                // Merge default subs with locale language subs
            }
            response.text = JSON.stringify(defaultJson)
        }
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址