您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
BZOJ助手
当前为
- // ==UserScript==
- // @name BZOJ Helper
- // @namespace bzoj
- // @version 1.1
- // @description BZOJ助手
- // @author ranwen
- // @match https://lydsy.com/*
- // @match https://www.lydsy.com/*
- // @license MIT
- // ==/UserScript==
- (function () {
- function savedata(name, val) {
- localStorage.setItem(name, JSON.stringify(val));
- }
- function readdata(name) {
- return JSON.parse(localStorage.getItem(name))
- }
- var logined = 0
- var username = "";
- var mydb = Array();
- var markedp = Array();
- var fixurl = location.href;
- if (fixurl.indexOf("www.lydsy.com") != -1) {
- fixurl = fixurl.replace("www.lydsy.com", "lydsy.com");
- location.href = fixurl;
- }
- function getmyusername() {
- var sb = document.getElementsByTagName("table")[0].childNodes[1].childNodes[0].childNodes[17].innerText;
- if (sb.indexOf("ModifyUser") == -1) {
- logined = -1;
- return;
- }
- username = sb.substr(13);
- }
- function isprob() {
- if (fixurl.indexOf("https://lydsy.com/JudgeOnline/problem.php?id=") == -1) {
- return -1;
- }
- return fixurl.substr(45);
- }
- function isstatus() {
- if (fixurl.indexOf("https://lydsy.com/JudgeOnline/status.php") == -1) {
- return -1;
- }
- return 0;
- }
- function islist() {
- if (fixurl.indexOf("https://lydsy.com/JudgeOnline/problemset.php") == -1) {
- return -1;
- }
- return 0;
- }
- function updateprobinfobypage(pid) {
- sb = {};
- for (i of document.getElementsByTagName("h2")[0].childNodes)
- if (i.nodeName == "#text") {
- sb["title"] = i.data.substr(6)
- break
- }
- sb["submit"] = document.getElementsByTagName("center")[2].getElementsByClassName("green")[2].nextSibling.data;
- sb["submit"] = sb["submit"].slice(0, -2);
- sb["solved"] = document.getElementsByTagName("center")[2].getElementsByClassName("green")[3].nextSibling.data;
- sb["source"] = document.getElementsByTagName("h2")[7].nextElementSibling.childNodes[0].innerText;
- savedata("problem_" + pid, sb)
- }
- function updateprobinfobylist() {
- for(i of document.getElementById("problemset").getElementsByTagName("tbody")[0].childNodes)
- {
- sb={}
- prob=i.childNodes[1].innerText;
- sb["title"]=i.childNodes[2].innerText;
- sb["source"]=i.childNodes[3].innerText;
- sb["solved"]=i.childNodes[4].innerText;
- sb["submit"]=i.childNodes[5].innerText;
- savedata("problem_" + prob, sb)
- }
- }
- getmyusername()
- markedp = readdata("marked");
- if (markedp == null) {
- savedata("marked", Array());
- markedp = Array();
- }
- if (logined == -1) {
- return;
- }
- function updateuserdb() {
- var nm = fixurl.substr(48);
- var list = document.getElementsByTagName("script")[2].innerHTML.match(/p\([1-9][0-9]{3}\)/g);
- var rl = Array();
- for (var i of list) {
- rl.push(i.substr(2, 4))
- }
- savedata("userlist_" + nm, rl)
- }
- if (fixurl.indexOf("https://lydsy.com/JudgeOnline/userinfo.php?user=") != -1) {
- updateuserdb();
- }
- mydb = readdata("userlist_" + username);
- if (islist() != -1) {
- updateprobinfobylist();
- for(i of document.getElementById("problemset").getElementsByTagName("tbody")[0].childNodes)
- {
- prob=i.childNodes[1].innerText;
- if(markedp.indexOf(prob)!=-1) i.childNodes[2].innerHTML=i.childNodes[2].innerHTML+"<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 20px;height: 20px;\">\
- <polygon points=\"19.510565162951536,6.9098300562505255 12.351141009169893,6.76393202250021 10,0 7.648858990830108,6.76393202250021 0.48943483704846535,6.9098300562505255 6.195773934819385,11.236067977499792 4.122147477075267,18.090169943749473 10,14 15.87785252292473,18.090169943749476 13.804226065180615,11.23606797749979\" style=\"fill:#FFFF00;\"></polygon>\
- </svg>";
- }
- document.getElementById("problemset").getElementsByTagName("thead")[0].childNodes[1].childNodes[0].childNodes[0].innerHTML=document.getElementById("problemset").getElementsByTagName("thead")[0].childNodes[1].childNodes[0].childNodes[0].innerHTML+
- "<a href=\"javascript:;\" id=\"showmarkedlist\">Marked Problem</a>";
- document.getElementById("showmarkedlist").onclick = function () {
- txt=""
- for(i=0;i<markedp.length;i++)
- {
- o=markedp[i]
- info=readdata("problem_"+o);
- nr=""
- nr+="<tr class=\""+((i&1)==0?"evenrow":"oddrow")+"\">";
- nr+="<td>";
- if(mydb.indexOf(o)!=-1) nr+="<span class=\"yes\">Y</span>";
- nr+="</td>";
- nr+="<td align=\"center\">";
- nr+=o;
- nr+="</td>";
- nr+="<td align=\"left\">";
- nr+="<a href=\"problem.php?id="+o+"\">"+info['title']+"</a>"+"<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 20px;height: 20px;\">\
- <polygon points=\"19.510565162951536,6.9098300562505255 12.351141009169893,6.76393202250021 10,0 7.648858990830108,6.76393202250021 0.48943483704846535,6.9098300562505255 6.195773934819385,11.236067977499792 4.122147477075267,18.090169943749473 10,14 15.87785252292473,18.090169943749476 13.804226065180615,11.23606797749979\" style=\"fill:#FFFF00;\"></polygon>\
- </svg>";
- nr+="</td>"
- nr+="<td align=\"center\">";
- nr+=info['source']
- nr+="</td>";
- nr+="<td align=\"center\">";
- nr+="<a href=\"status.php?problem_id="+o+"&jresult=4\">"+info['solved']+"</a>";
- nr+="</td>";
- nr+="<td align=\"center\">";
- nr+="<a href=\"status.php?problem_id="+o+"\">"+info['submit']+"</a>";
- nr+="</td>";
- nr+="</tr>";
- txt+=nr;
- }
- document.getElementById("problemset").getElementsByTagName("tbody")[0].innerHTML=txt;
- }
- }
- var prob = isprob();
- if (prob != -1) {
- updateprobinfobypage(prob)
- if (mydb.indexOf(prob) != -1) {
- var rdt = document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].innerHTML;
- var tdb = "<span style=\"color:#00FF00\">Y</span>" + rdt;
- document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].innerHTML = tdb;
- }
- var ttt = document.getElementsByTagName("center")[2].innerHTML;
- var fff = ttt + "[<a href=\"https://lydsy.com/JudgeOnline/status.php?problem_id=" + prob + "&user_id=" + username + "\">My Status</a>]";
- document.getElementsByTagName("center")[2].innerHTML = fff;
- var rdt = document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].innerHTML;
- col = "#cccccc"
- if (markedp.indexOf(prob) != -1) col = "#FFFF00";
- var tdb = rdt +
- "<a href=\"javascript:;\" id=\"chmr\"><svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 20px;height: 20px;\">\
- <polygon points=\"19.510565162951536,6.9098300562505255 12.351141009169893,6.76393202250021 10,0 7.648858990830108,6.76393202250021 0.48943483704846535,6.9098300562505255 6.195773934819385,11.236067977499792 4.122147477075267,18.090169943749473 10,14 15.87785252292473,18.090169943749476 13.804226065180615,11.23606797749979\" style=\"fill:"+ col + ";\"></polygon>\
- </svg></a>";
- document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].innerHTML = tdb;
- document.getElementById("chmr").onclick = function () {
- if (markedp.indexOf(prob) != -1) {
- //if (!window.confirm("确定鸽掉它?")) return; //取消标记提示
- markedp.splice(markedp.indexOf(prob), 1)
- document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].getElementsByTagName("a")[0].childNodes[0].childNodes[1].style.fill = "#cccccc"
- }
- else {
- markedp.push(prob)
- document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].getElementsByTagName("a")[0].childNodes[0].childNodes[1].style.fill = "#FFFF00"
- }
- markedp.sort()
- savedata("marked", markedp)
- }
- }
- if (isstatus() != -1) {
- for (var i of document.getElementsByTagName("center")[0].getElementsByTagName("table")[2].getElementsByTagName("tbody")[0].childNodes) {
- if (i.className != "evenrow" && i.className != "oddrow") continue;
- prob = i.childNodes[2].childNodes[0].innerText;
- mkd = ""
- if (markedp.indexOf(prob) != -1)
- mkd = "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 20px;height: 20px;\">\
- <polygon points=\"19.510565162951536,6.9098300562505255 12.351141009169893,6.76393202250021 10,0 7.648858990830108,6.76393202250021 0.48943483704846535,6.9098300562505255 6.195773934819385,11.236067977499792 4.122147477075267,18.090169943749473 10,14 15.87785252292473,18.090169943749476 13.804226065180615,11.23606797749979\" style=\"fill:#FFFF00;\"></polygon>\
- </svg>"
- if (mydb.indexOf(prob) != -1) {
- i.childNodes[2].childNodes[0].innerHTML = "<span style=\"color:#00FF00\">Y</span>" + i.childNodes[2].childNodes[0].innerHTML + mkd;
- }
- else {
- i.childNodes[2].childNodes[0].innerHTML = "<span style=\"color:#FF0000\">N</span>" + i.childNodes[2].childNodes[0].innerHTML + mkd;
- }
- }
- }
- document.getElementsByTagName("center")[0].childNodes[1].innerHTML += "<div class=\"tmp\" style=\"height:0px;width:0px;\"><img id=\"autofre\" src=\"data:image/png;base64,\" style=\"width:0px;height:0px;\"/></div>";
- setInterval(function () { document.getElementById("autofre").src = "https://lydsy.com/JudgeOnline/" }, 600000);//自动续命
- })();