Greasy Fork

Greasy Fork is available in English.

U校园挂机脚本(自动判断必修)

生命短暂而美好,没时间纠结,没时间计较

目前为 2022-04-25 提交的版本,查看 最新版本

// ==UserScript==
// @name         U校园挂机脚本(自动判断必修)
// @namespace    http://tampermonkey.net/
// @version      0.1.3
// @description  生命短暂而美好,没时间纠结,没时间计较
// @author       handsometaoa
// @match        https://ucontent.unipus.cn/_pc_default/pc.html?cid=*
// @grant        none
// @license      GPL-3.0
// @compatible   chrome
// ==/UserScript==

//表示每个页面停留[minMinute分minSeconds秒,maxMinute分钟maxSeconds秒],可以自己设置
var minMinute=7;//最小分钟
var minSeconds=30;//最小秒数
var maxMinute=10;//最大分钟
var maxSeconds=30;//最大秒数
var feibixiu = document.getElementsByClassName("taskTipStyle--disrequired-1ZUIG");
var bixiu = document.getElementsByClassName("taskTipStyle--required-23n0J")
function switch_next(selector, classFlag) {
    let flag = false;
    for (let [index, unit] of document.querySelectorAll(selector).entries()) {
        if (flag) {
            unit.click();
            //防止必修弹窗失效,跳转便刷新页面,1000表示跳转1秒后刷新页面
            setTimeout(() => {
                location.reload();
            }, 1000);
            flag = false;
            break;
        }
        if (unit.classList.contains(classFlag)) {
            flag = true;
        }
    }
}
//判断是否必修
setTimeout(() => {
    if(feibixiu[0].innerText == "非必修"){
    switch_next('.layoutHeaderStyle--circleTabsBox-jQdMo a', 'selected');
    switch_next('#header .TabsBox li', 'active');
    switch_next('#sidemenu li.group', 'active');
 } else if(bixiu[0].innerText == "必修"){
     return 0;
 }
},3000);
//计算实际停留时间,防止每个页面停留时间相同
function realTime() {
    let rate = Math.random();
    return (minMinute * 60 +minSeconds+((maxMinute-minMinute)*60+maxSeconds-minSeconds)* rate) * 1000;
}
//自动点击必修弹窗和麦克风弹窗 3000表示延迟3秒,因为弹窗有延迟,主要看反应速度。
setTimeout(() => {
    var x = document.getElementsByClassName("dialog-header-pc--close-yD7oN"); x[0].click();
    document.querySelector("div.dialog-header-pc--dialog-header-2qsXD").parentElement.querySelector('button').click();
},3000);


//跳转下一节

setTimeout(() => {
    switch_next('.layoutHeaderStyle--circleTabsBox-jQdMo a', 'selected');
    switch_next('#header .TabsBox li', 'active');
    switch_next('#sidemenu li.group', 'active');
}, realTime());