代碼如下
const script = document.createElement("script")
script.innerHTML = `
function fireKeyEvent(el, evtType, keyCode) {
var doc = el.ownerDocument,
win = doc.defaultView || doc.parentWindow,
evtObj;
if (doc.createEvent) {
if (win.KeyEvent) {
evtObj = doc.createEvent('KeyEvents');
evtObj.initKeyEvent(evtType, true, true, win, false, false, false, false, keyCode, 0);
}
else {
evtObj = doc.createEvent('UIEvents');
Object.defineProperty(evtObj, 'keyCode', {
get: function () { return this.keyCodeVal; }
});
Object.defineProperty(evtObj, 'which', {
get: function () { return this.keyCodeVal; }
});
evtObj.initUIEvent(evtType, true, true, win, 1);
evtObj.keyCodeVal = keyCode;
if (evtObj.keyCode !== keyCode) {
console.log("keyCode " + evtObj.keyCode + " 和 (" + evtObj.which + ") 不匹配");
}
}
el.dispatchEvent(evtObj);
}
else if (doc.createEventObject) {
evtObj = doc.createEventObject();
evtObj.keyCode = keyCode;
el.fireEvent('on' + evtType, evtObj);
}
}
let t = 0
let timer = null
let content = null
let Min = 10000
let Max = 12000
let time = Min
window.onkeydown = e => {
if (e.keyCode === 18) {
if (t++ % 2 === 0) {
console.log('彈幕開始')
new Promise((resolve, reject) => {
if (window.confirm('自定義彈幕請點擊確定,自動彈幕模式請點擊取消')) {
content = window.prompt('請輸入自動發(fā)送的彈幕內(nèi)容')
}
resolve(content)
} ).then(res => {
const hh = () => {
timer = setTimeout(() => {
const target = document.querySelector("#pub_msg_input")
let nodes = []
if (!res) nodes = document.querySelectorAll(".msg-normal .msg")
fireKeyEvent(target, 'keydown', 13)
target.value = res || nodes.length&&nodes[(Math.round(Math.random() * (nodes.length - 1)))].innerText || '大家好'
document.querySelector('#msg_send_bt').click()
time = (Min + Math.round(Math.random() * (Max - Min)))
console.log(time)
clearInterval(timer)
hh()
}, time)
}
hh()
})
} else {
console.log('彈幕已停止')
alert('彈幕已停止')
clearInterval(timer)
}
}
}
`
document.querySelector('body').append(script)
研究的時候發(fā)現(xiàn)虎牙每兩條彈幕發(fā)送時間必須在10秒以外,10秒以內(nèi)的話,就會被后端關(guān)閉WebSocket的連接。。所以上面這段代碼并沒有太大的意義。。不過運行實際效果還是蠻有趣的。。
前提
首先是裝有油猴插件的瀏覽器,點擊油猴圖標,點擊"添加新腳本",然后把上面代碼粘貼到"your code here" 處。。
"設(shè)置"面板中,"用戶匹配"點擊"添加",輸入
*://www.huya.com/*
即可。
不想安裝油猴插件的,可以直接打開控制臺,把代碼粘貼進去,回車即可。這種方式的話,刷新一下頁面需要重新粘貼一遍代碼。
用法
在虎牙視頻播放界面,按 ALT 鍵。
按一下,選擇發(fā)送彈幕類型,點擊"確定"是手動輸入彈幕內(nèi)容,然后每隔10-12秒自動重復(fù)發(fā)送,點擊"取消"是自動獲取別人的彈幕進行發(fā)送。
再按一下,取消發(fā)送彈幕