Greasy Fork is available in English.

职培云刷课-学习中心的未完成课程

可以将学习中心中的所有未完成课程的课时刷满(个人仅有此需求,如有其他需求者可自行修改代码)

// ==UserScript==
// @name         职培云刷课-学习中心的未完成课程
// @namespace    http://tampermonkey.net/
// @version      1.1.2
// @description  可以将学习中心中的所有未完成课程的课时刷满(个人仅有此需求,如有其他需求者可自行修改代码)
// @author       攸泠
// @match        https://px.class.com.cn/player/*
// @match        https://px.class.com.cn/study/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    /*获取当前页面的url,用以判断执行哪一部分脚本*/
    var url = window.location.href;
    /*如果含有未完成的课程,则自动进入课程中*/
    if(url.indexOf('study/myclass/index')!=-1){
        var unfinished = document.getElementsByClassName('class-list-box')[0].getElementsByClassName('unfinished');
        if(unfinished.length>0){
            /*进入课程*/
            unfinished[0].getElementsByClassName('title')[0].click();
        }
        /*如果课程中含有未完成视频,则自动进入该课程,否则返回班级*/
    }else if(url.indexOf('study/myclass/course')!=-1){
        var finish_no = document.getElementsByClassName('list-box')[0].getElementsByClassName('finish-no');
        if(finish_no.length>0){
            /*进入视频*/
            finish_no[1].getElementsByTagName('button')[0].click();
        }else{
            /*返回班级*/
            document.getElementsByClassName('text-header')[0].getElementsByTagName('a')[0].click();
        }
    }else{
        /*当前观看的课程*/
        var current;
        /*课程中的所有课程*/
        var list;
        /*观看状态:1表示当前视频未看完,0表示当前视频已看完(已完成课程重刷)*/
        var lessonstatus = 1;
        /*查看模式:0代表未看完的方式,1代表已看完重刷一次,默认1即可刷所有视频,0只能刷未看完的视频*/
        var watchmode = 0;
        /*开始统计视频总时长(5秒内可自行选择起始视频)*/
        setTimeout(function() {
            /*分*/
            var minute = -1;
            /*秒*/
            var second = 0;
            /*课程内所有视频*/
            list = document.getElementById("list_chapter").getElementsByClassName("section");
            /*时间累加*/
            for(var i = 0; i < list.length; i++) {
                //定位到当前视频
                if(list[i].className.indexOf("active")!=-1) {
                    current = i;
                    minute = 0;
                }
                if(minute >= 0){
                    minute += parseInt(list[i].getElementsByClassName("time")[0].innerHTML.split(":")[0]);
                    second += parseInt(list[i].getElementsByClassName("time")[0].innerHTML.split(":")[1]);
                }
            }
            minute += parseInt(second/60);
            var time = document.createElement('div');
            time.style = "position:fixed;;top:20px;left:30%;background-color: pink;";
            time.innerText = '视频总长'+minute+'分'+second%60+'秒,已开启自动播放,感谢使用攸泠脚本!';
            document.body.append(time);
        }, 5000);

        /*刷已完成课程*/
        /*因为是iframe标签,所以使用监听非常麻烦,这里采用计时的方式*/
        /*考虑到网络延时,多增加了10秒延迟*/
        function watchover(){
            lessonstatus = 0;
            var minute = parseInt(list[current].getElementsByClassName("time")[0].innerHTML.split(":")[0]);
            /*随机时间,10代表0-10,5代表0-10加了5秒,即5-15秒*/
            var second = parseInt(list[current].getElementsByClassName("time")[0].innerHTML.split(":")[1]) + (Math.random() * 10) + 5;
            if(second>=60){
                minute ++;
                second -= 60;
            }
            document.getElementById('list_chapter').getElementsByClassName("active")[0].innerHTML += "-"+minute+":"+second;
            console.log(current);
            setTimeout(function() {
                current ++;
                list[current].click();
                lessonstatus = 1;
            }, (minute * 60 + second) * 1000);
        }
        /*刷未完成课程*/
        function watchnew(){
            var test = list[current].getElementsByClassName("status-done")[0].innerText;
            //判断是否播放完成
            if(current >= list.length-1){
                document.getElementsByClassName('btn-back')[0].getElementsByTagName('a')[0].click();
            }else{
                if(typeof(test) != "undefined") {
                    console.log("视频已播放完成:" + test);
                    current ++;
                    list[current].click();
                }
            }
        }
        /*定时启动判断程序*/
        setInterval(function() {
            if (watchmode == 1){
                if (lessonstatus == 1){
                    watchover();
                }
            }else{
                watchnew();
            }
        },10000)
    }
})();