b站风纪委员投票助手
// ==UserScript==
// @name 风纪委员投票
// @namespace http://tampermonkey.net/
// @homepage https://github.com/asksowhat/BilibiliVote
// @version 0.1.1
// @description b站风纪委员投票助手
// @license MIT
// @author asksowhat
// @icon https://www.bilibili.com/favicon.ico
// @match https://www.bilibili.com
// @match https://www.bilibili.com/judgement*
// @grant window.close
// @grant GM_log
// ==/UserScript==
(function() {
'use strict';
window.onload = main;
async function main() {
//在此时间段不运行
if (await checkAuditTime("01:00", "7:00")){
window.location.href="https://www.bilibili.com/judgement/index";
return;
}
setTimeout(await enterVotePage, 3000);
setTimeout(await optionsVote, 10000 + Math.round(Math.random()*10)*1000);
setTimeout(await submitVote, 30000 + Math.round(Math.random()*10)*1000);
setTimeout(await nextVote, 50000 + Math.round(Math.random()*10)*1000);
setTimeout(await isClosePage, 64000 + Math.round(Math.random()*10)*1000);
}
async function enterVotePage(){
var buttons = document.getElementsByTagName("button");
for (let i=0; i < buttons.length; i++) {
if (buttons[i].innerText == "开始众议") {
buttons[i].click();
break;
} else if (buttons[i].innerText == "无新任务") {
await reload();
}
}
}
async function reload() {
location.reload();
}
async function optionsVote(){
var buttons = document.getElementsByTagName("button");
let option_num_feel = Math.round(Math.random()*10);
let option_num_view = Math.round(Math.random()*20)
for (let i=0; i < buttons.length; i++) {
let buttonName = buttons[i].innerText;
//类型
GM_log("num:"+option_num_feel);
if ((buttonName == "好" || buttonName == "合适") && (option_num_feel == 1 || option_num_feel == 2 || option_num_feel%3 == 0)) {
buttons[i].click();
} else if ((buttonName == "普通" || buttonName == "中" || buttonName == "一般") && option_num_feel == 4) {
buttons[i].click();
} else if ((buttonName == "差" || buttonName == "不合适") && option_num_feel == 8) {
buttons[i].click();
}else if (buttonName == "无法判断" && (option_num_feel == 5 || option_num_feel == 7)) {
buttons[i].click();
}
//是否会观看此视频
if (buttonName == "会观看" && option_num_view == 9) {
buttons[i].click();
} else if (buttonName == "不会观看") {
buttons[i].click();
}
}
//匿名提交
var divs = document.getElementsByClassName("v-check-box__label");
if (divs.length == 1 && divs[0].classList.length == 1) {
GM_log(divs);
divs[0].click();
GM_log(divs);
}
}
async function submitVote() {
var buttons = document.getElementsByTagName("button");
for (let i=0; i < buttons.length; i++) {
if (buttons[i].innerText == "确认提交") {
buttons[i].click();
}
}
nextVote();
}
async function nextVote() {
var buttons = document.getElementsByTagName("button");
for (let i=0; i < buttons.length; i++) {
if (buttons[i].innerText == "开始下一个") {
buttons[i].click();
}
}
}
async function isClosePage() {
var buttons = document.getElementsByTagName("button");
for (let i=0; i < buttons.length; i++) {
if (buttons[i].innerText == "投票次数已用完,返回") {
window.location.href="https://www.bilibili.com/judgement/index";
} else if (buttons[i].innerText == "投票次数已用完") {
window.location.href="https://www.bilibili.com/judgement/index";
}
}
}
function checkAuditTime(beginTime, endTime) {
var nowDate = new Date();
var beginDate = new Date(nowDate);
var endDate = new Date(nowDate);
var beginIndex = beginTime.lastIndexOf("\:");
var beginHour = beginTime.substring(0, beginIndex);
var beginMinue = beginTime.substring(beginIndex + 1, beginTime.length);
beginDate.setHours(beginHour, beginMinue, 0, 0);
var endIndex = endTime.lastIndexOf("\:");
var endHour = endTime.substring(0, endIndex);
var endMinue = endTime.substring(endIndex + 1, endTime.length);
endDate.setHours(endHour, endMinue, 0, 0);
return nowDate.getTime() - beginDate.getTime() >= 0 && nowDate.getTime() <= endDate.getTime();
}
setInterval(main,90000 + Math.round(Math.random()*100)*3000);
// Your code here...
})();