为 Metabirds 添加批量删推功能。
// ==UserScript==
// @icon https://www.google.com/s2/favicons?domain=metabirds.net
// @name Metabirds 删推小助手
// @author neo881115
// @description 为 Metabirds 添加批量删推功能。
// @match *://metabirds.net/admin/bot_mention.php*
// @match *://metabirds.net/admin/bot_timeline.php*
// @version 0.2.0
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_log
// @grant GM_notification
// @grant GM_setValue
// @grant GM_getValue
// @namespace https://greasyfork.org/users/790356
// ==/UserScript==
{
if (window.top !== window.self) throw new Error("非顶层框架");
var update_button = null;
var search_button = null;
var isEnglish = false;
var num = 0;
const findElements = async() => {
try {
const element = document.getElementById("goPagetop").innerText
if (element !== null) {
const numstr = document.getElementsByClassName("list_path")[0].innerText;
if (element.startsWith("P")) { // English version.
isEnglish = true;
search_button = document.querySelector('[value="Search"]');
update_button = document.querySelector('[value="Change"]');
num = Number(numstr.split(": ")[1]);
} else {
isEnglish = false;
search_button = document.querySelector('[value="絞り込み表示"]');
update_button = document.querySelector('[value="更 新"]');
num = Number(numstr.split("件")[0]);
}
return true;
} else {
return false
};
} catch (_) {
return false;
}
}
const init = async() => {
let result;
try {
result = await findElements();
} catch (_) {
// noop
}
if (result !== true) {
setTimeout(() => init(), 1000);
}
};
init();
var enabled = false;
try {
const savedEnabled = localStorage.getItem("EnableBotbirdCleaner");
if (savedEnabled) {
enabled = (savedEnabled == "true" ? true : false);
} else if (savedEnabled == null) {
localStorage.setItem("EnableBotbirdCleaner", false);
}
} catch (_) {
// noop
localStorage.setItem("EnableBotbirdCleaner", false);
}
const dodel = () => {
if (enabled) {
localStorage.setItem("EnableBotbirdCleaner", true);
console.log("DO DEL EXEC");
for (var i = 0; i < 20; i++) {
var j = document.getElementById("delete_message_" + String(i + 1));
if (j) {
j.click();
}
}
update_button.click();
}
}
const onoff = () => {
console.log("DO ONOFF EXEC");
dodel();
enabled = !enabled;
}
var par = search_button.parentElement.parentElement.parentElement;
if (par) {
var ele = document.createDocumentFragment();
const lbl = document.createElement("label");
lbl.append(document.createTextNode(enabled == true ? "批量删除模式已开启" : "批量删除模式已关闭"));
const btn = document.createElement("input");
btn.setAttribute("class", "clearfix button");
btn.setAttribute("type", "submit");
if (num != 0) {
btn.setAttribute("value", enabled == true ? "关闭删除模式" : "开启删除模式");
btn.addEventListener("click", onoff);
} else {
btn.setAttribute("value", "推文已全部删除");
localStorage.setItem("EnableBotbirdCleaner", false);
}
ele.appendChild(lbl);
ele.appendChild(btn);
var br = document.createElement("br");
br.setAttribute("clear", "all")
ele.appendChild(br);
ele.appendChild(document.createElement("hr"));
par.insertBefore(ele, par.firstChild);
console.log(enabled);
if (enabled == true) {
console.log("OFF");
if (num != 0) {
console.log("ON");
dodel();
}
}
//perform update
}
}