Bilibili进入直播间自动点赞
// ==UserScript==
// @name Bilibili进入直播间自动点赞
// @namespace https://github.com/AliubYiero/TamperMonkeyScripts
// @version 1.0.0
// @description Bilibili进入直播间自动点赞.
// @author Yiero
// @match https://live.bilibili.com/*
// @grant GM_addStyle
// @grant GM_getValue
// ==/UserScript==
/**
* @warn 点赞的最低延迟需要 500ms , 再短会直接拒绝请求, 如果最小延迟少于 500 会锁定到 500 .
* @warn 点赞数量文本状态在进入直播间的时候会显示, 隔一段时间之后就不显示了. 如果想要查看点赞数量文本状态, 可以开启.
* @warn 超过 1000 次点赞可能被ban, 无法再进行有效点赞, 不知道ban的时间具体是多久, 但是最长隔天就会恢复正常. 即使使用默认延时 (2s ~ 5s) 也可能如此.
*/
/* ==UserConfig==
配置项:
likeAnimationStat:
title: 点赞动画状态 (默认关闭)
description: 显示点赞后的动画效果
type: checkbox
default: false
displayLikeText:
title: 点赞数量文本状态 (默认开启)
description: 显示点赞数量文本
type: checkbox
default: true
likeClickDelayMinRange:
title: 点赞随机时间延迟 (ms) , 最小随机时间 (无法少于500ms)
description: 点赞延迟 (ms)
type: number
default: 2000
likeClickDelayMaxRange:
title: 点赞随机时间延迟 (ms) , 最大随机时间
description: 点赞延迟 (ms)
type: number
default: 5000
==/UserConfig== */
(function() {
'use strict';
// 加载配置
const displayLikeAnimation = !GM_getValue('配置项.likeAnimationStat', false)
const displayLikeText = GM_getValue('配置项.displayLikeText', true)
const likeClickRange = [GM_getValue('配置项.likeClickDelayMinRange', 2000), GM_getValue('配置项.likeClickDelayMaxRange', 5000)]
/**
* 返回 [min, max] 之间的随机整数
* @param {number} min
* @param {number} max
* @return {number}
*/
const randomRange = (min, max) => {
// 参数归一
// min最小只能500, max不能小于min
min = Math.max(500, min);
max = Math.max(min, max)
// 返回随机数
return min + Math.floor(Math.random() * (max - min + 1))
}
// 关闭点赞动画 / 显示点赞数量
if (displayLikeAnimation || displayLikeText) {
let css = '';
displayLikeAnimation && (css += `[id^="like-animation"] {display: none !important;}`)
displayLikeText && (css += `${'.like-text'.repeat(15)} {display: inline !important;}`)
GM_addStyle(css)
}
// 简易轮询等待元素加载
const elementGetterTimer = setInterval(() => {
const likeBtn = document.querySelector('.like-btn')
if (likeBtn) {
clearInterval(elementGetterTimer)
// 点赞
setInterval(() => {
likeBtn.click();
}, randomRange(...likeClickRange))
}
}, 1000)
})();