江苏省高校教师岗前培训-自动播放

自动播放、5倍速、播完自动切换下一个视频

// ==UserScript==
// @name         江苏省高校教师岗前培训-自动播放
// @namespace    http://your-namespace-here.com/
// @version      0.2
// @description  自动播放、5倍速、播完自动切换下一个视频
// @author       cdf5 (modified by Gemini)
// @match        http://jsgs.study.gspxonline.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    var videoList = []; // 用来保存课程视频列表项

    // 初始化获取所有未完成的课程项
    // [BugFix 1] 修改了类名选择器,根据 txt 文件,未完成的 class 为 'round' 。保留 'half' 以防万一。
    const initializeVideoList = function() {
        videoList = Array.from(document.querySelectorAll('li .learn-status'))
                         .filter(item => item.classList.contains('round') || item.classList.contains('half')) // 只选择未完成(round)或者学习中(half)的课程
                         .map(item => item.closest('li')); // 获取课程列表项

        console.log('未完成课程列表:', videoList.length, '项未完成课程');
    };

    // 播放当前课程视频
    const playVideo = function() {
        // 查找当前视频元素
        const video = document.querySelector('video');
        if (!video) {
            console.log('未找到视频元素,2秒后重试...');
            setTimeout(playVideo, 2000); // 重试
            return;
        }

        // 设置倍速播放
        // 确保视频元数据已加载,可以设置播放速率
        const setPlayback = () => {
            if (video.readyState >= 1) {
                video.playbackRate = 5;
                video.play();
                console.log('视频已开始播放,设置为5倍速');
            } else {
                video.addEventListener('loadedmetadata', setPlayback); // 等待元数据加载
            }
        };
        
        setPlayback();
        video.play(); // 尝试立即播放

        // [BugFix 2] 改进切换逻辑
        video.addEventListener('ended', () => {
            console.log('当前视频播放完毕,准备切换到下一个视频');
            
            // 重新获取最新的课程列表
            initializeVideoList();
            
            // 查找当前激活的课程 li 元素 (根据 txt 文件 )
            const activeLi = document.querySelector('li.active');
            if (!activeLi) {
                console.log('未找到当前激活的课程,停止播放。');
                return;
            }

            // 在未完成列表中找到当前课程的索引
            const currentIndex = videoList.findIndex(li => li.id === activeLi.id);

            if (currentIndex === -1) {
                console.log('当前课程不在未完成列表中,可能已完成或列表已更新。');
                // 尝试点击列表中的第一个未完成项
                if (videoList.length > 0) {
                    videoList[0].click();
                    setTimeout(playVideo, 3000);
                }
                return;
            }
            
            const nextVideoIndex = currentIndex + 1;

            // 检查是否还有未播放的下一个视频
            if (nextVideoIndex < videoList.length) {
                const nextVideo = videoList[nextVideoIndex];
                if (nextVideo) {
                    console.log('切换到下一个视频:', nextVideo.title);
                    nextVideo.click(); // 模拟点击下一个课程

                    // 给页面一些时间加载下一个视频
                    setTimeout(playVideo, 3000); // 3秒后播放新视频
                }
            } else {
                console.log('所有视频播放完毕');
            }
        });
    };

    // 初始化课程列表并开始播放
    setTimeout(() => {
        initializeVideoList(); // 首次加载列表
        playVideo(); // 开始播放当前页面的视频
    }, 3000); // 页面加载后3秒开始播放

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址