自动B站直播重开
// ==UserScript==
// @name Auto Bilibili ReLive
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 自动B站直播重开
// @author Yorushi
// @match *://link.bilibili.com/p/center/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
//更改开播分区(最近的开播分区区域内容)
//如果为空则选择最近的第一个开播分区
//
const LiveZone = ""
//定义刷新时间
const refreshTime = new Date();
'use strict';
// 等待页面加载完成
window.addEventListener('load', () => {
// 定义目标元素选择器(请根据页面上的元素修改选择器)
const targetSelector = '.live-btn';
// 定义定时器,定期检查条件是否满足
const intervalID = setInterval(() => {
const targetElement = document.querySelector(targetSelector);
// 检查目标元素是否存在且满足条件
if (targetElement && targetElement.innerText === '开始直播') {
console.log("未直播,将会开播")
document.querySelector(".category-toggle").click()
// 获取所有包含 class="dp-i-block p-relative" 的 <a> 标签
const elements = document.querySelectorAll('a.dp-i-block.p-relative');
if(LiveZone == ""){
console.log("LiveZone为空,默认最近开播分区")
elements[0].click();//选择最近开播分区
}else{
// 遍历找到符合条件的元素并点击
elements.forEach(element => {
const span = element.querySelector('span.name');
if (span && span.innerText.includes(LiveZone)) { // 匹配条件
element.click(); // 触发点击
clearInterval(intervalID); // 停止检查
}else{
console.log("分区错误,找到分区:"+span.innerText)
}
});
}
targetElement.click(); // 触发点击
console.log("开始直播!")
}else{
console.log("正在直播中")
};
clearInterval(intervalID); // 停止定时器
}, 2000); // 每秒检查一次
setInterval(()=>{
try{
document.querySelector('.refreshTime').innerText = "上次自动刷新时间:"+refreshTime.toLocaleString()+"("+((new Date().getTime() - refreshTime.getTime())/1000).toFixed(1)+"秒前)";
}catch{}
},1000)
setTimeout(()=>{
//显示外显刷新时间以及计时
try{
const cssDiv = document.querySelector(".live-cpm").attributes[0].name;
document.querySelector(".live-btn-ctnr").innerHTML += "<div class='live-cpm refreshTime' "+cssDiv+">上次自动刷新时间:"+refreshTime.toLocaleString()+"</div>"
}catch{
const cssDiv = 'style="display: inline-block;font-size: 14px;line-height: 32px;color: #28ade3;margin-left: 20px;cursor: pointer;vertical-align: middle;"'
document.querySelector(".live-btn-ctnr").innerHTML += "<div class='live-cpm refreshTime' "+cssDiv+">上次自动刷新时间:"+refreshTime.toLocaleString()+"</div>"
}
},2000)
setInterval(()=>{
//自动页面刷新(刷新数据)
window.location.reload();
},55000)
});
})();