【油猴脚本】学习公社自动完成所有任务

2025年2月7日 40点热度 0人点赞

简单的写了个自动完成学习公社的脚本
逻辑简单:主页面点击未学习,等待加载结束,点击第一个学习课程
记录课程时差,刷新,循环
视频界面判断是否关闭当前页面(每10秒检查一次,需要主页面自动刷新)
没写注释,应该可以看懂,主要是延时部分可以自己调一调

使用方法:打开课程页面网址包含p/uc/myClassroom的页面,就什么不需要管了,考虑网络原因设置了加载时差12秒

// ==UserScript==
// @name         学习公社刷课脚本
// @version      0.5
// @description  一个用于学习公社刷课 的脚本。
// @author 忆白学渣
// @include      [url=https://www.ttcdw.cn/]https://www.ttcdw.cn/[/url]*
// @grant        none
// ==/UserScript==
async function main() {
    await sleep(12000);
    console.log("等待页面加载完毕");

    const currentUrl = window.location.href;
    if (currentUrl.includes('p/uc/myClassroom')) {
        console.log('当前网址为主页面');
        const unlearnedSpan = Array.from(document.querySelectorAll('.col-2 .total')).find(span => span.textContent.trim() === '未学习');
        unlearnedSpan.click();
        await sleep(10000);
        document.getElementsByClassName("btn study-btn")[0].click()
        const time = document.querySelector('.el-table_1_column_2 .cell > div').textContent.trim();
        console.log('时间:', time);
        const timeParts = time.split(':');
        const hours = parseInt(timeParts[0], 10);
        const minutes = parseInt(timeParts[1], 10)+1;
        const seconds = parseInt(timeParts[2], 10);
        const totalSeconds = hours * 3600 + minutes * 60 + seconds;
        await sleep(totalSeconds*1000);
        console.log('页面将在30秒后刷新...');
        setTimeout(() => {
            location.reload();
        }, 30000);

    } else {
        console.log('当前网址为视频页。');
        setInterval(checkButtons, 10000);
    }
}
function checkButtons() {
    const closeBtn = document.querySelector('.layui-layer-btn0');
    if (closeBtn) {
        console.log('找到关闭按钮,点击关闭按钮');
        closeBtn.click();
    } else {
        console.log('未找到关闭按钮,检查刷新按钮');
        const refreshBtn = document.querySelector('.layui-layer-btn1');
        if (refreshBtn) {
            console.log('找到刷新按钮,点击刷新按钮');
            refreshBtn.click();
        } else {
            console.log('未找到关闭按钮或刷新按钮,无法执行操作');
        }
    }
}
// 脚本入口
main();

// 保持原有的 sleep 函数不变
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

胖二十

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论