智慧树全自动刷课脚本

自动下一集、自动静音播放、防暂停、跨页面持久运行

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

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

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         智慧树全自动刷课脚本
// @namespace    http://tampermonkey.net/
// @version      3.1
// @description  自动下一集、自动静音播放、防暂停、跨页面持久运行
// @author       Gemini 3.0 Pro
// @match        *://*.zhihuishu.com/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    console.log(">>> 脚本已注入,开始监视...");

    // 设置定时器,每 2 秒运行一次主逻辑
    setInterval(function() {
        var video = document.querySelector('video');
        var allListItems = document.querySelectorAll('.file-item');

        // 如果找不到视频,可能是页面还没加载完,直接返回
        if (!video) return;

        // --- 模块1:暴力自动播放 (解决刷新后暂停问题) ---
        // 只要视频暂停且未结束,就强制静音并播放
        if (video.paused && !video.ended) {
            console.log("监测到暂停,尝试自动恢复...");
            video.muted = true; // 必须静音才能通过浏览器的自动播放策略

            var playPromise = video.play();
            if (playPromise !== undefined) {
                playPromise.catch(error => {
                    // 忽略加载中的报错
                });
            }
        }

        // --- 模块2:自动跳转 (解决播放完卡住问题) ---
        if (video.ended) {
            console.log(">>> 本集结束,寻找下一集...");

            for (var i = 0; i < allListItems.length; i++) {
                // 找到当前高亮的那一行
                if (allListItems[i].classList.contains('active')) {
                    // 检查是否存在下一行
                    if (i + 1 < allListItems.length) {
                        var nextItem = allListItems[i + 1];
                        console.log(">>> 即将跳转:" + nextItem.innerText);

                        // 点击跳转 (这会导致页面刷新,脚本会由油猴插件自动在新页面重新加载)
                        nextItem.click();
                    } else {
                        console.log(">>> 已是最后一集,任务完成。");
                    }
                    break;
                }
            }
        }
    }, 2000);

})();