Greasy Fork 还支持 简体中文。

BZOJ Helper

BZOJ助手

目前為 2018-09-14 提交的版本,檢視 最新版本

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