作为一名比较慵懒的程序员,当接收到女朋友帮忙刷网课的请求时候,脸上笑嘻嘻,心里…,心思着也就是点点视频,多开个网页的事儿,但当我打开这个网课平台智慧树,观看了两节视频之后,发现这个看课的机制是真的操蛋,大致看了一下每节视频平均10分钟左右,但是视频观看途中会出现弹窗,然后一节观看完成之后不会自动播放下一节等等操蛋问题,所以观看效率也就十分低下所以就有了下文。
- 观察每节标题,发现是一个li标签,点击之后会自动加载本节视频,在章节末尾会显示当前进度,对比发现未观看的视频没有这个进度所以有了以下代码,选择出当前应该播放的章节视频,并且自动播放。
function nowVideoClick(){
//查找当前观看到的章节
var processs = document.getElementsByClassName("learningPercentage-span");
...
...
}
- 解决了点看学习课堂自动按章节播放的问题之后,发现这个视频在播放的过程中会出现问题弹窗,提示是否进入下一章节学习的弹窗,观察发现可以通过获取这个事件的文本内容从而去确定要执行什么操作。代码如下:
//自动播放
function auto(){
nowVideoClick();
setTimeout(function () {
$('.speedTab15').click();
$('.volumeIcon').click();
console.log("已自动观看,开启进行和1.5倍加速");
},3000);
$('body').on("DOMNodeInserted", function (e) {});
}
- 会出现这么一种情况,当开启倍速播放后,有可能视频已经加载完毕,但是进度并没有刷完,这时候就出现视频自动暂停播放,故设置一个定时函数定时从头播放当前章节视频。代码如下:
- 完整代码
```HTML
//开始自动播放
auto();
//每隔5分钟重新点击本章节(防假死)
setInterval(function(){
nowVideoClick();
auto();
},10000);
//自动播放
function auto(){
nowVideoClick();
setTimeout(function () {
$('.speedTab15').click();
$('.volumeIcon').click();
console.log("已自动观看,开启进行和1.5倍加速");
},3000);
$('body').on("DOMNodeInserted", function (e) {
if (e.target.textContent == "关闭") {
window.setTimeout(function () {
document.getElementById("tmDialog_iframe").contentWindow.document.getElementsByClassName("answerOption")[0].getElementsByTagName("input")[0].click();
$(".popbtn_cancel").click();
console.log("已关闭");
}, 3000);
} else if (e.target.textContent == "本节视频,累计观看时间『100%』") {
console.log("检测到视频观看完成,准备跳到下一节");
$('.next_lesson_bg').find('a').trigger('click');
console.log("已跳转");
setTimeout(function () {
$('.volumeIcon').click();
$('.speedTab15').click();
console.log("已自动观看,开启进行和1.5倍加速");
}, 6000);
}
});
}
function nowVideoClick(){
//查找当前观看到的章节
var processs = document.getElementsByClassName("learningPercentage-span");
//当前未观看视频id
for(var i =0;i<processs.length;i++){
console.log("当前章节进度:"+processs[i].innerHTML);
if(""!=processs[i].innerHTML){
var notSeeId = processs[i].nextElementSibling.id;
console.log("章节目录节点名称:"+notSeeId);
var relId = "video-"+notSeeId.split('_')[1];
var video = document.getElementById(relId);
//选中当前章节
video.click();
break;
}
}
}
HTML```
日行一善,不积跬步无以至千里。