煎蛋特供版(๑•̀ㅂ•́)و✧
// ==UserScript==
// @name 煎蛋匿名弹幕插件
// @namespace https://tool.zcmzcm.org/
// @version 0.3
// @description 煎蛋特供版(๑•̀ㅂ•́)و✧
// @author 断言
// @match http*://jandan.net/*
// ==/UserScript==
(function() {
'use strict';
let webBarrage = {
style: 'https://cdn.zcmzcm.org/css/webBarrage/style.css',
danmu: 'https://cdn.zcmzcm.org/js/webBarrage/jquery.barrager.min.js',
jquery: 'https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js',
server: 'wss://tool.zcmzcm.org/webBarrage',
session_id: 'https://tool.zcmzcm.org/user/session_id',
init: function() {
let jq
,c = (e) => {return document.createElement(e)}
,a = (e) => {return document.body.appendChild(e)}
,danmujs = c('script')
,send = c('div')
,style = c('link')
style.rel = 'stylesheet';
style.href = this.style,a(style);
danmujs.charset = 'utf-8';
jq = danmujs.cloneNode();
jq.src = this.jquery;
jq.onload = async () => {
// org暂时无法备案,无法申请QQ登录
this.session_id = await this.getSessionId();
danmujs.src = this.danmu,a(danmujs);
danmujs.onload = () => {
this.connect();
}
};
window.jQuery && $(jq).load() || a(jq);
send.id = 'barrageSend';a(send);
send.innerHTML = `<div id="wb_speak"><input/><span>回车发送</span></div>`;
},
connect: function() {
let ws = new WebSocket(this.server, [this.session_id.data]);
ws.onopen = (evt) => {
console.log('连接到服务器');
$('#wb_speak>input').focus();
};
ws.onclose = (evt) => {
console.log('服务器断开连接');
};
ws.onmessage = (evt) => {
let data = JSON.parse(evt.data),
item = {
//img: data.avatar, //图片
info: data.text, //文字
//href:'http://www.yaseng.org', //链接
//close:true, //显示关闭按钮
//speed:8, //延迟,单位秒,默认8
//bottom:70, //距离底部高度,单位px,默认随机
//color:'#fff', //颜色,默认白色
//old_ie_color:'#000000', //ie低版兼容色,不能与网页背景相同,默认黑色
}
$('body').barrager(item);
};
ws.onerror = (evt, e) => {
console.log('Error occured: ' + evt.data);
};
$('#wb_speak>input').bind('keydown', function(e){
if (e.keyCode == 13){
if (! $(this).val()) return false;
ws.send($(this).val());
$(this).val('');
}
});
},
getSessionId: async function() {
return (await fetch(this.session_id, {method: "GET",credentials:"include", mode: "cors", headers: {"Content-Type": "application/x-www-form-urlencoded"},})).json();
},
}
webBarrage.init();
})();