浙江网校刷课助手

自动播放,有文档自动点击完成,自动倍速播放(这个需要在不开脚本情况下可以倍速才可以用)

// ==UserScript==
// @name         浙江网校刷课助手
// @namespace    www.hsmyldk.top
// @version      0.3
// @description  自动播放,有文档自动点击完成,自动倍速播放(这个需要在不开脚本情况下可以倍速才可以用)
// @author       浑水摸鱼ldk
// @match        *.zjooc.cn/ucenter/student/course/study/*
// @grant        none
// ==/UserScript==


var TIME = 5000; //5秒后开始脚本,主要是为了等网页加载完,打开网页第一次运行会等10秒
var kaiqibeisu = 0; //这个是0则自动倍速播放,为1则关闭倍速
var beisu = 0; //选项为0是4倍速,为1是2倍速,为2是1.5倍速,为3是1.25倍速,
setTimeout(function() {
    findWord();
}, TIME);
//检测当前页是不是文档
function findWord() {
    var word = document.getElementsByClassName('contain-item cleartop');
    //如果这一章有文档
    if (word.length > 0) {
        for (var p = 0; p < word.length; p++) {
            //当前页是文档
            if (word[p].parentElement.parentElement.style.display != 'none') {
                word[p].children[1].children[0].click(); //点击确定
                //等待5秒下一个
                setTimeout(function() {
                    next();
                }, TIME);
                break;
            } else {
                //当前页是视频
                if (p == (word.length - 1)) {
                    playideo();
                    break;
                }
            }
        }
    } else {
        //没有文档
        playideo();
    }
}
//播放视频
function playideo() {
    setTimeout(function() {
        var videoplyer = document.getElementById('video-show');
        // 没找到视频播放器
        if (videoplyer == null) {
            //重新搜寻
            setTimeout(() => {
                findWord();
            }, TIME);
        } else {
            //静音播放
            try {

                videoplyer.firstChild.children[2].children[18].click();
                videoplyer.firstChild.children[2].children[0].click();
            } catch {
                console.log('页面没加载出来,可能是网速不好。。');
            }
            try {
                if (kaiqibeisu == 0)
                    videoplyer.firstChild.children[8].children[beisu].click();
            } catch {
                console.log("倍速失败。。");
            }
            //探测视频啥时候播放完
            playEnded();
        }
    }, TIME)
}
// 下一页
function next() {
    var nowSmile = document.getElementsByClassName('el-tabs__item is-top is-active')[1];
    var border = nowSmile.parentElement.children;
    for (var i = 0; i < border.length; i++) {
        if (border[i].id == nowSmile.id) {
            if ((i + 1) == border.length) {
                //播放下一大节
                var nowBig = document.getElementsByClassName('el-container plan-detail ucenter-student is-vertical')[0].children[0].children[1].children[1];
                var AllBig = document.getElementsByClassName('el-menu-item');
                for (var o = 3; o < AllBig.length; o++) {
                    if (AllBig[o].children[0].textContent === nowBig.textContent) {
                        AllBig[(o + 1)].click();
                        setTimeout(function() {
                            findWord();
                        }, TIME);
                        break;
                    }
                }
            } else {
                //播放下一小节
                border[(i + 1)].click();
                setTimeout(function() {
                    findWord();
                }, TIME);
                break;
            }
        }
    }
}
//检测是否播放完成
function playEnded() {
    var timeBar = [0, 1, 2, 3, 4, 5, 6, 7, 8];
    var nowBar = 0;
    var play = setInterval(() => {
        var videoplyer = document.getElementById('video-show');
        if (videoplyer == null) {
            setTimeout(function() {
                findWord();
            }, TIME);
            clearInterval(play);
            return;
        }
        var Arr = videoplyer.firstChild.children[2].children[7].textContent.split(' / ')
        if (timeBar[nowBar] == Arr[0]) {
            clearInterval(play);
            playideo();
            return;
        } else {
            timeBar[nowBar] = Arr[0];
            if (nowBar < 7) {
                nowBar++;
            } else {
                nowBar = 0;
            }
        }
        if (videoplyer.firstChild.children[2].children[18].style.display != null) {
            videoplyer.firstChild.children[2].children[18].click();
        }
        if ((Arr[0] == Arr[1]) && (Arr[0] != "00:00")) {
            clearInterval(play);
            next();
        }
    }, 250);
}