Pinnacle Optimize

hdu pinnacle刷题网站的优化脚本。

当前为 2023-06-16 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Pinnacle Optimize
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @description hdu pinnacle刷题网站的优化脚本。
  6. // @author Lycoiref
  7. // @match *://pinnacle-primary-fe.mjclouds.com/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=mjclouds.com
  9. // @license MIT
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict'
  15.  
  16. // Your code here...
  17. // hdu pinnacle刷题网站优化脚本
  18. window.onload = async () => {
  19. await new Promise((resolve) => {
  20. setTimeout(resolve, 100)
  21. })
  22. while (!document.querySelector('.items-center') || !document.querySelector('button') || !document.querySelector('.whitespace-pre-line')) {
  23. await new Promise((resolve) => {
  24. setTimeout(resolve, 100)
  25. })
  26. }
  27. let options = document.querySelectorAll('.items-center')
  28. let btns = document.querySelectorAll('button')
  29. let question = document.querySelector('.whitespace-pre-line')
  30. setInterval(() => {
  31. let cards = document.querySelectorAll('p')
  32. cards.forEach((card) => {
  33. if (card.innerText === '题库市场') {
  34. window.location.reload()
  35. }
  36. })
  37. }, 100)
  38.  
  39. window.addEventListener('keypress', (e) => {
  40. // QWER分别对应1234个选项
  41. switch (e.key) {
  42. case 'q':
  43. options[0].click()
  44. break
  45. case 'w':
  46. options[1].click()
  47. break
  48. case 'e':
  49. options[2].click()
  50. break
  51. case 'r':
  52. options[3].click()
  53. break
  54. }
  55. // 空格键对应下一题
  56. if (e.key === ' ') {
  57. console.log(btns)
  58. if (btns[1]?.attributes['disabled']) {
  59. btns[2].click()
  60. // 清除focus
  61. document.activeElement.blur()
  62. } else {
  63. btns.forEach((btn) => {
  64. if (btn.innerText === '提交' || btn.innerText === '下一题') {
  65. btn.click()
  66. // 清除focus
  67. document.activeElement.blur()
  68. }
  69. })
  70. }
  71. }
  72. })
  73.  
  74. // 创建对question的观察进程
  75. let observerOptions = {
  76. childList: true,
  77. subtree: true,
  78. attributes: true,
  79. // 监听innerHTML的变化
  80. characterData: true
  81. }
  82. let observer = new MutationObserver((mutations) => {
  83. console.log('question changed')
  84. options = document.querySelectorAll('.items-center')
  85. })
  86.  
  87. observer.observe(question, observerOptions)
  88. }
  89. })()