bili翻译

翻译繁体字幕 目前仅支持繁体字幕

// ==UserScript==
// @name         bili翻译
// @namespace    http://tampermonkey.net/
// @version      0.1.2
// @description  翻译繁体字幕 目前仅支持繁体字幕
// @author       Hudy
// @match        https://*.bilibili.com/bangumi/*
// @grant        none
// ==/UserScript==
var oldxhr=window.XMLHttpRequest
function newobj(){}
window.XMLHttpRequest=function(){
    let tagetobk=new newobj();
    tagetobk.oldxhr=new oldxhr();
    let handle={
        get: function(target, prop, receiver) {
            if(prop==='oldxhr'){
                return Reflect.get(target,prop);
            }
            if(typeof Reflect.get(target.oldxhr,prop)==='function')
            {
                if(Reflect.get(target.oldxhr,prop+'proxy')===undefined)
                {
                    target.oldxhr[prop+'proxy']=(...funcargs)=> {
                        let result = target.oldxhr[prop].call(target.oldxhr,...funcargs)
                        return result;
                    }


                }
                return Reflect.get(target.oldxhr,prop+'proxy')
            }
            if(prop.indexOf('response')!==-1)
            {
                let url = tagetobk.oldxhr.responseURL;
                if (url.startsWith("https://i0.hdslb.com/")){
                    let pathnames = window.location.pathname.split("/")
                    return getSimpleChinese(url,pathnames[pathnames.length-1])
                }
                return Reflect.get(target.oldxhr,prop);
            }
            return Reflect.get(target.oldxhr,prop);
        },
        set(target, prop, value) {
            return Reflect.set(target.oldxhr, prop, value);
        },
        has(target, key) {
            return Reflect.has(target.oldxhr,key);
        }
    }

    let ret = new Proxy(tagetobk, handle);
    return ret;
}
function getSimpleChinese(url,id) {
    let xhr = new XMLHttpRequest()
    let result;
    xhr.onreadystatechange = function() {
        if (this.status == 200) {
            result = this.responseText;
        }
    }
    xhr.open("GET","https://www.hudybili.top:8082/system/subtitle/subTitleInfo?url="+url+"&bId="+id,false)
    xhr.send()
    return result;
}