教师在线研修个人用

  登录,打开学习页面,将自动学习

当前为 2025-11-17 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name       教师在线研修个人用
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description    登录,打开学习页面,将自动学习
// @author       longlong
// @match        https://zy.jsyx.sdedu.net/*
// @icon         https://zy.jsyx.sdedu.net/
// @grant        none
 
// @license      
// ==/UserScript==
 
(function() {
    'use strict';
 
    setTimeout(function() {
        if (typeof window.interval !== 'undefined') {
            window.interval = 9; 
            console.log('油猴脚本:已将视频更新间隔强制设置为 ' + window.interval + ' 秒。');
        } else {
            console.warn('油猴脚本:未能找到全局变量 interval,可能无法修改更新频率。');
        }
    }, 1000); // 延迟 1 秒执行,确保页面原始脚本已运行
    // =======================================================
 
    /**
     * 检查学习进度并自动跳转到下一章节
     */
    function play(){
if (typeof window.player !== 'undefined' && typeof window.player.videoPlay === 'function') {
            // 注意:ckplayer 没有统一的 isPaused 方法,但可以直接调用 videoPlay() 
            // 它是幂等的(如果已播放,调用 videoPlay() 不会造成问题)。
            // 或者尝试使用 getStatus() 来检查状态。这里采用最直接的 videoPlay()。
            
            // 假设我们只有在播放器明确处于暂停状态时才调用 videoPlay()
            // 常见的 ckplayer 状态检查方法是 player.getState(),返回 'play' 或 'pause'
            // 如果 player.getState() 找不到,我们直接调用 videoPlay(),确保播放。
            
            let isPaused = false;
            if (typeof window.player.getState === 'function') {
                isPaused = (window.player.getState() !== 'play');
            } else {
                // 如果无法获取准确状态,就保守地检查视频元素是否被暂停类名标记
                // 此处没有通用的 DOM 标记,所以最可靠的方法还是依赖 player.videoPlay() 
                // 确保它被触发。
            }

            // 无论是暂停还是未开始播放,都尝试调用 videoPlay() 确保视频继续
            window.player.videoPlay(); 
        }
        // 检查第一个提示文本:是否包含 "您已完成观看"
        var promptText = $(".g-study-prompt p ")[0]?.innerText || "";
        
        if(promptText.indexOf("您已完成观看") >= 0){
            // 如果已完成,点击下一章节的链接 (假设 a[1] 是下一章)
            $("#studySelectAct a")[1]?.click(); 
            console.log("学习完成提示出现,已自动跳转到下一章节。");
            return;
        }
 
        // 检查计时器进度:已观看时间 (timer1) 是否大于等于 要求观看时间 (timer2)
        var timer1Element = $(".g-study-prompt p span")[0];
        var timer2Element = $(".g-study-prompt p span")[1];
        
        if (timer1Element && timer2Element) {
            var timer1 = timer1Element.innerText; // 已观看时间(分钟)
            var timer2 = timer2Element.innerText; // 要求观看时间(分钟)
            
            // 比较分钟数:如果已观看时间 >= 要求时间,则点击下一章节
            if (parseInt(timer1) <= parseInt(timer2)){
                $("#studySelectAct a")[1]?.click();
                console.log(`进度检查通过 (${timer1} >= ${timer2}),已自动跳转到下一章节。`);
            }
        }
        
    }
    
    // =======================================================
    // 2. 增加定时器:每 2000 毫秒(2 秒)运行一次 play()
    // 使用 setInterval 来周期性地执行 play 函数
    const playTimer = setInterval(play, 2000);
    console.log("油猴脚本:每 2 秒运行一次 play() 函数的定时器已启动。");
    // =======================================================
 
})();