Greasy Fork is available in English.

b站聊天弹幕(自己发出去的弹幕)翻译成日语或其他

个人的备份版。当前有很大瑕疵,但是能用。学完vue再来搞回车发送的问题。

Stan na 29-11-2020. Zobacz najnowsza wersja.

// ==UserScript==
// @name         b站聊天弹幕(自己发出去的弹幕)翻译成日语或其他
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  个人的备份版。当前有很大瑕疵,但是能用。学完vue再来搞回车发送的问题。
// @author       kittyguy
// @connect      cdn.jsdelivr.net
// @require      https://greasyfork.org/scripts/416533-%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91api%E7%9A%84md5/code/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91api%E7%9A%84md5.js?version=872196
// @require      https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
// @match        https://www.douyu.com/*
// @match        https://www.twitch.tv/*
// @match        https://www.youtube.com/*
// @match        https://live.bilibili.com/*
// @grant        none
// @grant        unsafewindow
// @grant        GM_xmlhttpRequest
// @grant        GM_getValue
// @grant        GM_setValue
// @run-at       document-end
// ==/UserScript==
(function(){
    'use strict';
    let $ = window.jQuery;
    let appid = '20201121000622236';
    let key = 'znFjX9HjUUgsUtfmDayw';
    let flag=false;
    //斗鱼开始
    /*setTimeout(function(){
        $(document).keydown(function (e) {
            if (e.which==13){
                $('.ChatSend-button').click();
            }
        });
        $('.ChatSend-button ').on('click',function(){
            // alert(1)
            let query;
            if(flag=!flag){
                query = $('.ChatSend-txt').val();
                $('.ChatSend-txt').val('');
                translation(query,'zh','jp').then(value => {$('.ChatSend-txt').val(value);console.log(value);}).then(()=>{if(flag){$('.ChatSend-button').click();}});
            }
        });
    },3000);*/
    //bilibli开始
    setTimeout(function(){
    $(window).on('keydown',function (e) {
        if (e.which==13){
            $('.chat-input.border-box').click();
            //alert(1)
        }
    });
    $('.chat-input.border-box').click(function(){
        // alert(1)
        let query;
        //if(flag=!flag){
            let event = document.createEvent('Event')
            event.initEvent('input', true, true);
            // 选择器填写弹幕内容
            //console.log($('.chat-input.border-box').val());
            query = $('.chat-input.border-box').val();
            console.log(query);
            $('.chat-input.border-box').val('');
            translation(query,'zh','jp').then(value =>
                                              {let event = document.createEvent('Event')
                                              event.initEvent('input', true, true);
                                               $('.chat-input.border-box').val(value);
                                               $('.chat-input.border-box')[0].dispatchEvent(event);
                                               console.log(value);}).then(()=>
                                                                          {$('.bl-button.live-skin-highlight-button-bg.bl-button--primary.bl-button--small').click();});
        }
    );
},5000);
setTimeout(addjQ(),9000);
//twitch开始
/*setTimeout(function(){
        flag=false;
        let a=$("textarea[data-a-target='chat-input']");
        let b=$("button[data-a-target='chat-send-button']");
        $(document).keydown(function (e) {
            if (e.which==13){
                $("button[data-a-target='chat-send-button']").click();
            }
        })
        $("button[data-a-target='chat-send-button']").on('click',function(){
             //alert(1)
            let query;
            if(flag=!flag){
                $("textarea[data-a-target='chat-input']")[0].focus();
                query = $("textarea[data-a-target='chat-input']").text();
                alert(query+'1');
                $("textarea[data-a-target='chat-input']").text('');
                translation(query,'zh','en');
                setTimeout(function () {
                    $("textarea[data-a-target='chat-input']")[0].focus();
                    $("textarea[data-a-target='chat-input']").text(s);
                    alert(s+'2');
                    if(flag){
                      $("button[data-a-target='chat-send-button']").click();
                    }
                },3000)
            }
        });
    },9000)*/
function addjQ(){//如果网站不支持jQuery可以运行这个方法
    var jq = document.createElement('script');
    jq.src = "https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js";
    document.getElementsByTagName('head')[0].appendChild(jq);
}
function translation(uquery,ufrom,uto) {//返回的是Promise对象
    return new Promise((resolve, reject) => {
        let salt = (new Date).getTime();
        let query = uquery;
        // 多个query可以用\n连接  如 query='apple\norange\nbanana\npear'
        let from = ufrom;
        let to = uto;
        let str1 = appid + query + salt + key;
        let sign = window.MD5(str1);//签名
        $.ajax({
            url: '//api.fanyi.baidu.com/api/trans/vip/translate/non-https',
            type: 'get',
            dataType: 'jsonp',
            async: false,
            data: {
                q: query,
                appid: appid,
                salt: salt,
                from: from,
                to: to,
                sign: sign
            },
            success: function (data) {
                if (data != null) {
                    resolve(data.trans_result[0].dst);//百度翻译返回的结果
                    // console.table(query);
                    //$('#val').val(s)
                    //console.log(2)
                    //alert(s)
                }
            }

        });
    })
}
})();
/*
在检测到回车的时候会提交弹幕内容并且清空textarea,等他的keydown事件执行完了再执行你的keydown事件,自然就读不到东西了。
如果你单纯就是想知道发送了什么,可以去读网站的vue变量,b站在聊天框上绑定了一个vue变量,用.lastdanmajku属性可以看到上一次发送了什么。----manakanemu*/