研修网学习脚本【XCC版】

发布于:2023-07-27 ⋅ 阅读:(123) ⋅ 点赞:(0)

发布:https://codechina.csdn.net/-/snippets/1071/raw/master/xcc-yanxiu.js

// ==UserScript==
// @name         研修网学习脚本【XCC版】
// @namespace    https://greasyfork.org/
// @version      0.1
// @description  研修网学习脚本【XCC版】
// @author       FRLH
// @match        https://ipx.yanxiu.com/train/*
// @match        https://ipx.yanxiu.com/grain/course/*
// @grant        none
// ==/UserScript==

window.AutoRun = {
    add: playList => {
        let playListCache = getPlayListCache();
        localStorage.setItem("playListCache", JSON.stringify(playListCache.concat(playList)));
    },
    reset: () => {
        localStorage.removeItem("playIndexCache");
        localStorage.removeItem("playListCache");
    }
}


function getPlayIndexCache() {
    let playIndexCache = localStorage.getItem("playIndexCache");
    return playIndexCache == null ? 0 : playIndexCache;
}

function getPlayListCache() {
    let playListCache = localStorage.getItem("playListCache");
    if (playListCache == null) {
        playListCache = [];
    } else {
        playListCache = JSON.parse(playListCache);
    }
    return playListCache;
}


function getClassHours() {
    let hasClasshours = document.querySelector(".score").innerText;
    let classhours = document.querySelector(".total-score").innerText;
    classhours = classhours.substr(0, classhours.length - 2);
    return classhours - hasClasshours;
}

function playCourses(classHours = getClassHours()) {
    let projectId = getQueryString("projectId");
    let toolId = getQueryString("toolId");
    let role = getQueryString("role");

    let playWindow = null;
    let playClassHours = 0;
    let playIndex = getPlayIndexCache();
    let timer = setInterval(function () {
        let playList = getPlayListCache();
        if (playIndex < playList.length && (playWindow == null || playWindow.closed)) {
            if (playWindow != null) {
                playClassHours += parseFloat(playList[playIndex - 1].classHours);
                localStorage.setItem("playIndexCache", playIndex - 1);
            }
            if (playClassHours >= classHours) {
                console.info(`学习完毕:已学习${playClassHours}/${classHours}课时`);
                clearInterval(timer);
                return;
            }

            let course = playList[playIndex++];
            playWindow = window.open();
            playWindow.location = `https://ipx.yanxiu.com/grain/course/${course.id}/detail?projectId=${projectId}&toolId=${toolId}&courseSourceId=${course.courseSourceId}&role=${role}`;
            console.info(`正在播放:【${playIndex}/${playList.length}】【${playClassHours}/${classHours}${course.courseName},时长:${course.noStudyTime / 60}分钟,课时:${course.classHours}`);
        } else if (playIndex >= playList.length) {
            console.info("请添加课程:AutoRun.add(课程列表)");
        }
    }, 10000);
}


function playCourse() {
    //处理播放器事件
    if (document.querySelector("video")) {
        let playerH5 = document.querySelector("video");
        playerH5.volume = 0; //不想听声音
        if (playerH5.paused) {
            playerH5.play(); //不要暂停,播下去
        }
    } else {
        // 如果第一个课件不是视频,则点击第一个视频
        document.querySelector(".res-relatedCourse").parentElement.childNodes[2].click();
    }

    //处理各种突发事件
    if (document.querySelector("div.alarmClock-wrapper").style.display == "") {
        document.querySelector("div.alarmClock-wrapper").click();
        console.log("点继续看课");
    }
    if (document.querySelector("div.scoring-wrapper").style.display == "") {
        document.querySelector(".scoring-wrapper .rating").lastElementChild.click();
        document.querySelector('div.commit > button.ivu-btn').click();
        console.log("给老师评价");
    }
    if (document.querySelector("button.ivu-btn.ivu-btn-text")) {
        document.querySelector("button.ivu-btn.ivu-btn-text").click();
        console.log("打开了其他播放页面,即将关闭本页面");
    }
    if (document.querySelector(".state > span").innerText.match(/您已完成看课总时长/)) {
        console.log("课时已达成,即将关闭页面");
        window.close();
    }
    if (document.querySelector("div.ended-mask").style.display == "") {
        if (document.querySelector("p.next")) {
            document.querySelector("p.next").click();
            console.log("一个看完,看下一个内容");
        } else {
            console.log("播放完毕,即将关闭页面");
            window.close();
        }
    }

}

function start() {
    //判断是哪个页面
    if (location.pathname === "/train/guide/course/list") {
        console.log("进入课程列表页面");
        playCourses();
    } else if (location.pathname.match(/\/grain\/course\/\d*\/detail/)) {
        console.log("进入课程视频页面");
        setInterval(playCourse, 5000);
    } else {
        console.log("未知页面");
    }
}

function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
}


(function () {
    console.log("正在加载脚本");
    setTimeout(start, 10000);
})();

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到