Greasy Fork is available in English.

大数据再教育自动刷课

本脚本仅供学习和交流使用,不得用于任何违反法律法规或侵犯他人权益的行为。用户在使用本脚本时应自行承担责任,并遵守当地法律法规。若因使用本脚本导致任何违法违规行为,与本作者无关。

// ==UserScript==
// @name         大数据再教育自动刷课
// @namespace    http://tampermonkey.net/
// @version      v1.0.1
// @description  本脚本仅供学习和交流使用,不得用于任何违反法律法规或侵犯他人权益的行为。用户在使用本脚本时应自行承担责任,并遵守当地法律法规。若因使用本脚本导致任何违法违规行为,与本作者无关。
// @author       You
// @match        https://appn7ewdtmz2955.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/video/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=xiaoe-tech.com
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    // 定义要匹配的字符串开头,在每次课程完成后,下一个可以学习的课程的图标会变化
    var searchString = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABadJREFUWEe1V12IVVUU/tY593adcqby';
    // learnig
    var searchString2 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABmlJREFUWEetV2tsHNUZPWdm12u7sUOzOzNOyA/M'

    // 获取当前时间和总时长的span元素
    let currentTimeSpan
    let totalTimeSpan// 获取currentTimeSpan后面的span元素

    // 设置检查进度的间隔(例如每秒检查一次)
    const checkInterval = 5000;
    let intervalId = null; // 用于存储setInterval的ID,以便稍后清除它

 
    // 检查当前时间是否等于总时长的函数
    function checkIfTimeEqualsTotal() {
        currentTimeSpan = document.querySelector('.xeplayer-time-Tips');
        totalTimeSpan = currentTimeSpan.nextElementSibling; // 获取currentTimeSpan后面的span元素

        const currentTimeStr = currentTimeSpan.textContent;
        const totalTimeStr = totalTimeSpan.textContent;


        if (currentTimeStr === totalTimeStr) {
            // 执行当播放完成时的操作
            console.log('播放完成,执行其他操作');
            // 在这里添加你的代码,比如弹出提示、跳转到下一个视频等
            clickNextVideo()
            // 清除检查进度的定时器
            clearInterval(intervalId);
            intervalId = null;
            setTimeout(() => window.close(), 5000)
        } else {
            console.log('当前学习中:', currentTimeStr + '/' + totalTimeStr )
        }
    }

    // 点击下一个待学习的视频
    function clickNextVideo() {
        // 查找所有的图片标签
        var images = document.getElementsByTagName('img');

        // 打印正在检查的图片数量
        console.log("正在检查是否有下一个准备学习的视频");

        // 循环遍历每个图片
        for (var i = 0; i < images.length; i++) {
            // 检查图片的src属性是否以指定的字符串开头
            if (images[i].src.startsWith(searchString) || images[i].src.startsWith(searchString2)) {
                console.log('检查到有准备学习的视频')
                // 模拟点击图片
                images[i].parentElement.parentElement.click()
                console.log("点击下一个视频");
                break; // 停止循环
            }
        }
    }

    // 延时开始
    setTimeout(async () => {
        // 获取video元素
        const videoElement = document.querySelector('video');

        // 设置video为静音
        videoElement.muted = true;

        // 开始播放video
        try {
            videoElement.play()
            console.log('视频开始播放');
        }catch(error ) {
            console.error('播放视频时出错:', error);
        };

        console.log('开始检查进度的定时器')

        // 开始检查进度的定时器
        intervalId = setInterval(checkIfTimeEqualsTotal, checkInterval);
    }, 10000)
})();