// ==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) })();