ulearning

课程思政网络培训的视频每隔几分钟会暂停播放,这个脚本可以帮你自动(每分钟检测一次)继续播放,还可以跳过非视频的页面(这个功能没有仔细测试)。只支持在同一个课程内自动播放,播放结束后跳到下一章节,所以请选择一个学分数很大的课程来挂课。

As of 15/05/2021. See the latest version.

// ==UserScript==
// @name         ulearning
// @namespace    http://tampermonkey.net/
// @version      0.6
// @description  课程思政网络培训的视频每隔几分钟会暂停播放,这个脚本可以帮你自动(每分钟检测一次)继续播放,还可以跳过非视频的页面(这个功能没有仔细测试)。只支持在同一个课程内自动播放,播放结束后跳到下一章节,所以请选择一个学分数很大的课程来挂课。
// @author       laohoo
// @match        https://ua.ulearning.cn/learnCourse/learnCourse.html*
// @icon         https://www.google.com/s2/favicons?domain=ulearning.cn
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    console.log(Date(), 'go to do.');
    let tiemOut = 1000*60;  // 检测间隔时间,默认为一分钟(1000*60)一次
    let lists = [];
    let index = 0;



    function getPlayList(){
        lists = document.querySelectorAll('.page-item div.page-name.cursor');
        console.log(lists);
    }

    function nextPage(){
        let nextBtn = document.querySelector('.next-page-btn');
        let step = 2;
        console.log(Date(), 'next page.');

        while(step){
            step--;
            if(nextBtn){
                console.log(Date(), 'button.btn-hollow is click.');
                nextBtn.click();
                setTimeout(function(){
                    let btn_hollow = document.querySelector('button.btn-hollow');
                    if(btn_hollow){
                        btn_hollow.click();
                    }
                }, 1000);
            }
        }
        nextActivePage();
    }

    function nextActivePage(){
        if(lists.length){
            console.log(Date(), 'play lists.');
            for(var index in lists){
                if(!lists[index].classList.contains('complete')|| !lists[index].classList.contains('active')){
                    console.log(Date(), 'not finish',lists[index]);
                    lists[index].click();
                    break;
                }
            }
        }
    }

    setInterval(function(){
        try{
            let btn_play = document.querySelector('.mejs__overlay-play');
            let playStatus = document.querySelector('div.video-progress  div.text span');

            //let videoWrapper = document.querySelector('.video-wrapper');
            //console.log('videoWrapper: ',videoWrapper);
            if(lists.length<2){
                getPlayList();
            }

            if(!btn_play){
                nextPage();
            }else if(lists.length){
                //nextActivePage();
                //                 console.log('play lists.');
                //                 for(index in lists){
                //                     let iconfont= lists[index].querySelector('.iconfont');
                //                     if(!iconfont.classList.contains('finish')){
                //                         console.log('not finish',lists[index]);
                //                         lists[index].click();
                //                         break;
                //                     }
                //                 }
            }


            console.log(Date(), 'btn_play: ',btn_play);
            //console.log('currentTime: ',currentTime.innerText);
            console.log(Date(), 'playStatus: ',playStatus.innerText?playStatus.innerText:"No Status.");

            if(btn_play){
                btn_play.addEventListener("click", function(){
                    console.log(Date(), '  have a click.');
                });
                //btn_play.setAttribute('aria-pressed','true');
                if(btn_play.style.display!=='none'){
                    if(playStatus.innerText !='已看完'){
                        btn_play.click();
                        console.log(Date(), ' play continue... ');
                    }else{
                        if(lists.length){
                            console.log('play lists.');
                            for(index in lists){

                                //let iconfont= lists[index].querySelector('.iconfont');

                                if(!lists[index].classList.contains('complete')|| !lists[index].classList.contains('active')){
                                    console.log('not finish',lists[index]);
                                    lists[index].click();
                                    break;
                                }
                            }
                        }
                    }
                }else{
                    console.log(Date(), '  没看完.');
                }
            }

        }
        catch(e){
            console.log(Date(), "Error in this userscript: ",e.message);
        }
    }, tiemOut);



    // Your code here...
})();