智慧树知到刷课脚本chrom实现自动答题+视频倍速方法

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 14:34   65   0

初衷

智慧树视频播放完后,不能自动播放下一集,并且会偶尔弹出"测试"对话框! 我想着利用所学的前端知识,帮助自己刷课,所以就有了这个脚本。

话不多说:

链接:https://www.lanzoux.com/b01ho2c6d

下面开始用图说话:

下面是神秘代码:

//查找节点
var tips = document.getElementsByClassName("exploreTip");
//创建新节点
var option = document.createElement("div");
//添加样式
option.style="color:DarkOrange;text-align:center;line-height:90px;font-size:30px;background-image: url('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1555229569058&di=b96c64bb8d02130a76cab9525cdd1610&imgtype=0&src=http%3A%2F%2Fimg.lenovomm.com%2Fs3%2Fimg%2Ficon%2Fapp%2Fapp-img-lestore%2F2315-2015-07-07040431-1436256271865.png'); background-repeat: no-repeat; background-size: 100%; width: 90px; height: 90px; border-radius: 45px;position:fixed;left:60px;top:200px; z-index:999;"
//添加点击事件
option.setAttribute("onClick","StartOrStop()");
option.setAttribute("id","rains");
//插入节点到页面
tips[0].parentNode.insertBefore(option,tips[0]);
//定时器
var timer;
//初始状态
var startstatus = 0;
//次数
var number = 0;
 
//函数
function start(){
    if(number % 200 == 0){
          console.clear();
    }
    number += 1;
    //获取进度条,以右边章节列表里的进度为准
    var pass = document.getElementsByClassName("progressbar")[0];//passTime
    //获取答题框状态
    var dialog = document.getElementsByClassName("wrap_popboxes  wrap_popchapter")[0];
    var vbox=document.getElementsByClassName('volumeBox')[0];
    //静音
    if(vbox.className=="volumeBox"){
           document.getElementsByClassName("volumeIcon")[0].click();
    }
    //获取1.5倍速播放按钮
    var SpeedBox15=document.getElementsByClassName("speedTab15")[0];
    var SpeedBox=document.getElementsByClassName("speedBox")[0];
    //判断当前是否为1.5倍速,根据图片来判断
    if(SpeedBox.style.backgroundImage!='url("http://lc.zhihuishu.com/ableVideoPlayer/img/core/1.5-2.png")')
    {
           SpeedBox15.click();
    }
    //通过删除节点来关闭答题框
    if(dialog != undefined){
        var body=document.getElementsByTagName('body')[0];
       var a=document.getElementById('popbox_overlay');
       body.removeChild(a);
       body.removeChild(dialog);
    }
    //判断播放进度是否大于84%
    if(parseInt(pass.style.width) > 84){
        //切换下一个视频
        document.getElementById("nextBtn").click();
    }
    var play  = document.getElementsByClassName("bigPlayButton pointer")[0];
    //已经暂停 点击开始按钮 
    if(play.style.display == "block"){
            play.click();
    }
    console.log("执行第"+ number + "次");
}
function StartOrStop(){
    //获取播放状态
    var play  = document.getElementsByClassName("bigPlayButton pointer")[0];
    if (startstatus == 0){
        //开始脚本
        timer = setInterval(start, 3000);
        //已经暂停 点击开始按钮 
        if(play.style.display == "block"){
            play.click();
        }
        startstatus = 1;
        var rains = document.getElementById("rains");
        rains.innerText = "已开";
        rains.style.color = "blue";
    }else if (startstatus == 1) {
//停止脚本
        clearInterval(timer);
        //已经播放 暂停播放
        if(play.style.display == "none"){
            play.click();
        }
        startstatus = 0;
        var rains = document.getElementById("rains");
        rains.innerText = "已关";
        rains.style.color = "red";
    }
}

如有遇到BUG可留言反馈,看到会及时回复,欢迎互相学习!


更新记录:

2020-7-12有网友留言说2倍播放不能用,我之前没太注意,然后自己试了一下的确有问题,近些天尝试看能不能修复。
2020-7-29新超星测试脚本,适配多视频的课程。解决了以前一个章节下多个视频无法播放的问题。
2020-8-6不知道为什么之前用jquery语法写的用了一段时间会报错,索性直接改成了用原生javascript语法
2020-8-12删除多次反馈 已经不能用的原第一段代码,以及更新旧版等功能

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP