思路
- 一些视频学习网站,在学生观看一段时间后,就自动暂停,防止学生挂机
- 针对于这个情况,我们可以写一个脚本去处理,从而做到电脑不关机
- 睡觉的时候,也能够自动播放,就很嗨皮
- 大致就是,通过
setInterval
定时检查判断视频状态 - 并且派发点击事件让视频播放
- 这样的话,就可以挂机了
其他的视频类网站也是类似的思路...
脚本一
document.querySelector(".btn-play")?.click();
const monitorVideo = () => {
setTimeout(() => {
const __video = document.getElementsByTagName("video")[0];
__video.addEventListener("ended", playNext);
}, 5000);
};
let todayCnt = 1;
const playNext = () => {
if (todayCnt > 6) {
console.log("今天已经学完6集");
return;
}
const list = document.querySelectorAll(".cf-catalog-item1 .cf-catalog-item2");
let curIdx = 0;
let curName = list[0].title;
for (let index = 0; index < list.length; index++) {
const element = list[index];
if (element.className.includes("active")) {
curIdx = index;
curName = element.title;
}
}
if (++curIdx < list.length) {
const next = list[curIdx];
console.log(
"当前集: " + curName + "已经播放完了\n5s后播放下一集: " + next.title
);
next.click();
setTimeout(() => {
document.querySelector(".btn-play").click();
todayCnt++;
monitorVideo()
}, 5000);
} else {
console.log("您已经学习了全部课程");
}
};
setInterval(() => {
const btn1 = document.querySelector(
".el-notification .el-notification__closeBtn"
);
btn1 && btn1.click();
const btn2 = document.querySelector(".cf-messagebox-body .enter");
btn2 && btn2.click();
}, 10000);
monitorVideo()
脚本二
let videoDom = document.querySelector('video')
videoDom.addEventListener('ended', function () { //结束
nextPlay()
}, false);
function nextPlay() {
let current = document.querySelector('.cf-catalog-item1 .active')
let next = current.nextElementSibling
console.log('当前视频播放完了,2秒后播放下一个');
setTimeout(() => {
simulate(next)
console.log('两秒后播放下一个');
let videoDom = document.querySelector('video')
console.log('重新绑定视频结束事件');
videoDom.addEventListener('ended', function () {
nextPlay()
}, false);
videoDom.play()
}, 4000);
}
function simulate(dom) {
dom.dispatchEvent(new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window,
}))
}
setInterval(() => {
let box = document.querySelector('.cf-messagebox-body')
if (box) {
console.log('弹框出现,模拟点击按钮,继续刷课');
let btn = box.querySelector('button')
simulate(btn)
} else {
console.log('弹框未出现,等待之');
}
}, 5000);
参考文章1:使用js进行智慧树刷课
参考文章2:video标签属性
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。