Pinnacle Optimize

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

目前为 2023-06-16 提交的版本。查看 最新版本

// ==UserScript==
// @name         Pinnacle Optimize
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  hdu pinnacle刷题网站的优化脚本。
// @author       Lycoiref
// @match        *://pinnacle-primary-fe.mjclouds.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=mjclouds.com
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
// hdu pinnacle刷题网站优化脚本
window.onload = async () => {
    await new Promise((resolve) => {
        setTimeout(resolve, 100)
    })
    while(!document.querySelector('.items-center') || !document.querySelector('button') || !document.querySelector('.whitespace-pre-line')) {
        await new Promise((resolve) => {
            setTimeout(resolve, 100)
        })
    }
    try {
        options
        window.location.reload()
    } catch (e) {
    }
    let options = document.querySelectorAll('.items-center')
    let btns = document.querySelectorAll('button')
    let question = document.querySelector('.whitespace-pre-line')
    setInterval(() => {
        let cards = document.querySelectorAll('p')
        cards.forEach((card) => {
            if (card.innerText==='题库市场') {
                window.location.reload()
            }
        })
    }, 100)

    window.addEventListener('keypress', (e) => {
        // QWER分别对应1234个选项
        switch (e.key) {
            case 'q':
                options[0].click()
                break
            case 'w':
                options[1].click()
                break
            case 'e':
                options[2].click()
                break
            case 'r':
                options[3].click()
                break
        }
        // 空格键对应下一题
        if (e.key === ' ') {
            if (btns[1].attributes['disabled']) {
                btns[2].click()
                // 清除focus
                document.activeElement.blur()
            } else {
                btns[1].click()
            }
        }
    })

    // 创建对question的观察进程
    let observerOptions = {
        childList: true,
        subtree: true,
        attributes: true,
        // 监听innerHTML的变化
        characterData: true
    }
    let observer = new MutationObserver((mutations) => {
        console.log('question changed')
        options = document.querySelectorAll('.items-center')
    })

    observer.observe(question, observerOptions)
}




})();