学起plus自动下一集-图文秒切

// ==UserScript==
// @name         学起plus自动下一集-图文秒切
// @namespace    https://cjlzulms.sccchina.net/
// @version      7.0
// @description  图文活动立即跳转,视频活动播放完自动下一集
// @author       Clefairy
// @match        https://cjlzulms.sccchina.net/venus/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(() => {
  'use strict';
  const log = (...a) => console.log('[AutoNext]', ...a);

  let done = false;               // 本活动只处理一次

  function main() {
    if (done) return;
    const curLi = document.querySelector('li.cur h3');
    if (!curLi) return;           // 目录还没渲染,稍后再试

    const isVideo = curLi.getAttribute('onclick')?.includes("beginStudy('1'");
    done = true;                  // 锁定,防止重复

    if (isVideo) {
      waitVideoEnded();
    } else {
      log('图文活动,2 秒后自动下一集');
      setTimeout(() => doNext(), 2000);
    }
  }

  /* ---------- 视频活动:等 ended ---------- */
  function waitVideoEnded() {
    const tik = setInterval(() => {
      const player = window.eduplayer?.getPlayer('video');
      if (!player || player.isDisposed?.()) return;

      clearInterval(tik);
      log('视频活动,等待播放结束');
      player.one('ended', () => {
        log('视频 ended,2 秒后下一集');
        setTimeout(() => doNext(), 2000);
      });
    }, 800);
  }

  /* ---------- 公共下一集 ---------- */
  function doNext() {
    if (typeof window.doNext === 'function') window.doNext();
    else document.querySelector('.frameBtn-course__next')?.click();
  }

  /* ---------- 启动 & 章节切换 ---------- */
  const timer = setInterval(main, 500);
  new MutationObserver(() => {
    done = false;
    setTimeout(main, 300);
  }).observe(document.body, { childList: true, subtree: true });
})();
posted @ 2025-09-14 21:48  Clefairy  阅读(163)  评论(0)    收藏  举报