我就是积极分子

西南石油大学入党积极分子网课自动播放

当前为 2020-10-26 提交的版本,查看 最新版本

// ==UserScript==
// @name         我就是积极分子
// @namespace    laoxin.top
// @version      2.2.1beta
// @description  西南石油大学入党积极分子网课自动播放
// @author       老新
// @match        http://rdjy.swpu.edu.cn/jjfz/lesson/*
// @grant        unsafeWindow
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/2.0.0/jquery.js

// ==/UserScript==

let settings = {
        // 1表示开启,0表示关闭
        video: 1, // 视频弹窗自动关闭,可以最小化窗口,切换标签页,默认开启
        jump: 1, // 自动切换下一个视频任务点,默认开启(需要开启视频弹窗自动关闭)
        back: 1, // 視頻播放完成自動回到章節列表,默认开启(需要开启自动切换到下一个任务点)
        class: 1 // 自动切换到未播放的章节,默认开启(需要开启視頻播放完成自動回到章節列表)
    },
    _self = unsafeWindow,
    url = location.pathname,
    classLists = [],
    videoLists = [];

let $$ = top.jQuery;
if (url == "/jjfz/lesson/video" && settings.class) {
    let passNum = 0;
    let cl = setInterval(() => {
        getClassList();
        passNum = $$(".lesson_pass").length;
        if (classLists.length) {
            jumpToVideoFromClass(passNum)
        }
        if (classLists.length) clearInterval(cl);
    }, 1000);
}

if (url == "/jjfz/lesson/play" && settings.video) {
    playVideo();
    let nextVideoFlag = false,
        nextClassFlag = false;

    let vp = setInterval(() => {
        if (!videoLists.length) {
            getVideoList();
        }
        nextVideoFlag = closeAlert();
        if (settings.jump) {
            nextClassFlag = jumpToVideo(videoLists);
            if (nextVideoFlag) nextClassFlag = nextVideo(videoLists);
        }
        if (settings.back) {
            if (nextClassFlag) goBack();
        }
    }, 1000)
}

function getClassList() {
    let classList = []
    if ($$(".l_list_right")) {
        $$(".l_list_right").each((ind, ele) => {
            if ($$(ele).find("div .r_read").text() == " 必 修 ") {
                classList.push($$(ele).find("h2 a"))
            }
        })
    }
    classLists = classList;
}

function getVideoList() {
    if ($$(".video_lists li").length) {
        console.log("当前视频" + $$(".video_red1").text())
        videoLists = $$(".video_lists li");
    }
}

function jumpToVideoFromClass(passNum) {
    if (passNum != classLists.length) {
        $$(classLists[passNum]).attr('id', 'aRemoveAllTxt');
        document.getElementById("aRemoveAllTxt").click();
    }
}


function closeAlert() {
    if ($$(".public_submit").length) {
        //console.log("视频数量" + $$(".video_lists li"))
        let text = $$(".public_text").text();
        if (text.indexOf("当前视频播放完毕") >= 0) {
            return true;
        } else if (text.indexOf("该课程视频你上次观看到") >= 0) {
            $$(".public_cancel").attr('id', 'aRemoveAllTxt');
            document.getElementById("aRemoveAllTxt").click();
            return false;
        } else {
            $$(".public_submit").attr('id', 'aRemoveAllTxt');
            document.getElementById("aRemoveAllTxt").click();
            return false;
        }
    }
}

function nextVideo(videoList) {
    let index = $$(videoList).index($$(".video_red1"));
    if (videoList[index + 1]) {
        $$(videoList[index + 1]).children("a").attr('id', 'aRemoveAllTxt');
        document.getElementById("aRemoveAllTxt").click();
        return false;
    } else {
        return true;
    }
}

function jumpToVideo(videoList) {
    if ($$(".video_red1").find("a").attr("style") == "width:70%;color:red") {
        let index = $$(videoList).index($$(".video_red1"));
        if (videoList[index + 1]) {
            $$(videoList[index + 1]).children("a").attr('id', 'aRemoveAllTxt');
            document.getElementById("aRemoveAllTxt").click();
        } else {
            return true;
        }
    }
}

function goBack() {
    $$(".video_goback").attr('id', 'aRemoveAllTxt');
    document.getElementById("aRemoveAllTxt").click();
}

function playVideo() {
    _self.studyTime = function () {
        var diff_time = 5000;
        $.ajax({
            type: "POST",
            cache: false,
            dataType: "json",
            url: "/jjfz/lesson/study_time",
            data: {
                rid: "630089",
                study_time: diff_time,
                _xsrf: $(":input[name='_xsrf']").val()
            },
            success: function () {
            }
        });
        flag = setTimeout("studyTime()", diff_time);
    }
    _self.players[0].on('pause', function (event) {
        if ($$(".public_submit").length) {}
        else _self.players[0].play();
    });
}