Greasy Fork is available in English.
在真白萌新站作品目录页添加全部订阅按钮,一键订阅所有章节
// ==UserScript==
// @name 真白萌新站添加全部订阅按钮
// @description 在真白萌新站作品目录页添加全部订阅按钮,一键订阅所有章节
// @namespace https://blog.bgme.me
// @match *://masiro.me/admin/novelView?*
// @grant none
// @version 1.2
// @author bgme
// @license AGPL 3.0
// ==/UserScript==
async function payAll() {
const pays = Array.from(document.querySelectorAll("a.to-read")).filter(
(a) => {
const txt = a.querySelector("small")?.innerText.trim() ?? "";
return txt !== "" && txt !== "已购";
}
);
const pm = pays.map((a) => {
const id = a.getAttribute("data-id");
const cost = a.getAttribute("data-cost");
return {
id,
cost,
};
});
const sum = pm.reduce((s, cur) => {
s = s + parseInt(cur.cost, 10);
return s;
}, 0);
if (sum === 0) {
alert("未发现付费章节!");
return;
}
const c = confirm(`订阅全部章节需支付${sum}G`);
if (c) {
const token = document
.querySelector('meta[name="csrf-token"]')
.getAttribute("content");
for (const { id: object_id, cost } of pm) {
await fetch("https://masiro.me/admin/pay", {
credentials: "include",
headers: {
Accept: "application/json, text/javascript, */*; q=0.01",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-CSRF-TOKEN": token,
"X-Requested-With": "XMLHttpRequest",
},
body: new URLSearchParams({
type: 2,
object_id,
cost,
}).toString(),
method: "POST",
mode: "cors",
})
.then((resp) => resp.json())
.then(console.log);
}
alert("已订阅全部章节!");
window.location.reload();
}
}
function main(ev) {
if (ev) {
document.removeEventListener(ev.type, main);
}
const btnBox = document.querySelector(".btn-box");
const span = document.createElement("span");
span.innerText = "全部订阅";
span.className = "n-btn btn-read btn-font";
span.addEventListener("click", payAll);
const readingBtn = document.querySelector(".btn-box > input.csrf");
btnBox.insertBefore(span, readingBtn);
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", main);
} else {
main();
}