直接上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 2024-05-19
// @description try to take over the world!
// @author You
// @match https://player.cnzx.info/KeCheng/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=cnzx.info
// @grant none
// ==/UserScript==


(function() {
'use strict';
var errcount = 0;
var listening = false;
var currentPageURL = document.location.href;
console.log("当前脚本所注入的页面 URL:", currentPageURL);

function nextcourse(){
// 这里是要执行的代码
console.log('寻找可播放列表');
// 获取包含章节列表的父元素
var chapterList = document.querySelector('.m-chapterList');

// 获取所有没有展开的章节
var chapterItems = chapterList.querySelectorAll('.chapter:not(.ant-menu-submenu-open)');

// 展开所有章节
chapterItems.forEach(function(item) {
item.click();
});

// 遍历所有课时,读取课程名称和有没有学过
var sections = chapterList.querySelectorAll('.section');

// 遍历每个 section
for (var i = 0; i < sections.length; i++) {
var section = sections[i];

var courseName = section.querySelector('.ksname').textContent;
var zhuangtai = section.querySelector('.u-clicon.ksicon').title;

console.log('课程名称:', courseName);
console.log('是否学过:', zhuangtai);

if (zhuangtai == '未完成') {
section.click();
break; // 停止继续遍历
}
}
};
var timerId = setInterval(function () {
try {
var playerElement = document.getElementById('chinaHcmPlayer');

if (playerElement === null) {
console.log('playerElement is null');
if(errcount > 100){
clearInterval(timerId); // 停止定时器
}
errcount++;
return;
}
if(!listening){
playerElement.addEventListener("ended", function () {
console.log('播放完毕,开始寻找可播放列表');
setTimeout(function() {
nextcourse();//学下一课
}, 1000);
});
listening = true;
}

var XueXiZhuangTai = document.getElementById('XueXiZhuangTai');
console.log(XueXiZhuangTai.title);
if(XueXiZhuangTai.title == '未学习') {
playerElement.muted = true;//必须要加这一句才能在脚本中执行play(),可能是浏览器的安全策略
playerElement.play();//按播放直接开始
return;
}else if(XueXiZhuangTai.title == '学过了'){
nextcourse();//学下一课
}
} catch (error) {
// 处理异常情况
console.log("发生错误:", error);
clearInterval(timerId); // 停止定时器
}
}, 2000)
})();

更多内容请关注我的博客