超星学习通自动阅读脚本(每小时翻一页)

自动滚动并翻页,翻页速度每小时一次,适用于学习通。

// ==UserScript==
// @name         超星学习通自动阅读脚本(每小时翻一页)
// @namespace    Automator
// @version      1.1
// @description  自动滚动并翻页,翻页速度每小时一次,适用于学习通。
// @author       自动化脚本
// @match        *://*.chaoxing.com/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    // 用户配置
    const config = {
        scrollSpeed: 3000,    // 滚动间隔时间(毫秒)
        pageCheckInterval: 3600, // 翻页检测间隔(秒),设置为3600秒,即每小时翻一页
        scrollStep: 0.85,     // 每次滚动页面的高度百分比(0 - 1)
        maxRetries: 3,        // 最大重试次数
        debugMode: true       // 调试模式,打印日志
    };

    let state = {
        active: true,
        currentPage: 1,
        retryCount: 0
    };

    // 记录调试信息
    function log(message) {
        if (config.debugMode) {
            console.log(`[阅读助手] ${message}`);
        }
    }

    // 自动滚动页面
    function autoScroll() {
        const currentPosition = window.scrollY;
        const maxScroll = document.documentElement.scrollHeight - window.innerHeight;
        const step = window.innerHeight * config.scrollStep;

        if (currentPosition + step >= maxScroll) {
            window.scrollTo(0, maxScroll); // 到达页面底部
            log('已到达页面底部,准备翻页');
            return true;
        }

        window.scrollBy(0, step);
        return false;
    }

    // 检测并翻页
    async function checkNextPage() {
        try {
            const nextPageButton = document.querySelector('.nextBtn'); // 请根据具体页面的按钮选择器调整
            if (nextPageButton && nextPageButton.offsetParent !== null) {
                log('检测到翻页按钮,进行翻页');
                nextPageButton.click(); // 点击下一页按钮
                
                // 等待页面加载
                await new Promise(resolve => {
                    const observer = new MutationObserver(() => {
                        if (document.readyState === 'complete') {
                            observer.disconnect();
                            resolve();
                        }
                    });
                    observer.observe(document, { childList: true, subtree: true });
                    setTimeout(resolve, 3000); // 最多等待3秒
                });

                state.currentPage++;
                log(`翻页成功,当前页:${state.currentPage}`);
                state.retryCount = 0;
                return true;
            } else {
                log('未找到翻页按钮,可能已完成');
                return false;
            }
        } catch (error) {
            log(`翻页错误:${error}`);
            state.retryCount++;
            return false;
        }
    }

    // 启动自动化
    function startAutomation() {
        // 每隔一定时间滚动页面
        setInterval(() => {
            if (state.active) {
                const reachedBottom = autoScroll();
                if (reachedBottom) {
                    checkNextPage();
                }
            }
        }, config.scrollSpeed);

        // 每小时检查翻页
        setInterval(async () => {
            if (state.active) {
                const success = await checkNextPage();
                if (!success && state.retryCount >= config.maxRetries) {
                    log(`连续 ${config.maxRetries} 次翻页失败,暂停脚本`);
                    state.active = false; // 停止脚本
                }
            }
        }, config.pageCheckInterval * 1000); // 每小时翻一页
    }

    // 初始化
    log('脚本启动,开始自动化阅读');
    startAutomation();
})();

QingJ © 2025

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