您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
MOJ show scores
// ==UserScript== // @name MOJ在题目页面显示分数. // @namespace http://tampermonkey.net/ // @version 1.0 // @description MOJ show scores // @author MLEAutoMaton // @match 172.40.23.36/problem/* // @grant none // ==/UserScript== (function() { 'use strict'; function getHTML(url) { var req = false; if (window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch (e) { req = false; } } else if (window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { req = false; } } } if (req) { req.open('GET', url, false); req.send(null); if (req.status == 404) { return "error"; } else { return req.responseText; } } else { return "error"; } } var allMaxScore=-1; function getMaxScore(json){ var maxScore=-1; var obj=eval(json); for(var i=0;i<obj.length;i++){ maxScore=Math.max(maxScore,obj[i].result.score); //console.log(obj[i].result.score); } return maxScore; } function hasNextPage(html){ var patt=new RegExp("<a class=.disabled icon item. id=(.?)page_next(.?)>(.*?)</a>");//下一页被禁用(已到最后) var patt1=new RegExp("page_next");//没有下一页按钮(只有一页) if (patt1.exec(html)==null){ return false; } if (patt.exec(html)==null){ return true; }else{ return false; } } function getStatus(problemid,user,page){ var res=document.createElement('html'); var ishttps='https:'==document.location.protocol?true:false; var tarurl="172.40.23.36/submissions?problem_id="+problemid+"&submitter="+user+"&page="+page; //"loj.ac/submissions?contest=&problem_id="+problemid+"&submitter="+user+"&page="+page; if (ishttps){ tarurl="https://"+tarurl; }else{ tarurl="http://"+tarurl; } var html=getHTML(tarurl); var patt=new RegExp("const itemList = (.*?);"); allMaxScore=Math.max(allMaxScore,getMaxScore(patt.exec(html)[1])); //console.log(patt.exec(html)[1]); if (hasNextPage(html)){ setTimeout(function(){getStatus(problemid,user,page+1)},1); }else{ /*更改DOM*/ var title=document.getElementsByTagName("h1")[0]; var scoreLevel=parseInt(allMaxScore/10); var css="margin-right:8px;padding:2px 8px;"; if (allMaxScore==-1){ allMaxScore="-"; css+="color:#1678c2;"; scoreLevel=""; } title.innerHTML="<span style='"+css+"' class='score score_"+scoreLevel+"'>"+allMaxScore+"</span>"+title.innerHTML; console.log("finish,page="+page+" "+allMaxScore); } } function getProblemId(){ var str=location.href+"#"; while (str.indexOf("/")!=-1){ str=str.replace("/","#"); } var patt=new RegExp("problem#(.*?)#");//下一页被禁用(已到最后) return patt.exec(str)[1]; } function getUser(){ var str=document.getElementsByClassName("right menu")[0].getElementsByClassName("ui simple dropdown item")[0].getElementsByTagName("a")[0].innerText; return str.replace(/(\s*$)/g,""); } var problemid=getProblemId();//TO-DO var user=getUser(); var page=1; var nowHtml=getStatus(problemid,user,page); })();