简单的写了个自动完成学习公社的脚本
逻辑简单:主页面点击未学习,等待加载结束,点击第一个学习课程
记录课程时差,刷新,循环
视频界面判断是否关闭当前页面(每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));
}
文章评论