Greasy Fork

Greasy Fork is available in English.

枝江拖拉机 说书人优化版

修改了原脚本的循环发送功能,现在说书可以直接粘贴整段文字,不用自己手动分割弹幕;用于B站直播的弹幕重复发送,弹幕发送间隔时间建议为六秒及以上(不然容易发送过快)/与 枝江说书人 脚本冲突,用哪个就关闭另一个

当前为 2023-11-03 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
clerver-cirno
评分
0 0 0
版本
1.0.0
创建于
2023-11-03
更新于
2023-11-03
大小
17.1 KB
许可证
MIT
适用于

// ==UserScript==
// @name b站枝江独轮车+一键说书修改版
// @namespace http://tampermonkey.net/
// @version 1.0.0
// @description 本脚本进行说书无需手动分割弹幕,直接复制文章到说书人窗口说书开始一键说书;是枝江独轮车的修改版,未获得原作者同意,原作者看到若不同意可以联系我删除该脚本。用于B站直播的弹幕重复发送,弹幕发送间隔时间建议为六秒及以上(不然容易发送过快)/与 枝江说书人 脚本冲突。
// @author 9othic&原作者(你失散已久的父亲向晚)
// @match https://live.bilibili.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM_getValue
// @grant GM_setValue
// @license MIT
// ==/UserScript==

(function () {
'use strict';

var check = setInterval(function () {
let point1 = document.getElementsByClassName("bottom-actions p-relative")[0];
let point2 = document.getElementsByClassName('chat-history-panel')[0];
if (point1 !== undefined && point2 !== undefined) {
let panelBtn = 0;//面板开关的数值,开为1,关为0
let tractorBtn = 0;//拖拉机开关数值,开为1,关为0
var tractorValue = '';//拖拉机内容
var mudTruckValue = '';//泥头车内容
var tractor;//拖拉机定时器
var value;//快速发送内容
var time = '';//弹幕发送间隔
var index = 0;

//创建控制面板开关按钮
let btn = document.createElement('div');
btn.className = 'p-absolute';
btn.style.left = '0';
btn.style.top = '0';
btn.innerHTML = '拖拉机面板';
point1.appendChild(btn);

//创建拖拉机关闭按钮
let btn1 = document.createElement('div');
btn1.className = 'p-absolute';
btn1.style.left = '90px';
btn1.style.top = '0';
btn1.innerHTML = '关闭拖拉机';
btn1.style.display = 'none';
point1.appendChild(btn1);

//创建控制面板
let panel = document.createElement('div');
panel.style.position = 'absolute';
panel.style.bottom = '145px';
panel.style.left = '0';
panel.style.width = '100%';
panel.style.zIndex = 50;
panel.style.backgroundColor = '#fff';
panel.style.display = 'flex';
panel.style.justifyContent = 'center';
panel.style.alignItems = 'center';
panel.innerHTML = '

嘀哩啪啦吧啦啪啦boom

独轮车
说书人
随机发送
发送间隔为-+秒
开启拖拉机
发送间隔为-+秒
开启拖拉机
发送间隔为-+秒
开启拖拉机

';
panel.style.display = 'none';
point2.appendChild(panel);
for (var i = 0; i < panel.querySelectorAll('#time').length; i++) {
panel.querySelectorAll('#time')[i].value = GM_getValue('time', '6');
}

//为按钮绑定点击事件,点击打开或关闭面板
btn.addEventListener('click', function () {
if (!panelBtn) {
panel.style.display = 'flex';
panelBtn = 1;
}
else {
panel.style.display = 'none';
panelBtn = 0;
}
});

//为控制面板切换绑定事件
for (var i = 0; i < panel.querySelector('#myHead').children.length; i++) {
panel.querySelector('#myHead').children[i].addEventListener('click', function () {
for (var j = 0; j < panel.querySelector('#myBody').children.length; j++) {
panel.querySelector('#myBody').children[j].style.display = 'none';
}
panel.querySelector('#myBody').children[this.getAttribute('data-index')].style.display = 'flex';
});
}

//为加减时间按钮绑定事件
for (var i = 0; i < panel.querySelectorAll('#sub').length; i++) {
panel.querySelectorAll('#sub')[i].addEventListener('click', function () {
let timeClone = panel.querySelector('#time').value;
if (timeClone * 1 > 1) {
timeClone = --timeClone + '';
GM_setValue('time', timeClone);
for (var j = 0; j < panel.querySelectorAll('#sub').length; j++) {
panel.querySelectorAll('#time')[j].value = timeClone;
}
}
});
}
for (var i = 0; i < panel.querySelectorAll('#add').length; i++) {
panel.querySelectorAll('#add')[i].addEventListener('click', function () {
let timeClone = panel.querySelector('#time').value;
timeClone = timeClone * 1;
timeClone = ++timeClone + '';
GM_setValue('time', timeClone);
for (var j = 0; j < panel.querySelectorAll('#add').length; j++) {
panel.querySelectorAll('#time')[j].value = timeClone;
}
});
}

//为间隔时间输入框绑定输入事件
for (var i = 0; i < panel.querySelectorAll('#time').length; i++) {
panel.querySelectorAll('#time')[i].addEventListener('input', function () {
this.value = this.value.replace(/[^\d]/g, '');
GM_setValue('time', this.value);
for (var j = 0; j < panel.querySelectorAll('#time').length; j++) {
panel.querySelectorAll('#time')[j].value = this.value;
}
});
}

//拖拉机开关闭
//为独轮车开关绑定事件
panel.querySelector('#dulunchePanel').querySelector('#ruin').addEventListener('click', function () {
//开启独轮车
if (!tractorBtn) {
tractorValue = panel.querySelector('#duluncheInput').value;
time = panel.querySelector('#dulunchePanel').querySelector('#time').value;
if (tractorValue != '' && time != '') {
btn.getElementsByTagName('button')[0].getElementsByTagName('span')[0].innerText = '拖拉机启动';
btn.getElementsByTagName('button')[0].style.backgroundColor = '#d93f4b';
go();
tractor = setInterval(go, time * 1000);//弹幕发送间隔时间
panel.querySelector('#partition').style.display = 'flex';
btn1.style.display = 'block';
tractorBtn = 1;
}
else if (tractorValue == '' && time != '') {
alert('未设置弹幕');
}
else if (tractorValue != '' && time == '') {
alert('未设置弹幕发送间隔时间');
}
else {
alert('未设置弹幕及弹幕发送间隔时间');
}
}
});
//分割弹幕函数
function seperateMud(mudTruckValue){
if(mudTruckValue.length<1)return NULL;
let s=mudTruckValue;
let dot="。;!?";
dot+='\n';
let flg=0;
let ans="";
for(let i=0;i8||((i-flg)>8&&(i-flg)%29==0))
{ans+="|";flg=i;
}
}
return ans;
}
//为说书人模式开关绑定事件
panel.querySelector('#loopPanel').querySelector('#ruin').addEventListener('click', function () {
if (!tractorBtn) {
mudTruckValue = panel.querySelector('#loopInput').value;
time = panel.querySelector('#loopPanel').querySelector('#time').value;
if (mudTruckValue != '' && time != '') {
let _mudTruckValue=seperateMud(mudTruckValue);
var valueArray = _mudTruckValue.split('|');
if (valueArray.length > 1) {
tractorValue = valueArray[index];
index++;
go();
tractor = setInterval(function () {
tractorValue = valueArray[index];
if (index < valueArray.length - 1) {
index++;
}
else if (index == valueArray.length - 1) {
index = 0;
}
go();
}, time * 1000);
btn.getElementsByTagName('button')[0].getElementsByTagName('span')[0].innerText = '拖拉机启动';
btn.getElementsByTagName('button')[0].style.backgroundColor = '#d93f4b';
panel.querySelector('#partition').style.display = 'flex';
btn1.style.display = 'block';
tractorBtn = 1;
}
else {
alert('请设置大于30字符长度弹幕');
}
}
else if (mudTruckValue == '' && time != '') {
alert('未设置弹幕');
}
else if (mudTruckValue != '' && time == '') {
alert('未设置弹幕发送间隔时间');
}
else {
alert('未设置弹幕及弹幕发送间隔时间');
}
}
});

//为随机模式开关绑定事件
panel.querySelector('#randomPanel').querySelector('#ruin').addEventListener('click', function () {
if (!tractorBtn) {
mudTruckValue = panel.querySelector('#randomInput').value;
time = panel.querySelector('#randomPanel').querySelector('#time').value;
if (mudTruckValue != '' && time != '') {
var randomArray = mudTruckValue.split('|');
if (randomArray.length > 1) {
tractorValue = randomArray[Math.round(Math.random() * (randomArray.length - 1))];
go();
tractor = setInterval(function () {
tractorValue = randomArray[Math.round(Math.random() * (randomArray.length - 1))];
go();
}, time * 1000);
btn.getElementsByTagName('button')[0].getElementsByTagName('span')[0].innerText = '拖拉机启动';
btn.getElementsByTagName('button')[0].style.backgroundColor = '#d93f4b';
panel.querySelector('#partition').style.display = 'flex';
btn1.style.display = 'block';
tractorBtn = 1;
}
else {
alert('请设置大于1条弹幕');
}
}
else if (mudTruckValue == '' && time != '') {
alert('未设置弹幕');
}
else if (mudTruckValue != '' && time == '') {
alert('未设置弹幕发送间隔时间');
}
else {
alert('未设置弹幕及弹幕发送间隔时间');
}
}
});

//为关闭拖拉机按钮绑定事件
btn1.querySelector('#closeBtn').addEventListener('click', function () {
if (tractorBtn) {
tractorBtn = 0;
btn.getElementsByTagName('button')[0].getElementsByTagName('span')[0].innerText = '拖拉机面板';
btn.getElementsByTagName('button')[0].style.backgroundColor = '#23ade5';
panel.querySelector('#partition').style.display = 'none';
btn1.style.display = 'none';
mudTruckValue = '';
index = 0;
clearInterval(tractor);
}
});

//发送弹幕函数
function go() {
let text = document.getElementsByClassName('chat-input')[1];
let evt = document.createEvent('HTMLEvents');
evt.initEvent('input', true, true);
text.value = text._value = tractorValue;
text.dispatchEvent(evt);
document.querySelector('.live-skin-highlight-button-bg').click();
}
clearInterval(check);
}
}, 100);
})();