rt,前天下午正常运行,前天晚上开始发现脚本失效了,昨天点进去一看发现代码全没了:
,只留下了This script was deleted from Greasy Fork, and due to its negative effects, it has been automatically removed from your browser.。
这是我原先的下载链接:https://greasyfork.org/zh-CN/scripts/460752-%E5%88%AB%E7%9C%8B%E9%A2%98%E8%A7%A3,却显示您请求的脚本已被删除。不过,这里有一些相关的脚本。
还好我事先存了源码:
// ==UserScript==
// @name 别看题解
// @namespace http://tampermonkey.net/
// @version 1.2.1
// @description 在你看洛谷题解的时候把自己挂到犇犇。
// @author 0x3b800001
// @match https://www.luogu.com.cn/problem/solution/*
// @icon https://cdn.luogu.com.cn/upload/image_hosting/h0tj6wjl.png
// @grant GM_xmlhttpRequest
// @connect *
// @license GPL
// ==/UserScript==
function mstt(ms) {
ms = Number(ms);
let res = "";
res += String(Math.floor(ms / 86400000)) + "d ";
res += String(Math.floor(ms % 86400000 / 3600000)) + "h ";
res += String(Math.floor(ms % 3600000 / 60000)) + "min ";
res += String(Math.floor(ms % 60000 / 1000)) + "s";
return res;
}
function clearproblemcache() {
if (confirm("是否清空重复挂 localStorage?")) {
var w = [];
for (let i = 0; i < localStorage.length; ++i) {
if (localStorage.key(i).indexOf("bktj-problemcache-") != -1) {
w.push(localStorage.key(i));
}
}
for (let i = 0; i < w.length; ++i) {
localStorage.removeItem(w[i]);
}
alert("清空成功。");
}
}
function clearopentime() {
if (confirm("是否清空开题时间 localStorage?")) {
var w = [];
for (let i = 0; i < localStorage.length; ++i) {
if (localStorage.key(i).indexOf("bktj-opentime-") != -1) {
w.push(localStorage.key(i));
}
}
for (let i = 0; i < w.length; ++i) {
localStorage.removeItem(w[i]);
}
alert("清空成功。");
}
}
function modifyformat(format) {
console.log(format);
if (format.length != 0) {
localStorage["bktj-format"] = format.replace(/\\n/g, "\n");
} else {
localStorage["bktj-format"] = "这个人在开题 bktjnumber bktjname bktjtime 后看了题解\n\n警钟长鸣。";
}
alert("更改成功!现在格式:\n" + localStorage["bktj-format"]);
}
function modifytimes(times) {
if (Number(times).toString() != times) {
localStorage["bktj-times"] = "1";
alert("更改失败!不是数字。已经自动更改为 " + localStorage["bktj-times"]);
return;
}
if (times.length != 0) {
localStorage["bktj-times"] = times;
} else {
localStorage["bktj-times"] = "1";
}
alert("更改成功!现在次数:" + localStorage["bktj-times"]);
}
function gettype(lnk) {
if (lnk.indexOf("https://www.luogu.com.cn/user/setting") != -1) {
return "setting";
}
if (lnk.indexOf("https://www.luogu.com.cn/problem/solution/") != -1) {
return "solution";
}
if (lnk.indexOf("https://www.luogu.com.cn/problem/P") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/CF") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/B") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/SP") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/AT") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/UVA") != -1) {
return "problem";
}
return "unimportant";
}
(function () {
'use strict';
let F = function () {
console.log("loading");
console.log(window.location.href);
if (localStorage["bktj-QQ"] == undefined) {
localStorage["bktj-QQ"] = "1";
alert("欢迎你使用 别看题解 插件!如果有需要提的意见记得加入 QQ 群 711760690。该消息以后不会再显示,因此记得加入哦!");
}
if (localStorage["bktj-help"] == undefined) {
localStorage["bktj-help"] = "1";
if (confirm("看起来你是第一次使用 别看题解 插件!是否打开帮助?")) {
window.open("https://www.luogu.com.cn/paste/xmiuzlml");
}
}
if (localStorage["bktj-format"] == undefined) {
localStorage["bktj-format"] = "这个人在开题 bktjnumber bktjname bktjtime 后看了题解\n\n警钟长鸣。";
}
if (localStorage["bktj-times"] == undefined) {
localStorage["bktj-times"] = "1";
}
let lnk = window.location.href;
if (lnk.indexOf("https://www.luogu.com.cn/user/setting") != -1) {
let _1 = document.createElement("div");
_1.className = "row";
_1.setAttribute("data-v-581a38cc", "");
let _2 = document.createElement("span");
_2.setAttribute("data-v-1f8e37c2", "");
_2.setAttribute("data-v-581a38cc", "");
_2.innerText = "别看题解 设置";
_1.append(_2);
let _3 = document.createElement("div");
_3.setAttribute("data-v-1f8e37c2", "");
_3.setAttribute("data-v-581a38cc", "");
let _4 = document.createElement("button");
_4.className = "lfe-form-sz-middle";
_4.setAttribute("data-v-7ade990c", "");
_4.setAttribute("data-v-1f8e37c2", "");
_4.type = "button";
_4.style = "border-color: rgb(52, 152, 219); background-color: rgb(52, 152, 219);";
_4.setAttribute("data-v-581a38cc", "");
_4.innerText = "清空重复挂 localStorage";
_4.addEventListener("click", clearproblemcache);
let _5 = document.createElement("button");
_5.className = "lfe-form-sz-middle";
_5.setAttribute("data-v-7ade990c", "");
_5.setAttribute("data-v-1f8e37c2", "");
_5.type = "button";
_5.style = "border-color: rgb(52, 152, 219); background-color: rgb(52, 152, 219);";
_5.setAttribute("data-v-581a38cc", "");
_5.innerText = "清空开题时间 localStorage";
_5.addEventListener("click", clearopentime);
let _6 = document.createElement("p");
_6.setAttribute("data-v-0c8438e1", "");
_6.setAttribute("data-v-581a38cc", "");
_6.append(_4);
let _7 = document.createElement("p");
_7.setAttribute("data-v-0c8438e1", "");
_7.setAttribute("data-v-581a38cc", "");
_7.append(_5);
_3.append(_6);
_3.append(_7);
let _8 = document.createElement("input");
_8.className = "lfe-form-sz-middle";
_8.setAttribute("data-v-66fcc50b", "");
_8.type = "";
_8.id = "bktj-input-1";
_8.placeholder = "输入格式,留空则默认";
let _9 = document.createElement("button");
_9.className = "lfe-form-sz-middle";
_9.setAttribute("data-v-7ade990c", "");
_9.setAttribute("data-v-1f8e37c2", "");
_9.type = "button";
_9.style = "border-color: rgb(52, 152, 219); background-color: rgb(52, 152, 219);";
_9.setAttribute("data-v-581a38cc", "");
_9.innerText = "更改格式";
_9.addEventListener("click", function () { modifyformat(document.getElementById("bktj-input-1").value); });
let _10 = document.createElement("p");
_10.setAttribute("data-v-0c8438e1", "");
_10.setAttribute("data-v-581a38cc", "");
_10.append(_8);
_10.append(_9);
_3.append(_10);
let _11 = document.createElement("input");
_11.className = "lfe-form-sz-middle";
_11.setAttribute("data-v-66fcc50b", "");
_11.type = "";
_11.id = "bktj-input-2";
_11.placeholder = "输入次数,留空则默认";
let _12 = document.createElement("button");
_12.className = "lfe-form-sz-middle";
_12.setAttribute("data-v-7ade990c", "");
_12.setAttribute("data-v-1f8e37c2", "");
_12.type = "button";
_12.style = "border-color: rgb(52, 152, 219); background-color: rgb(52, 152, 219);";
_12.setAttribute("data-v-581a38cc", "");
_12.innerText = "更改次数";
_12.addEventListener("click", function () { modifytimes(document.getElementById("bktj-input-2").value); });
let _13 = document.createElement("p");
_13.setAttribute("data-v-0c8438e1", "");
_13.setAttribute("data-v-581a38cc", "");
_13.append(_11);
_13.append(_12);
_3.append(_13);
let _14 = document.createElement("button");
_14.className = "lfe-form-sz-middle";
_14.setAttribute("data-v-7ade990c", "");
_14.setAttribute("data-v-1f8e37c2", "");
_14.type = "button";
_14.style = "border-color: rgb(52, 152, 219); background-color: rgb(52, 152, 219);";
_14.setAttribute("data-v-581a38cc", "");
_14.innerText = "帮助";
_14.addEventListener("click", function () { window.open("https://www.luogu.com.cn/paste/xmiuzlml"); });
let _15 = document.createElement("p");
_15.setAttribute("data-v-0c8438e1", "");
_15.setAttribute("data-v-581a38cc", "");
_15.append(_14);
_3.append(_15);
_1.append(_3);
document.getElementsByClassName("card padding-default")[0].append(_1);
} else if (lnk.indexOf("https://www.luogu.com.cn/problem/solution/") != -1) {
var name = (document.getElementsByClassName('lfe-h1'))[0].innerHTML;
let P = (name.split(' '))[0];
name = name.substring(P.length + 1, name.length).split(" 题解")[0];
console.log(P);
console.log(name);
GM_xmlhttpRequest({
url: "https://www.luogu.com.cn/problem/" + P + "?_contentOnly=1",
method: "GET",
onload: function (response) {
let rp = response.responseText;
let qwww = rp.split("recommendations")[0];
if (qwww.indexOf("\"submitted\":true") == -1) {
console.log("未提交过");
let see = true;
for (let i = 1; i <= localStorage["bktj-times"]; ++i) {
if (!confirm("您尚未提交过" + P + ",确认要看题解吗?")) {
see = false;
break;
}
}
if (see) {
if (localStorage["bktj-problemcache-" + P] == undefined) {
if (localStorage["bktj-opentime-" + P] == undefined) localStorage["bktj-opentime-" + P] = Date.now();
GM_xmlhttpRequest({
url: "https://www.luogu.com.cn/api/feed/postBenben",
headers: {
"content-type": "application/json",
"referer": "https://www.luogu.com.cn/",
"x-csrf-token": document.querySelector("meta[name=csrf-token]").content
},
data: JSON.stringify({
content: String(localStorage["bktj-format"])
.replace(/bktjnumber/g, P)
.replace(/bktjname/g, name)
.replace(/bktjtime/g, mstt(Date.now() - Number(localStorage["bktj-opentime-" + P])))
}),
method: "POST",
});
localStorage["bktj-problemcache-" + P] = 1;
} else {
console.log("已经挂过了");
}
} else {
document.getElementsByClassName("lfe-form-sz-middle")[0].click();
return;
}
} else {
console.log("已提交");
}
}
});
} else if (lnk.indexOf("https://www.luogu.com.cn/problem/P") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/CF") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/B") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/SP") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/AT") != -1
|| lnk.indexOf("https://www.luogu.com.cn/problem/UVA") != -1) {
let nm = lnk.substring(33);
if (localStorage["bktj-opentime-" + nm] == undefined) {
localStorage["bktj-opentime-" + nm] = Date.now();
}
console.log(nm);
}
};
let Url = "";
setInterval(
function () {
if (Url == gettype(window.location.href)) return;
Url = gettype(window.location.href);
let Ok = false;
setInterval(function () {
if (!Ok) {
Ok = true;
try {
F();
} catch (e) {
Ok = false;
} finally {
if (Ok) {
console.log("loaded");
}
}
}
}, 400);
}, 400);
})();