// ==UserScript==
// @name Acfun直播观众助手
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Acfun直播间自动点赞(可设置下次进入直播间就直接开始自动点赞),自动发送弹幕(弹幕抽奖好帮手);此脚本仅限个人学习交流,若侵犯到您的权益请联系删除。
// @author czhen
// @license MIT
// @match https://live.acfun.cn/live/*
// @icon https://cdn.aixifan.com/ico/favicon.ico
// @require https://libs.baidu.com/jquery/1.11.1/jquery.min.js
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant GM_listValues
// @grant GM_notification
// @grant GM_info
// @grant GM_registerMenuCommand
// ==/UserScript==
(function () {
'use strict';
//格式化字符
const tempName = 'acLive';
//用户uid对应的cookie名
const userCookie = 'auth_key';
//显示的base64图片
const imgBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAACXBIWXMAAAAAAAAAAQCEeRdzAAADAFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAhISEODg4TExM7OzsoKCgbGxs4ODgDAwP9/f0sLCwxMTE9PT1JSUk1NTUeHh4YGBgHBwdOTk4/Pz8lJSULCwt6enq+vr7z8/PU1NR3d3dzc3NGRkb29vZoaGj6+vr4+Pi6urqHh4eEhIS2traurq5UVFRRUVFBQUEvLy/R0dHMzMyrq6uYmJhra2tjY2MBAQHu7u7o6OjBwcGbm5uQkJB+fn5cXFzW1taxsbGBgYFubm6np6eUlJSKioplZWXw8PDY2Ni0tLTq6urk5OTg4ODa2tqMjIxfX19ZWVlDQ0Pe3t5YWFjs7OzOzs7Dw8PHx8ekpKTJycmioqLFxcWgoKCfn5+enp719fUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJATM3AAABAHRSTlMA7w6Widt1PRoJBPrVzMK2bzgy48i8Zk8sIfbor3xdVhaknZBsSkSqJtH/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////loZ16AAADDFJREFUeJztWmdX20gXhoSQQnoC6T2b7N6rZrn3hjG2wd1gMNiYYjqE3glJ/vjekWTjDpx9c877Ic8HJFmaeTS33xEdHX/wB3/wB3/wf4c7j9/1dfe9u3nrN3I8fvjh6d0nN+697nr74vcwvO++AVX4582Fy7n215vrX3sffLj+8Mu1y3G86QHYjw+kjG7Jurc5tAzQ03W73YBnr1+ev1Ln9ccXUzy+C+Db9mAFnsQQwJObLQe8pQEwUiglLJZE4GyELr4+v4DjLcCMhabO8Q5LNhsdF3N0Yaah3R0df3/pe/Ppw4Pe3vv3e79+eqhYxeN/AHaL0vk7pTfDAG/acnwGOKUnXa70ji2mLH/yp4t+WADorVGUivsf6YExNrfd4i0lTXY9ndp+ADy405rjC0AAUReDktGsmy9PFaMXDdBx7WB2yjs2nUg6nXtL3oXYjJ9+LDiIIXAC4dHi2LbFbLQTjWUZ7rZkud0Dw4gpGus0irb4+RuPIy6NGbEevLm4RH+zJKB4WpBMVjFlsYg2es11uN+K5DqcIDpp0jAjma2Si6jNagwmxkNbe0H3uWVY9un+HG9MiUabTZLNO84Erc0PXc05bgHYUGJz/rKkRW6ozDBxmpBQSAwP7Q5WWJf743PTaQFxgF0FPOKOkXMG5qYlzmWdXtSjCaC5QX6CUcR+ZYqdtOjOq9NFsm7UFUfO56/CAIbYYZU4OHmIpAaZaZs1N7WKOAevmmrkJRjRogxec5lEaUQ5PTWhaWG9GQPABp9kh3BKSkmm8jNJyTkAIcRJeNuE5B30Ix6odita5TRbU8aJXPZXcwqALXXdMbtZ5g7KPw5+Y395HIcbTdUeRaP64LpslU0rAFlHLjDZigI2HFuq0HQuW6Du3jDq/fC+keQfSKFUnIofrMG+SbZaYXAPzd9bUtAr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';
//js脚本操作实体
let JSEntity = {
//脚本是否可用
isEnable: true,
//添加样式
addStyle: function () {
let style = document.createElement('style');
style.type = 'text/css';
style.textContent = `
.${tempName}-dom {
position: absolute;
z-index: 100;
top: 108px;
left: 50%;
}
#${tempName}-click {
width: 50px;
height: 50px;
background-image:url(${imgBase64});
background-size:100% 100%;
background-position: center center;
background-repeat:no-repeat;
background-color: #fd4c5c;
cursor: pointer;
border:1px solid red;
border-radius: 10px;
}
#${tempName}-click:hover {
background-size:122% 122%;
}
#${tempName}-menu {
z-index: 200;
width: 400px;
height: 160px;
display:none;
border-radius: 10px;
background-color: #fd4c5c;
color:#fff;
}
#${tempName}-menu dt {
font-size:16px;
font-weight:700;
margin-bottom:5px;
color:#ffefa2;
}
#${tempName}-menu label { cursor: pointer; }
#${tempName}-menu input[type="checkbox"] {
vertical-align:middle;
width:16px;
height:16px;
cursor: pointer;
margin-left:0;
margin-right:3px;
}
#${tempName}-menu input[type="number"] {
vertical-align:middle;
width:30%;
height:18px;
font-size:16px;
padding-top:2px;
padding-left:5px;
border:1px solid #767676;
border-radius: 5px;
margin-left:0;
margin-right:3px;
}
#${tempName}-menu > .menu-box {
height:72%;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-content: stretch;
}
#${tempName}-menu > .menu-box > .menu-item {
box-sizing: border-box;
width: 50%;
padding:2%;
border: 1px dashed #ffbc00;
border-radius:10px;
}
#${tempName}-menu button {
cursor: pointer;
}
#${tempName}-menu dd.action-btns {
margin-top: 5px;
text-align:center;
}
#${tempName}-menu > .menu-btns {
margin-top: 12px;
text-align:center;
}
input.intervalTime::-webkit-outer-spin-button {
-webkit-appearance: none;
}
input.intervalTime::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input.intervalTime {
-moz-appearance: textfield;
}
`;
document.head.appendChild(style);
},
//添加dom节点
addDom: function () {
let addHtml = `
<div class="${tempName}-dom" id="${tempName}-click" title="点击我打开菜单栏"></div>
<div class="${tempName}-dom" id="${tempName}-menu">
<div class="menu-box">
<div class="menu-item" id="${tempName}-likeItem">
<dl>
<dt>自动点赞</dt>
<dd title="每隔多少秒执行一次自动点赞"><input type="number" value="10" class="intervalTime" />间隔秒数</dd>
<dd title="勾选表示下次进入当前直播间后就会直接开始自动点赞"><label><input type="checkbox" class="isAuto" />下次进入自动点赞</label></dd>
<dd class="action-btns">
<button type="button" data-type="likestart">开始点赞</button>
<button type="button" data-type="likeend">取消点赞</button>
</dd>
</dl>
</div>
<div class="menu-item" id="${tempName}-commentItem">
<dl>
<dt>自动弹幕</dt>
<dd title="每隔多少秒发送一次弹幕"><input type="number" value="10" class="intervalTime" />间隔秒数</dd>
<dd class="action-btns">
<button type="button" data-type="commentstart">开始弹幕</button>
<button type="button" data-type="commentend">取消弹幕</button>
</dd>
</dl>
</div>
</div>
<div class="menu-btns">
<button type="button" data-type="close">关闭弹窗</button>
</div>
</div>
`;
//添加操作菜单
$('body').append(addHtml);
//添加点赞次数
$('.author-info-detail').append(`<div style="color:red;font-size:18px;margin-left:15px;" title="已点赞次数">+<b id="${tempName}-likeCount">0</b></div>`);
},
//点赞相关功能
likeUnits: {
//点赞按钮
btn: null,
//点赞次数
count: 0,
//点赞计时器
timer: null,
//执行点赞的方法
exeFn: function () {
let _this = this;
_this.btn.click();
_this.count++;
$(`#${tempName}-likeCount`).text(_this.count);
},
//自动开始点赞
autoStart: function (num) {
let _this = this;
let _p = JSEntity.publicUnits;
_this.btn = $('.author-interactive-area >.like-btn');
//未找到点赞按钮,直接返回
if (!_this.btn) {
//发送失败通知
_p.showPageNotify('自动点赞功能 开启失败!\nX﹏X');
return false;
};
//发送通知
_p.showPageNotify('开启 自动点赞功能!\n(づ ̄3 ̄)づ╭❤~');
//直接先触发一次点赞事件
_this.exeFn();
//初始化计时器开始连续点赞
_this.timer = setInterval(function () {
_this.exeFn();
}, num * 1000);
//发送弹幕
JSEntity.commentUnits.inputVal('请组织放心,我已开启自动点赞!为' + (_p.upNickName) + '疯狂打CALL!!!');
$('.wrap-bottom-area > .send-btn').click();
},
//开始点赞
start: function () {
let _this = this;
let _p = JSEntity.publicUnits;
_this.btn = $('.author-interactive-area >.like-btn');
//未找到点赞按钮,直接返回
if (!_this.btn) {
//发送失败通知
_p.showPageNotify('自动点赞功能 开启失败!\nX﹏X');
return false;
};
//隐藏菜单
_p.toggleMenu(0);
//发送通知
_p.showPageNotify('开启 自动点赞功能!\n(づ ̄3 ̄)づ╭❤~');
//直接先触发一次点赞事件
_this.exeFn();
//获取计时器时间间隔
let val = $(`#${tempName}-likeItem`).find('input.intervalTime').val();
let num = Number(val) || 10;
if (num < 1) num = 1;
//先清除原有计时器
_this.timer && clearInterval(_this.timer);
//初始化计时器开始连续点赞
_this.timer = setInterval(function () {
_this.exeFn();
}, num * 1000);
//是否下次进入直播间就自动开始点赞
let isAuto = $(`#${tempName}-likeItem`).find('input.isAuto').prop('checked');
//存储本地数据
_p.setValue('like', { intervalTime: num, isAuto: isAuto });
},
//取消点赞
end: function () {
let _this = this;
let _p = JSEntity.publicUnits;
//隐藏菜单
_p.toggleMenu(0);
//发送通知
_p.showPageNotify('关闭 自动点赞功能!\nヾ( ̄▽ ̄)Bye~Bye~');
//清除计时器
if (_this.timer) {
clearInterval(_this.timer);
_this.timer = null;
};
//还原本地存储为默认数据
let def = _p.defStorageOptions.like;
_p.setValue('like', def);
}
},
//发送弹幕相关功能
commentUnits: {
//弹幕发送按钮
btn: null,
//弹幕内容文本框
textarea: null,
//输入的弹幕内容
content: null,
//自动发送弹幕次数
count: 0,
//发送弹幕计时器
timer: null,
//填入弹幕内容
inputVal: function (val) {
let _this = this;
if (!_this.textarea) _this.textarea = $('.danmaku-input-wrap >textarea');
_this.textarea.val(val);
let event = new Event('input', { bubbles: true });
let tracker = _this.textarea[0]._valueTracker;
if (tracker) tracker.setValue('');
_this.textarea[0].dispatchEvent(event);
},
//执行发送弹幕的方法
exeFn: function () {
let _this = this;
_this.btn.click();
_this.count++;
_this.inputVal(_this.content);
},
//开始发送弹幕
start: function () {
let _this = this;
let _p = JSEntity.publicUnits;
_this.btn = $('.wrap-bottom-area > .send-btn');
//未找到发送弹幕按钮,直接返回
if (!_this.btn) {
//发送失败通知
_p.showPageNotify('自动发送弹幕功能 开启失败!\nX﹏X');
return false;
};
_this.textarea = $('.danmaku-input-wrap >textarea');
_this.content = _this.textarea.val();
//没有要发送的弹幕内容,直接返回
if (!_this.btn.hasClass('enable') || !_this.content) {
//发送失败通知
_p.showPageNotify('没有装填弹幕,这让我很难搞啊!\n请先在右下角评论框中输入弹幕!\n ┗( T﹏T )┛');
_this.textarea.focus();
return false;
};
//隐藏菜单
_p.toggleMenu(0);
//发送通知
_p.showPageNotify('开启 自动发送弹幕功能!\n(o゜▽゜)o☆');
//直接先触发一次弹幕发送事件
_this.exeFn();
//获取计时器时间间隔
let val = $(`#${tempName}-commentItem`).find('input.intervalTime').val();
let num = (Number(val) || 10);
if (num < 0.1) num = 0.1;
//先清除原有计时器
_this.timer && clearInterval(_this.timer);
//初始化计时器开始连续发送弹幕
_this.timer = setInterval(function () {
_this.exeFn();
}, num * 1000);
//存储本地数据
_p.setValue('comment', { intervalTime: num });
},
//取消发送弹幕
end: function () {
let _this = this;
let _p = JSEntity.publicUnits;
//隐藏菜单
_p.toggleMenu(0);
//发送通知
_p.showPageNotify('关闭 自动发送弹幕功能!\nヾ( ̄▽ ̄)Bye~Bye~');
//清除计时器
if (_this.timer) {
clearInterval(_this.timer);
_this.timer = null;
};
//还原本地存储为默认数据
let def = _p.defStorageOptions.comment;
_p.setValue('comment', def);
}
},
//公用相关功能
publicUnits: {
//脚本名称
scriptName: null,
//主播uid
upUid: null,
//主播昵称
upNickName: null,
//主播头像
upPhoto: null,
//当前登录(不可用)用户uid
userUid: null,
//当前直播间的本地存储名称
storageName: null,
//桌面通知默认配置
defNotifyOptions: {
title: 'ACFUN',
text: '通知信息',
image: 'https://cdn.aixifan.com/ico/favicon.ico',
highlight: true,
timeout: 60000
},
//本地存储默认配置
defStorageOptions: {
like: {
intervalTime: 10,
isAuto: false
},
comment: {
intervalTime: 10
}
},
//显示/隐藏菜单
toggleMenu: function (type) {
let $menu = $(`#${tempName}-menu`);
if (type === 1) {
$menu.show();
} else {
$menu.hide();
}
},
//显示桌面通知基础方法
showNotify: function (options) {
if (!options) return false;
if (typeof options === 'string') options = { text: options };
let config = $.extend({}, JSEntity.publicUnits.defNotifyOptions, options);
GM_notification(config);
},
//显示当前页面的桌面通知(带着主播头像和昵称)
showPageNotify: function (text) {
let _this = this;
_this.showNotify({
title: `${_this.upNickName}的直播间`,
text: text,
image: `${_this.upPhoto}`
});
},
//设置本地存储的数据
setValue: function (type, value) {
let _this = this;
let typeData = {};
typeData[type] = value;
let oldValue = _this.getValue();
let newValue = $.extend(true, {}, oldValue, typeData);
GM_setValue(_this.storageName, newValue);
},
//获取本地存储
getValue: function () {
let _this = this;
return GM_getValue(_this.storageName, _this.defStorageOptions);
},
//删除本地存储
deleteValue: function (name) {
let _this = this;
GM_deleteValue(name || _this.storageName);
},
//清空本地存储
clearValue: function () {
let _this = this;
let list = GM_listValues();
if (list.length > 0) {
list.forEach(function (item) {
_this.deleteValue(item);
});
};
}
},
//绑定事件
bindEvents: function () {
//显示菜单
$(`#${tempName}-click`).click(function () {
JSEntity.publicUnits.toggleMenu(1);
});
//菜单按钮点击
$(`#${tempName}-menu button`).click(function () {
let $btn = $(this),
type = $btn.data('type');
switch (type) {
case 'likestart':
JSEntity.likeUnits.start();
break;
case 'likeend':
JSEntity.likeUnits.end();
break;
case 'commentstart':
JSEntity.commentUnits.start();
break;
case 'commentend':
JSEntity.commentUnits.end();
break;
default:
JSEntity.publicUnits.toggleMenu(0);
break;
}
});
},
initData: function () {
let publicUnits = JSEntity.publicUnits;
//脚本名称
publicUnits.scriptName = publicUnits.defNotifyOptions.title = GM_info.script.name;
//登录(不可用)用户uid
let userUid = document.cookie.match(`[;\s+]?${userCookie}=([^;]*)`)?.pop();
if (!userUid) {
publicUnits.showNotify('没登录(不可用)还想调戏我! ╮(╯_╰)╭');
JSEntity.isEnable = false;
return false;
};
publicUnits.userUid = userUid;
//主播uid
publicUnits.upUid = window.location.href.split('/live/')[1];
//主播昵称
publicUnits.upNickName = $('.author-info-detail').find('a.up-name').text();
//主播头像
publicUnits.upPhoto = $('.live-author-avatar').find('img.live-author-avatar-img').attr('src');
//存储名称
publicUnits.storageName = `${tempName}_${publicUnits.upUid}`;
},
//初始化本地存储
initStorage: function () {
//获取当前直播间的本地存储数据
let storage = JSEntity.publicUnits.getValue();
//根据本地存储的数据设置页面元素的值
for (let key in storage) {
let json = storage[key];
if (key === 'like') {
let $item = $(`#${tempName}-likeItem`);
$('input.intervalTime', $item).val(json.intervalTime);
if (json.isAuto) {
//如果勾选了下次自动点赞,直接开始执行自动点赞事件
$('input.isAuto', $item).prop('checked', true);
//在页面全部加载完成之后再开始点赞,一开始点赞按钮还没加载
$(window).load(function () {
JSEntity.likeUnits.autoStart(json.intervalTime);
});
}
} else {
let $item = $(`#${tempName}-commentItem`);
$('input.intervalTime', $item).val(json.intervalTime);
}
};
},
//注册(不可用)脚本菜单
registerMenuCmd: function () {
let _this = this;
GM_registerMenuCommand("清空本地存储", function () {
let publicUnits = _this.publicUnits;
publicUnits.clearValue();
publicUnits.showNotify('本地存储已清空!\n所有直播间的设置都没了~\n (。﹏。*)');
});
GM_registerMenuCommand("帮助中心", function () {
alert('脚本用法及介绍请至A站文章区搜索“' + (JSEntity.publicUnits.scriptName) + '”\r\n联系作者:wx784354310(微信)');
});
},
//初始化所有数据
initAll: function () {
this.initData();
if (!this.isEnable) return false;
this.addStyle();
this.addDom();
this.initStorage();
this.bindEvents();
this.registerMenuCmd();
}
};
JSEntity.initAll();
})();