Greasy Fork

Greasy Fork is available in English.

大数据再教育自动刷课

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

当前为 2024-04-12 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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)
})();