思路
- 一些視頻學習網站,在學生觀看一段時間後,就自動暫停,防止學生掛機
- 針對於這個情況,我們可以寫一個腳本去處理,從而做到電腦不關機
- 睡覺的時候,也能夠自動播放,就很嗨皮
- 大致就是,通過
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標籤屬性