您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在B站直播间“点赞”按钮前增加一个控制按钮,点击或按小键盘【-】键可启动持续10分钟的自动点赞(0.3秒/次),期间可再次操作提前停止。
// ==UserScript== // @name Bilibili直播间自动点赞 (定时+按钮版) // @namespace http://tampermonkey.net/ // @version 3.0 // @description 在B站直播间“点赞”按钮前增加一个控制按钮,点击或按小键盘【-】键可启动持续10分钟的自动点赞(0.3秒/次),期间可再次操作提前停止。 // @author Gemini // @match https://live.bilibili.com/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // --- 配置项 --- const clickInterval = 300; // 每次点击的间隔时间(毫秒),300毫秒 = 0.3秒 const duration = 10 * 60 * 1000; // 自动点赞的总时长(10分钟) // --- 全局变量 --- let intervalId = null; // 存储点赞定时器的ID let stopTimeoutId = null; // 存储自动停止的定时器ID let toggleButton = null; // 存储我们创建的按钮元素 // --- 核心功能:切换自动点赞状态 --- function toggleAutoLike() { if (intervalId) { // 如果正在运行,则停止 clearInterval(intervalId); clearTimeout(stopTimeoutId); intervalId = null; stopTimeoutId = null; console.log('自动点赞已停止。'); updateButtonState(false); // 更新按钮为“未运行”状态 } else { // 如果未运行,则启动 console.log(`自动点赞已启动,将持续10分钟。间隔: ${clickInterval}ms`); triggerClick(); // 立即执行一次 intervalId = setInterval(triggerClick, clickInterval); updateButtonState(true); // 更新按钮为“运行中”状态 // 设置10分钟后自动停止 stopTimeoutId = setTimeout(() => { if (intervalId) { // 再次检查以防被手动停止 clearInterval(intervalId); intervalId = null; console.log('自动点赞已达到10分钟,自动停止。'); updateButtonState(false); } }, duration); } } // --- 模拟点击操作 --- function triggerClick() { const likeButton = document.querySelector('.like-btn'); if (!likeButton) { console.log('未找到点赞按钮,任务已停止。'); if(intervalId) { // 如果找不到按钮,则强制停止所有任务 toggleAutoLike(); } } else { likeButton.click(); } } // --- 更新按钮的文本和样式 --- function updateButtonState(isRunning) { if (toggleButton) { if (isRunning) { toggleButton.textContent = '停止点赞'; toggleButton.style.backgroundColor = '#e74c3c'; // 红色 toggleButton.style.borderColor = '#c0392b'; } else { toggleButton.textContent = '自动赞10min'; toggleButton.style.backgroundColor = '#3498db'; // 蓝色 toggleButton.style.borderColor = '#2980b9'; } } } // --- 创建并插入控制按钮 --- function createToggleButton() { // 检查按钮是否已存在,或点赞按钮还未加载 if (document.getElementById('auto-like-toggle-btn') || !document.querySelector('.like-btn')) { return; } const likeButton = document.querySelector('.like-btn'); toggleButton = document.createElement('button'); toggleButton.id = 'auto-like-toggle-btn'; // 设置按钮样式 Object.assign(toggleButton.style, { marginRight: '8px', padding: '0 10px', border: '1px solid', borderRadius: '4px', cursor: 'pointer', fontSize: '12px', height: likeButton.offsetHeight + 'px', // 高度与原生按钮保持一致 color: 'white', transition: 'background-color 0.3s' }); updateButtonState(false); // 初始化按钮状态 // 为按钮添加点击事件 toggleButton.addEventListener('click', toggleAutoLike); // 将按钮插入到原生点赞按钮的前面 likeButton.parentNode.insertBefore(toggleButton, likeButton); console.log('自动点赞控制按钮已加载。'); } // --- 事件监听 --- // 监听键盘事件 document.addEventListener('keydown', function(event) { if (event.code === 'NumpadSubtract') { toggleAutoLike(); } }); // --- 初始化 --- // B站页面是动态加载的,所以需要定时检查点赞按钮是否出现,以便插入我们的按钮 const initInterval = setInterval(() => { if (document.querySelector('.like-btn')) { createToggleButton(); clearInterval(initInterval); // 找到并创建按钮后,停止检查 } }, 1000); // 每秒检查一次 })();