济达教育网课助手

济达教育 自动视频播放 刷课助手

// ==UserScript==
// @name         济达教育网课助手
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  济达教育 自动视频播放 刷课助手
// @author       Nuzoul
// @license      MIT
// @match        https://www.jetjy.com/*
// @icon         https://www.jetjy.com//favicon.ico
// @grant        none
// ==/UserScript==
(function () {
    'use strict';

    const playercontainerId = 'playercontainer';
    const videoSelector = 'video.jw-video,video.vjs-tech';
    const courseSelector = 'div.el-row div.el-col';
    const messageBoxWrapperSelector = '.el-message-box__wrapper';
    const confirmButtonSelector = '.el-message-box__btns button';
    const courseListItemSelector = '.courseMenuList li';
    const progressSelector = '.f-right';
    const stateIdle = 'jw-state-idle';
    const statePaused = 'jw-state-paused';
    const statePlaying = 'jw-state-playing';

    const autoPlayVideo = function () {
        const playerContainer = document.getElementById(playercontainerId);
        if (!playerContainer || playerContainer.classList.contains(statePlaying)) {
            return;
        }

        if (playerContainer.classList.contains(stateIdle) && !jumpToCourse()) {
            console.log("当前页面已全部播放完成....");
            return;
        }

        if (!playerContainer.classList.contains(statePlaying)) {
            console.log('当前暂停播放');
            const videoElement = document.querySelector(videoSelector);
            if (videoElement) {
                playVideo();
            }
        }

        const messageBoxWrapper = document.querySelector(messageBoxWrapperSelector);
        if (messageBoxWrapper && window.getComputedStyle(messageBoxWrapper).display !== 'none') {
            const confirmButton = document.querySelector(confirmButtonSelector);
            if (confirmButton) {
                confirmButton.click();
                location.reload();
            }
        }
    };

     function playVideo() {
        let playTimes = 1;
        const intervalId = setInterval(() => {
            if(playTimes >= 5){
                console.log(`播放失败,尝试播放次数:${playTimes}`);
                clearInterval(intervalId);
                return;
            }
            const playerContainer = document.getElementById(playercontainerId);
            const videoElement = playerContainer.querySelector(videoSelector);
            if(!videoElement){
                console.log("videoElement not exist");
                clearInterval(intervalId);
            }
            if (playerContainer && videoElement && !playerContainer.classList.contains(statePlaying)) {
                console.log(`第 ${playTimes} 次尝试播放`);
                videoElement.muted = true;
                videoElement.play();
            } else {
                clearInterval(intervalId);
            }
            playTimes++;
        }, 1000);
    }

    function jumpToCourse() {
        const listItems = document.querySelectorAll(courseListItemSelector);
        const listItemsArray = Array.from(listItems);

        const result = listItemsArray.some((item, index) => {
            const progressElement = item.querySelector(progressSelector);
            const progressText = progressElement.textContent.trim();

            if (progressText === '100%') {
                //console.log(`第 ${index + 1} 个课程已完成,跳过`);
            } else {
                const courseLi = item.querySelector(courseSelector);
                courseLi.click();
                console.log(`点击了第 ${index + 1} 个课程`);
                return true;
            }

            return false;
        });

        return result;
    }

    window.onload = function () {
        const intervalId = setInterval(autoPlayVideo, 6000);
    };

})();