BZOJ Helper

BZOJ助手

当前为 2018-09-13 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name BZOJ Helper
  3. // @namespace bzoj
  4. // @version 0.1
  5. // @description BZOJ助手
  6. // @author ranwen
  7. // @match https://lydsy.com/*
  8. // ==/UserScript==
  9.  
  10. (function() {
  11. function savedata(name,val)
  12. {
  13. localStorage.setItem(name,JSON.stringify(val));
  14. }
  15. function readdata(name)
  16. {
  17. return JSON.parse(localStorage.getItem(name))
  18. }
  19. var logined=0
  20. var username="";
  21. var mydb=Array();
  22. function getmyusername()
  23. {
  24. var sb=document.getElementsByTagName("table")[0].childNodes[1].childNodes[0].childNodes[17].innerText;
  25. if(sb.indexOf("ModifyUser")==-1)
  26. {
  27. logined=-1;
  28. return;
  29. }
  30. username=sb.substr(13);
  31. }
  32. function isprob()
  33. {
  34. if(location.href.indexOf("https://lydsy.com/JudgeOnline/problem.php?id=")==-1)
  35. {
  36. return -1;
  37. }
  38. return location.href.substr(45);
  39. }
  40. function isstatus()
  41. {
  42. if(location.href.indexOf("https://lydsy.com/JudgeOnline/status.php")==-1)
  43. {
  44. return -1;
  45. }
  46. return 0;
  47. }
  48. getmyusername()
  49. if(logined==-1)
  50. {
  51. return;
  52. }
  53. function updatedb()
  54. {
  55. var nm=location.href.substr(48);
  56. var list=document.getElementsByTagName("script")[2].innerHTML.match(/p\([1-9][0-9]{3}\)/g);
  57. var rl=Array();
  58. for(var i of list){
  59. rl.push(i.substr(2,4))
  60. }
  61. savedata(nm,rl)
  62. }
  63. if(location.href.indexOf("https://lydsy.com/JudgeOnline/userinfo.php?user=")!=-1)
  64. {
  65. updatedb();
  66. }
  67. mydb=readdata(username);
  68. var prob=isprob();
  69. if(prob!=-1)
  70. {
  71. if(mydb.indexOf(prob)!=-1)
  72. {
  73. var rdt=document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].innerHTML;
  74. var tdb="<span style=\"color:#00FF00\">Y</span>"+rdt;
  75. document.getElementsByTagName("center")[2].getElementsByTagName("h2")[0].innerHTML=tdb;
  76. }
  77. var ttt=document.getElementsByTagName("center")[2].innerHTML;
  78. var fff=ttt+"[<a href=\"https://lydsy.com/JudgeOnline/status.php?problem_id="+prob+"&user_id="+username+"\">My Status</a>]";
  79. document.getElementsByTagName("center")[2].innerHTML=fff;
  80. }
  81. if(isstatus()!=-1)
  82. {
  83. for(var i of document.getElementsByTagName("center")[0].getElementsByTagName("table")[2].getElementsByTagName("tbody")[0].childNodes)
  84. {
  85. if(i.className!="evenrow" && i.className!="oddrow") continue;
  86. prob=i.childNodes[2].childNodes[0].innerText;
  87. if(mydb.indexOf(prob)!=-1)
  88. {
  89. i.childNodes[2].childNodes[0].innerHTML="<span style=\"color:#00FF00\">Y</span>"+i.childNodes[2].childNodes[0].innerHTML;
  90. }
  91. else
  92. {
  93. i.childNodes[2].childNodes[0].innerHTML="<span style=\"color:#FF0000\">N</span>"+i.childNodes[2].childNodes[0].innerHTML;
  94. }
  95. }
  96. }
  97. })();