iTranslator

👆👆👆 免费的多功能网页翻译工具,支持所有网站划词翻译,选择单词或段落后,按快捷键 T 翻译,按 Y 删除翻译(快捷键可自定义更换),可自定义设置翻译字体颜色、翻译结果显示位置,全面支持 Google 谷歌翻译、百度翻译、彩云小译、有道翻译、阿里翻译、必应翻译、搜狗翻译、爱词霸翻译。👆👆👆

目前为 2022-10-26 提交的版本。查看 最新版本

// ==UserScript==
// @name         iTranslator
// @version      1.3.0
// @author       IMQSQ
// @homepage     https://www.hezibuluo.com/159129.html
// @namespace    https://www.hezibuluo.com/159129.html
// @description  👆👆👆 免费的多功能网页翻译工具,支持所有网站划词翻译,选择单词或段落后,按快捷键 T 翻译,按 Y 删除翻译(快捷键可自定义更换),可自定义设置翻译字体颜色、翻译结果显示位置,全面支持 Google 谷歌翻译、百度翻译、彩云小译、有道翻译、阿里翻译、必应翻译、搜狗翻译、爱词霸翻译。👆👆👆
// @require      https://lib.baomitu.com/limonte-sweetalert2/10.16.6/sweetalert2.all.min.js
// @require      https://lib.baomitu.com/crypto-js/3.3.0/crypto-js.min.js
// @require      https://lib.baomitu.com/jquery/3.6.0/jquery.min.js
// @license      AGPL-3.0-or-later
// @grant        unsafeWindow
// @grant        GM_info
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_openInTab
// @grant        GM_setClipboard
// @grant        GM_xmlhttpRequest
// @grant        GM_registerMenuCommand
// @compatible   chrome
// @compatible   firefox
// @compatible   safari
// @compatible   opera
// @compatible   edge
// @connect      sssam.com
// @connect      ooopn.com
// @connect      qq.com
// @connect      bing.com
// @connect      baidu.com
// @connect      iciba.com
// @connect      sogou.com
// @connect      youdao.com
// @connect      taobao.com
// @connect      google.com
// @connect      alibaba.com
// @connect      ydstatic.com
// @connect      caiyunai.com
// @connect      googleapis.com
// @connect      *
// @match        *://*/*
// @icon         data:image/png;base64,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
// ==/UserScript==

(function() {
    'use strict';
    var tgoing, odata = {}, tdata = {}, kdata = {}, result = {}, initOption = {}, $ = jQuery, doc = $(document), site = document.URL.toString();
    let sogou_ico = "data:image/png;base64,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";
    let baidu_ico = "data:image/png;base64,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";
    let google_ico = "data:image/png;base64,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";
    let youdao_ico = "data:image/png;base64,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";
    let bing_ico = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAFUUlEQVR4AWL4//8/WZhhWkcBoL17gLElieIwnrVt27Y3Wtu2bdu2Hay98bNt27Z5X+6c/YJe1KJnXt2ZudXnn+T3/KZrbn3prh50YSLG4TMcavx5WmR5J/8sWAh9cDPWLfYLpwA+gf2PBfi8uGcFBfAdrJb64BadFfwGkFmIz3GYXnifAeisoAB0VlAA+WeF9XxOhgLILMQXPs8KCiDUF7f6PSsogPCscLDPiVIAmTLu8zpZCgAoY1OvE6YAgHN9T5wCuEiTBwUgCkAUgCgAUQCiAEQBiAIQBSAKQBSAKABRAKIARAGIAhAFUGgKgD/fFi3QGy1xrZMvKVcA/Nk6GAILLMb3OA0rF3cyFcDusBzT8HYxv79AAewAq4PBeATbKoDirAH6wuqoBm1wTfrfrq4AboFFWIzvcGqa6wUFsC4WwipgKt7GQQogjQCysX0Oq7BBeDiN9YICOBRWT2rQunrXCwogG18fWD1bhG9xSvWtFxTAzbAGNBVvVc96QQGsiwWwRjAID2EbBdA4AWRj/AzWiGrQCldjHQXQ8AEcAouX4npBAWTj7AWrMlPwJg5UAPUfwE2wKjawftcLCmAdLIBVuTJa4qr49YICCMf6KSwhi/ANTsZKCiA+gINhicrWCwcogJwAcsbbE5a4AXgQWyuAugdwIyxxEesFBbAO5sMKZiG+xnYKIH/MH8MKaiZ2UwD/P+aDYAX2lALIH3cPWEF9pwDyx3297wAUwNqY5zMABZCN/SPfASiAA/0GoACy8Xf3HYACOAFLYQlTAJERnFGgBaECiLgruA5dYYlTAJEx7If3MDv9ABRATAhr4Aq0Tz8ABRAbwx54AzPSD0ABxISwGi5CS9SkH4ACiIlhZ7yEKekHoABiQlgFN2KZswAUAMdfHQ9irqMzgALguCvgUox1tgZQABzzWHR3dhegADjWrvjN2W2gAuAYG+NdLIMlQAFU8J7/AcyBJUABVHCBdwnGwBKkACIm/xh0g6VGAcQv8H719/UA+oqgjfAOSrAEKYCIBd79mANLlwI4ezkWeBdjNKygvvISwDysXYexHo2usIK7z0sAL9VyjLvgF5gDnbGOhwA+xwq1WOC9jRKs4BbjCazm4fkAn2GFnAXefZgNc6ApdvbyhJBw8sMF3kUYDXNgEi709IygT/9n8o9GF5gDZbyLdf08JCqY/ODr8n6GOdEdB3l7TNwnWCE47oZ4CyWYA3NwG1Z09ZzAbPKDBd69mA1z4lts7vFJoR8Hk38hRsGcGI7j/T0rOJh8fj4KnWFOLMFTWM3rw6I/wgrYCT/BHGmOXTw/Lv4jbIQ3UYI5MRkXe98w4gvch1kwJ8p4D+t53zFkMkbDHOmJQ/ztGSRzcTtW8rdplHyPLfxtGycjcIK/jSNlCZ7B6v52DpUW2NXf3sEyBZf62zxayvgA6/vbPl564dDsdVEAfszDndk9vQLw5Qdsmb0WCsCPkTgpew28B/ABzImlePbv9/QK4GSYA62C/fgUALIIHsAyWAFNxWXh+6wAEESwF1oX7J7+o/x7egUQhnAxJsIS1huH5byvCiBng+bXErwszMPd2T29AogPYU+0giXgJ2yVjV0BVDaEi6r4sjAKp/zP+BVABTdlehWlKrqnfx5r5I9fARTtstAae2jS4wOIvSxMgDWgabgifvwKILXLQg0+xgaa6OoJINyRqyWsHvTBEZrgKg0gCOHCCl4W5uMerKzJTSCA4LLwSuRl4WdsHT8eBZDaZWE0TtVkJh5AEMIFtbgslPCC7umLFUB4WXgZJVigLfbUBBY0gCCE3fE9ZqALrtTEVc7vquRzBPZVAfAAAAAASUVORK5CYII=";
    let more_ico = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAmVBMVEVHcExzg79zg79zg79zg79zg79VYIBVYIBVYIBzg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79zg79VYIBzg79zg79zg79zg79VYIBzg79VYIBVYIBVYIBVYIBVYIBVYIBVYIBVYIBVYIBVYIBVYIBVYIBVYIBVYIBzg7/cE5GJAAAAMXRSTlMAumcFB/OHZqDRqk3y03Y4ZihWf+Yix0vwEjZfQNvqVBuh2oxJkRD9i1dcRxdaERZecuMnSQAAAd5JREFUeNrtmdeWgjAURaNiwd57RcfeyP9/3CzGFlRaQrgPc86LD8dk77VADAljCIIgCIIgCIIgCIIgvtlPrJXK+MPE2qmMz9u2ba/lx5+d8XlFvn2Un+BiKxnc+Ft5PmM/KgY3fkGFz1hB3iAWvoJBTHxpg9j4kgYx8qUMYuVLGMTMj2wQOz+igQZ+JAMt/AgGmvihDbTxQxpo5Icy0MoPYaCZH2ignR9gkADf1yARvo9BQnxPg8T4HgYJ8r8aBPA7s3pp8LUZjkbDr8WgVJ91Qhv48+dFzjnPLj+bZsVpKs3PZpl1muI8nIE/v9Hnt5jGW9O6F7z1Vhjmveg3whj48zPTB4an3E3vWfCeu0k9i2km2CDg+ldfGD52Ne1X0XYVY2FIlQUZnALuf1OYbSEWNaHgNbFZCIXJ/A2ubON85Dy/ZpSF2bpikxYF0mLTFYqy4Tl17s+A2bQCG3alvQQn+puQ/mdI/yCifxTT/xnR/x3TL0jol2T0i1L6ZTn9iwn9qxn9yyn96zn9BgX9Fg39JhX9Nh39RiX9Vi39ZjX9dj39gQX9kQ39oRX9sd3D4EeFv43j6PQizz+q8e8GZ/nxa0U+YztrclAZv7Ime5XxCIIgCIIgCIIgCIL8h/wC2K/Jb1aNIXIAAAAASUVORK5CYII=";
    let setting_ico = "data:image/png;base64,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";

    const def = {
        t_crx : "b29vcG4uY29tL3N0YXRpYy9jcng=",
        t_req : "aHR0cDovL2Mub29vcG4uY29tL2FwaT90eXBlPWluZm8mY2lkPWl0cmFuc2xhdG9y",
        t_tua : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.119 Safari/537.36",
        t_ydt : "&smartresult=dict&client=fanyideskweb&bv=11b89db74b56b4ba918674d36e95a672&doctype=json&version=2.1&keyfrom=fanyi.web&action=FY_BY_REALTlME",
        t_tip : "脚本安装成功,请重新刷新网页使用吧!\r\n\r\n功能简介:\r\n\r\n(1) 免费的多功能网页翻译工具,支持多种翻译引擎\r\n\r\n(3) 快捷键翻译:选中文字,按 T 翻译,按 Y 取消(快捷键可修改)\r\n\r\n(3) 可自定义更换翻译结果显示位置,自定义更换翻译字体颜色"
    }
    const message = {
        success: (text) => { toast.fire({title: text, icon: 'success'}) },
        error:   (text) => { toast.fire({title: text, icon: 'error' }) },
        warning: (text) => { toast.fire({title: text, icon: 'warning'}) },
        info:    (text) => { toast.fire({title: text, icon: 'info' }) },
        question:(text) => { toast.fire({title: text, icon: 'question'})}
    }
    let toast = Swal.mixin({
        toast: true,
        position: 'top',
        showConfirmButton: false,
        timer: 3000,
        timerProgressBar: false,
        didOpen: (toast) => {
            toast.addEventListener('mouseenter', Swal.stopTimer);
            toast.addEventListener('mouseleave', Swal.resumeTimer);
        }
    })
    let base = {
        d(str) { return decodeURIComponent(escape(atob(str))) },
        e(str) { return btoa(unescape(encodeURIComponent(str))) },
        decode(str) { return decodeURIComponent(str) },
        encode(str) { return encodeURIComponent(str) },
        setV(name, value) { GM_setValue(name, value) },
        getV(name) { return GM_getValue(name) },
        delV(name) { GM_deleteValue(name) },
        isType(obj) { return Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase(); },
        getStorage(key) { try { return JSON.parse(localStorage.getItem(key)); } catch (e) { return localStorage.getItem(key); } },
        setStorage(key, value) { if (this.isType(value)==='object' || this.isType(value)==='array') { return localStorage.setItem(key, JSON.stringify(value)); } return localStorage.setItem(key, value); },
        get(url, type) {
            return new Promise((resolve,reject) => {
                GM_xmlhttpRequest({
                    method: "GET", url,
                    headers: { "User-Agent": def.t_tua },
                    responseType: type || 'json',
                    onload: (res) => { resolve(res.response || res.responseText) },
                    onerror: (e) => { reject(e) }
                });
            });
        },
        post(url, data, headers, h) {
            if (this.isType(data) === 'object') { data = JSON.stringify(data); }
            headers === undefined || headers.length == 0 ? headers = h === undefined ? { "Content-Type":"application/x-www-form-urlencoded" } : { "Content-Type":"application/json", "User-Agent": def.t_tua }:'';
            return new Promise((resolve,reject) => {
                GM_xmlhttpRequest({
                    method: "POST", url, data, headers,
                    responseType: "json",
                    onload: (res) => { resolve(res.response || res.responseText); },
                    onerror: (e) => { reject(e) }
                });
            });
        },
        addStyle(id, tag, css) {
            var doc = document, styleDom = doc.getElementById(id);
            if(styleDom) return;
            var style = doc.createElement(tag);
            style.id = id;
            style.innerHTML = css;
            doc.getElementsByTagName('head')[0].appendChild(style);
        },
        initConfig() {
            initOption = {
                'itran_key_open': true,
                'itran_tkey' : [false, false, false,false, false, false],
                'itran_key'  : ['T', 'Y'],
                'itran_place' : '句后',
                'itran_engine': '百度翻译',
                'itran_color': '#1b538c'
            };
            base.getV('odata') === undefined && base.setV('odata', initOption);
            odata = base.getV('odata'); for( const k in initOption ){ odata[k] === undefined && base.setV('odata', initOption); }
        },
        async getBaseURL(){
            var rUrl = base.d(def.t_req);
            var tdata_times = base.getV('tdata_times')
            if( tdata_times === undefined || new Date().getTime() - tdata_times > 2.5e8 ){
                result = await base.get ( rUrl );
                if( tdata_times === undefined ){ alert(def.t_tip); location.reload() }
                if( result.version > GM_info.script.version ) base.setV("newVersion", result.website);
                base.setV('tdata_times', new Date().getTime());
                base.setV('tdata', result.info);
            }
            if( base.getV('odata') ) odata = base.getV('odata')
            if( base.getV('tdata') ) tdata = JSON.parse( base.d( base.getV('tdata') ) );
            if( base.getV('kdata') === undefined || base.getV('kdata_time') === undefined || new Date().getTime() - base.getV('kdata_time') > 7.2e6 ) upToken.all();
        },
        registerMenu() {
            GM_registerMenuCommand( '选项设置', () => { GM_openInTab( tdata.itranslator, { active: true }) } );
            GM_registerMenuCommand( '免费软件', () => { GM_openInTab( tdata.software, { active: true }) } );
            GM_registerMenuCommand( '点GG支持', () => { GM_openInTab( tdata.ad, { active: true }) } );
            if( site.indexOf( base.d(def.t_crx) ) > -1 ){
                $('#itranslator').attr('version',GM_info.script.version);
                for (const k in odata) {
                    switch (k) {
                        case 'itran_key':
                            var tk = odata.itran_tkey, tkey = odata[k][0], hkey = odata[k][1];
                            if(tk[2]) tkey = 'Shift+' + tkey; if(tk[1]) tkey = 'Alt+' + tkey;if(tk[0]) tkey = 'Ctrl+' + tkey;
                            if(tk[5]) hkey = 'Shift+' + hkey; if(tk[4]) hkey = 'Alt+' + hkey;if(tk[3]) hkey = 'Ctrl+' + hkey;
                            $('#'+k).val(tkey).attr('ctrlkey',tk[0]?tk[0]:'').attr('altkey',tk[1]?tk[1]:'').attr('shiftkey',tk[2]?tk[2]:'').attr('tkey',odata[k][0]);
                            $('#h'+k).val(hkey).attr('ctrlkey',tk[3]?tk[3]:'').attr('altkey',tk[4]?tk[4]:'').attr('shiftkey',tk[5]?tk[5]:'').attr('tkey',odata[k][1]); break;
                        case 'itran_color':
                            $('#'+k+' input').val(odata[k]); $('#'+k+' .layui-colorpicker-trigger-span').css({background:odata[k]}); break;
                        case 'itran_engine': case 'itran_place':
                            $('#'+k+' dd[lay-value="0"]').removeClass('layui-this')
                            $('#'+k+' option').each((i,e) => {
                                $(e).text() === odata[k] &&
                                $(e).attr('selected', true) &&
                                $(e).parent().parent().find('input').val(odata[k]) &&
                                $(e).parent().parent().find('dd[lay-value="'+$(e).val()+'"]').addClass('layui-this');
                            }); break;
                        default:
							if( odata[k] === true ){
                                $('#'+k+' input').prop('checked', true);
                                $('#'+k+' .layui-form-switch').addClass('layui-form-onswitch')
                                $('#'+k+' em').text("ON");
							}; break;
                    }
                }
            }
        },
        addInitStyle() {
            var color = odata.itran_color;
            var css = `.itranslator_span{color: ${color}} ${tdata.css}`;
            base.addStyle('itranslator_style', 'style', css);
        },
        pageListener() {
            doc.on('click', '.itranSave', async (e) => {
                var option = {};
                for (const k in odata) {
                    switch (k) {
                        case 'itran_color': case 'itran_engine': case 'itran_place':
                            option[k] = $('#'+k+' input').val()?$('#'+k+' input').val():odata[k]; break;
                        case 'itran_key':
                            option.itran_tkey = [Boolean($('#'+k).attr('ctrlkey')),Boolean($('#'+k).attr('altkey')),Boolean($('#'+k).attr('shiftkey')),Boolean($('#h'+k).attr('ctrlkey')),Boolean($('#h'+k).attr('altkey')),Boolean($('#h'+k).attr('shiftkey'))]
                            option[k] = []; option[k][0] = $('#'+k).attr('tkey'); option[k][1] = $('#h'+k).attr('tkey'); break;
                        default: if($('#'+k+' input')[0]) option[k] = $('#'+k+' input')[0].checked; break;
                    }
                }
                base.setV('odata', option); upToken.all(); message.success('设置保存成功!');
                setTimeout(() => { location.replace( tdata.itranslator ); }, 1500);
            });
            doc.on('click', '.itranReset', async (e) => {
                if( confirm("提示:即将进行初始化,所有设置将重置,确认吗?")){
                    base.setV('odata', initOption);
                    message.success('初始化设置成功,重启插件中!');
                    setTimeout(() => { location.replace( tdata.itranslator ); }, 1500);
                }
            });
            doc.on('click', '.itranDelete', async (e) => {
                var del_time = base.getV('del_time');
                if( del_time === undefined || new Date().getTime() - del_time > 2e7){
                    if( confirm("警告:除非插件无法使用,否则不要删除所有数据,你确认吗?")){
                        base.delV('tdata_times'); base.delV('kdata_time'); base.setV('odata', initOption);
                        base.setV('del_time', new Date().getTime());
                        message.success('所有数据删除成功,重启插件中!');
                        setTimeout(() => { location.replace( tdata.itranslator ); }, 1.5e3);
                    }
                } else {
                    alert("提示:6小时内删除过所有数据,请6小时后重试!");
                }
            });
            doc.keydown((e) => {
                if( odata.itran_key_open && site.indexOf( base.d(def.t_crx) ) == -1 ){
                    let t_num = 0, keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
                    var ele = $(".itranslator_span");
                    ele.each((i) => { let v = parseInt( $(ele[i]).attr("value") ); if( v > t_num ) t_num = v })
                    if( !tgoing && e.ctrlKey == odata.itran_tkey[0] && e.altKey == odata.itran_tkey[1] && e.shiftKey == odata.itran_tkey[2] && keyCode == odata.itran_key[0].charCodeAt(0) ){
                        let sCont, startNode, selected = window.getSelection();
                        selected && ( sCont = selected.toString() ) && ( startNode = selected.getRangeAt(0) );
                        if( sCont.length > 0 ){ if (odata.itran_place == "句前"){ startNode.collapse(true) } else { startNode.collapse(false) } utils.getTransInfo( sCont, startNode, t_num ) }
                        if( base.getV("newVersion") ){ alert("iTranslator 发现新版本,请及时更新脚本!"); GM_openInTab( base.getV("newVersion"), { active: true }); base.delV("newVersion") }
                    } else if ( e.ctrlKey == odata.itran_tkey[3] && e.altKey == odata.itran_tkey[4] && e.shiftKey == odata.itran_tkey[5] && keyCode == odata.itran_key[1].charCodeAt(0) && $(".itranslator_span").length > 0 ) {
                        utils.getTransInfo(0,0,t_num)
                    }
                }
            })
        }
    }

    let func = {
        tk(a,b){
            var d = b.split(".");
            b = Number(d[0]) || 0;
            for (var e = [], f = 0, g = 0; g < a.length; g++) {
                var k = a.charCodeAt(g);
                128 > k ? e[f++] = k : (2048 > k ? e[f++] = k >> 6 | 192 : (55296 == (k & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (k = 65536 + ((k & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = k >> 18 | 240, e[f++] = k >> 12 & 63 | 128) : e[f++] = k >> 12 | 224, e[f++] = k >> 6 & 63 | 128), e[f++] = k & 63 | 128)
            }
            a = b; for (f = 0; f < e.length; f++)a = this.Fo(a+e[f], "+-a^+6");
            a = this.Fo(a, "+-3^+b+-f"); a ^= Number(d[1]) || 0;
            0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6;
            return a.toString() + "." + (a ^ b)
        },
        Fo(a, b) {
            for (var c = 0; c < b.length - 2; c += 3) {
                var d = b.charAt(c + 2);
                d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d);
                d = "+" == b.charAt(c + 1) ? a >>> d : a << d;
                a = "+" == b.charAt(c) ? a + d & 4294967295 : a ^ d
            }
            return a
        },
        caide(t) {
            function ee(t) { return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(t) }
            t = t.split("").map(function(t) { return - 1 < ee(t) ? "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm" [ee(t)] : t }).join("");
            return base.d(t).toString()
        }
    }

    let upToken = {
        async bing(){
            var res = await base.get( tdata.bing+'/translator' );
            kdata.ig = res.match(/IG:"([A-Za-z0-9]+)"/)[1];
            [, kdata.key, kdata.token] = res.match(/var params_RichTranslateHelper\s*=\s*\[([0-9]+),\s*"([^"]+)",[^\]]*\];/);
            kdata.iid = $(res).find("#rich_tta").attr("data-iid");
            base.setV("kdata", kdata );
        },
        async ali(){
            var csrf = await base.get(tdata.csrf);
            kdata.csrf = csrf.token;
            base.setV("kdata", kdata );
        },
        async bdt(){
            var res = await base.get(tdata.bdt);
            kdata.gtk = /window\.gtk = ['"](.*?)['"]/.exec(res)[1];
            kdata.btoken = /token: ['"](.*?)['"]/.exec(res)[1];
            base.setV("kdata", kdata );
        },
        async cai(){
            kdata.caid = CryptoJS.MD5(Math.random().toString()).toString();
            var data = {"browser_id": kdata.caid };
            var header = { "Content-Type": "application/json", "X-Authorization": "token:qgemv4jr1y38jyq6vhvi" };
            var res = await base.post(tdata.cai+'/user/jwt/generate',data,header);
            kdata.jwt = res.jwt;
            base.setV("kdata", kdata );
        },
        async ydt(){
            var r = await base.get("https://fanyi.youdao.com");
            var n = r.match(/<script.*?src="(http[^"]+fanyi\.min\.js)"/);
            var p = await base.get(n[1]);
            kdata.ydt = p.match(/sign: n\.md5\("fanyideskweb" \+ e \+ i \+ "([^"]+)"\)/)[1];
            base.setV("kdata", kdata );
        },
        async qqt(){
            var res = await base.post(tdata.qqt+'/reauth12f','','',1);
            kdata.qtv = res.qtv;
            kdata.qtk = res.qtk;
            base.setV("kdata", kdata );
        },
        all(){
            this.bing(); this.ali(); this.bdt(); this.cai(); this.ydt(); base.setV("kdata_time", new Date().getTime() );
        }
    }

    let utils = {
        getTransInfo(e,node,t_num){
            if( e ){
                var tspan = document.createElement("span"), eng = odata.itran_engine, num = { "360翻译":2500,"必应翻译":2500 }
                $(tspan).addClass("itranslator_span").attr("value",++t_num).text(" "+odata.itran_engine+"等待中... "); node.insertNode(tspan);
                if( e.length > 5e3 ){
                    $(tspan).text(" 字数过多,翻译暂不可用,请减少字数重试...");
                } else {
                    if( !num[eng] || e.length < num[eng] ){ utils.getTransText(e,tspan)
                    } else { $(tspan).text(" "+eng+"只能翻译"+num[eng]+"字符以内,请减少字数重试...") }
                }
            } else { $(".itranslator_span[value=" + t_num + "]").remove() }
        },
        async getTransText(e,node){
            var tapi, url, data, header, sign, num = 0, res = "", resTxt = "", lang = (/[\u4E00-\u9FA5]/.test(e)) ? "en" : "zh";
            tgoing = true; kdata = base.getV('kdata');
            switch( odata.itran_engine ){
                case "彩云小译": while ( !resTxt.length && num < 2){
                    data = {"source":e,"trans_type":"auto2"+lang,"detect":true,"browser_id":kdata.caid};
                    header = { "X-Authorization": "token:qgemv4jr1y38jyq6vhvi", "T-Authorization": kdata.jwt, "User-Agent": def.t_tua };
                    res = await base.post(tdata.cai+'/translator',data,header); resTxt = res.target ? func.caide(res.target) : '';
                    !resTxt.length && await upToken.cai(); num++ }; utils.transOutput("",node,resTxt); break;
                case "百度翻译": while ( !resTxt.length && num < 2){
                    var e_r = e.length>30?(e.substr(0,10)+e.substr(~~(e.length/2)-5,10)+e.substr(-10)):e;
                    data = `from=auto&to=${lang}&query=${base.encode(e)}&simple_means_flag=3&sign=${func.tk(e_r,kdata.gtk)}&token=${kdata.btoken}&domain=common`;
                    res = await base.post(tdata.bdt+'/v2transapi',data); resTxt = res.trans_result ? res.trans_result.data[0].dst : '';
                    !resTxt.length && await upToken.bdt(); num++ }; utils.transOutput("",node,resTxt); break;
                case "阿里翻译": while ( !resTxt.length && num < 2){
                    data = `srcLang=auto&tgtLang=${lang}&domain=general&_csrf=${kdata.csrf}&query=${base.encode(e)}`;
                    res = await base.post(tdata.ali,data); resTxt = res.data ? res.data.translateText : '';
                    !resTxt.length && await upToken.ali(); num++ }; utils.transOutput("",node,resTxt); break;
                case "必应翻译": while ( !resTxt.length && num < 2){
                    if(lang == "zh") lang = "zh-Hans"; url = `${tdata.bing}/ttranslatev3?isVertical=1&&IG=${kdata.ig}&IID=${kdata.iid}`;
                    data = `fromLang=auto-detect&to=${lang}&token=${kdata.token}&key=${kdata.key}&text=${base.encode(e)}`;
                    res = await base.post(url,data); resTxt = res[0] ? res[0].translations[0].text : '';
                    !resTxt.length && await upToken.bing(); num++ }; utils.transOutput("",node,resTxt); break;
                case "360翻译":
                    lang = lang === "zh" ? 1 : 0; header = { "pro": "fanyi", "User-Agent": def.t_tua };
                    data = `eng=${lang}&validate=&ignore_trans=0&query=${e}`; res = await base.post(tdata.sot+data,data,header);
                    resTxt = res.data ? res.data.fanyi : ''; utils.transOutput("",node,resTxt); break;
                //case "腾讯翻译": while ( !resTxt.length && num < 2){ if(lang == "zh") lang = "zh-CN";
                    //data = `source=auto&target=${lang}&sourceText=${base.encode(e)}&qtv=${base.encode(kdata.qtv)}&qtk=${base.encode(kdata.qtk)}&sessionUuid=translate_uuid${new Date().getTime()}`;
                    //header = { "Host":"fanyi.qq.com", "Origin":"https://fanyi.qq.com", "Content-Type": "application/x-www-form-urlencoded", "Referer": "https://fanyi.qq.com/", "User-Agent": def.t_tua }
                    //res = await base.post(tdata.qqt+'/translate',data,header); console.log(res); resTxt = res.translate.records ? res.translate.records[0].targetText : '';
                    //!resTxt.length && await upToken.qqt(); num++ }; utils.transOutput("",node,resTxt);
                    //break;
                case "有道翻译": while ( !resTxt.length && num < 2){
                    var lts = "" + new Date().getTime(), salt = lts + Math.floor(10 * Math.random()); sign = CryptoJS.MD5("fanyideskweb" + e + salt + kdata.ydt);
                    data = `i=${e}&salt=${salt}&sign=${sign}&lts=${lts}${def.t_ydt}&from=AUTO&to=AUTO`;
                    header = { "Content-Type":"application/x-www-form-urlencoded", "Referer": "https://fanyi.youdao.com", "User-Agent": def.t_tua };
                    res = await base.post(tdata.ydt,data,header); if(res.translateResult){ for( var i in res.translateResult[0] ) resTxt += res.translateResult[0][i].tgt };
                    !resTxt.length && await upToken.ydt(); num++ }; utils.transOutput("",node,resTxt); break;
                case "谷歌翻译":
                    tapi = Math.random() > 0.5 ? tdata.ggt : tdata.gmt; if(lang == "zh") lang = "zh-CN";
                    url = tapi + lang + "&q=" + base.encode(e); setTimeout(() => { tgoing = false; }, 3e3);
                    $.getJSON(url, (res) => { if( res ) for(const i in res[0]) resTxt += res[0][i][0]; utils.transOutput("",node,resTxt) }); break;
                case "爱词霸":
                    sign = CryptoJS.MD5( tdata.ticb + e.replace(/(^\s*)|(\s*$)/g, "") ).toString().substring(0,16);
                    data = `from=auto&t=${lang}&q=${base.encode(e)}`; res = await base.post(tdata.icb + sign,data);
                    resTxt = res.content ? res.content.out : ''; utils.transOutput("",node,resTxt); break;
                default:
                    utils.transOutput( tdata.sgt + base.encode(e), node, " ", "#trans-result" ); break;
            }
        },
        async transOutput(url,node,e,s){
            if ( url.length > 0 ) {
                var res = await base.get(url);
                if(res) e += $(res).find(s).text(); tgoing = false;
                e.length > 1 ? $(node).text(e+" ") : $(node).text(" 翻译暂不可用,请重新尝试,或者更换翻译引擎...");
            } else {
                tgoing = false; e.length > 0 ? $(node).text(" "+e+" ") : $(node).text(" 翻译暂不可用,请重新尝试,或者更换翻译引擎...");
            }
            setTimeout(() => { tgoing = false; }, 3e3);
        }
    }

    let main = {
        init() {
            base.initConfig();
            base.getBaseURL();
            base.addInitStyle();
            base.registerMenu();
            base.pageListener();
        }
    }
    main.init()
})();

QingJ © 2025

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