my atcoder

我的 atcoder 插件

当前为 2021-10-06 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name my atcoder
  3. // @namespace xay5421
  4. // @version 0.2
  5. // @description 我的 atcoder 插件
  6. // @author xay5421
  7. // @match atcoder.jp/*
  8. // @require https://code.jquery.com/jquery-3.4.1.min.js
  9. // ==/UserScript==
  10.  
  11. var $=window.$;
  12.  
  13. function makeClock(){
  14. var myClock=$("<div></div>");
  15. var myInput=$("<input></input>");
  16. $(".h2:eq(0)").after(myClock);
  17. var myButton=$("<a class=\"btn btn-default btn-sm\"></a>");
  18. myInput.attr({
  19. "value":"00:10:00",
  20. "style":"width:80px"
  21. });
  22. myButton.text("开始");
  23. myClock.append(myInput);
  24. myClock.append(myButton);
  25. // document.onkeydown=function(e){if(e.keyCode==13)myButton.click();};
  26. var flag=0,cur;
  27. myButton.click(function(){
  28. if(flag==0){
  29. var x=myInput.val(),now;
  30. if(x.length!=8||!x.match(/[0-9][0-9]:[0-5][0-9]:[0-5][0-9]/)){
  31. alert("您的输入不合法,请重新输入");myInput.val("00:10:00");
  32. return;
  33. }
  34. flag=1;myButton.text("停止");
  35. var y=parseInt(x[0]+x[1])*60*60+parseInt(x[3]+x[4])*60+parseInt(x[6]+x[7]);
  36. cur=setInterval(function(){
  37. if(y>0)--y;
  38. myInput.val((""+parseInt(y/36000)%10)+(""+parseInt(y/3600)%10)+(":"+parseInt(y/600)%6)+(""+parseInt(y/60)%10)+(":"+parseInt(y/10)%6)+(""+parseInt(y)%10));
  39. if(y<=0){
  40. alert("时间到");
  41. flag=0;myButton.text("开始");clearInterval(cur);myInput.val("00:10:00");
  42. }
  43. },1000);
  44. }else{
  45. flag=0;myButton.text("开始");clearInterval(cur);//myInput.val("00:10:00");
  46. }
  47. });
  48. }
  49.  
  50.  
  51. function makeTable(){
  52. var username=["xay5421","zhouzhuan233","wasa855","xyr2005","yzc2005","LJC00118","zxn","Isonan","tourist","wlzhouzhuan","YLWang"];// 换成用户名,统计这些人是否 AC 这题
  53. var myTable=$("<table style='color:red;'></table>");
  54. $(".h2:eq(0)").after(myTable);
  55. var path=window.location.href.split('/')
  56. for(var i=0;i<username.length;++i){
  57. setTimeout(
  58. function(name){
  59. var str=window.location.href.slice(0,window.location.href.indexOf("/tasks"))+"/submissions?f.Task="+path[path.length-1]+"&f.Status=AC&f.User="+name;
  60. $.get(str,function(data,status){
  61. if(data.indexOf("No Submissions")==-1)myTable.append($("<td>"+name+"&nbsp</td>"));
  62. });
  63. },0,username[i]
  64. );
  65. }
  66. }
  67.  
  68. function atcoder(){
  69. if(window.location.href.match(/atcoder.jp\/contests\/.*\/tasks\/.+/)){
  70. $("#task-lang-btn").remove();
  71. makeClock();
  72. makeTable();
  73. }
  74. }
  75.  
  76. (function() {
  77. atcoder();
  78. })();