ZJOOC自动播放下一课,详细使用需求见附加信息或readme.md
// ==UserScript== // @name ZJOOC自动播放 // @namespace https://github.com/ColdThunder11/ZJOOCAutoPlay // @version 0.3 // @description ZJOOC自动播放下一课,详细使用需求见附加信息或readme.md // @author ColdThunder11,00LT00,liudanT800 // @match *://www.zjooc.cn/ucenter/student/course/study/*/plan/detail/* // @grant none // @supportURL https://github.com/ColdThunder11/ZJOOCAutoPlay/issues // ==/UserScript== (function() { 'use strict'; var startTime = 25000; // 脚本开始时间(毫秒) var playInterval = 10000; // 检查间隔时间(毫秒) var speedIndex = 0; // 播放速度 var muteFlag = true; // 是否静音 // 获取所有 role="tab" 的元素,并排除不需要的 tab var getTabs = function() { var allTabs = document.querySelectorAll('[role="tab"]'); var filteredTabs = []; allTabs.forEach(function(tab, index) { // 排除前两个 tab if (index >= 2) { filteredTabs.push(tab); } }); return filteredTabs; }; // 跳转到下一个 tab var nextTabFunc = function() { var tabs = getTabs(); var currentTab = Array.from(tabs).find(tab => tab.getAttribute('aria-selected') === 'true'); var currentIndex = tabs.indexOf(currentTab); var nextTab = tabs[currentIndex + 1]; if (nextTab) { nextTab.click(); // 点击下一个 tab // 重新获取所有的 tab 并等待 DOM 更新 setTimeout(() => { playVideoFunc(); // 播放当前 tab 的内容 }, 1000); // 延迟1秒等待DOM更新 } else { // 所有 tab 都已跳转完毕,跳转到下一个课程 nextVideoFunc(); } }; // 跳转到下一个课程 var nextVideoFunc = function() { var currentClass = document.getElementsByClassName("el-menu-item is-active")[1]; var nextClass = currentClass.nextSibling; if (nextClass == null) { currentClass.parentNode.parentNode.nextSibling.childNodes[0].click(); nextClass = currentClass.parentNode.parentNode.nextSibling.childNodes[1].childNodes[1]; } if (nextClass == null) { alert("所有课程已经学习完毕。"); } else { nextClass.click(); playVideoFunc(); } }; var playVideoFunc=function(){ var vidf=document.getElementsByTagName("video")[0]; var spd = vidf.parentElement.children[8]; var cbf=vidf.parentNode.childNodes[2]; var playLayerf=cbf.childNodes[0]; /*速度*/ spd.children[speedIndex].click(); /*音量*/ if(muteFlag){ cbf.children[18].click(); } window.setTimeout(function(){ var vidf=document.getElementsByTagName("video")[0]; var spd = vidf.parentElement.children[8]; var cbf=vidf.parentNode.childNodes[2]; var playLayerf=cbf.childNodes[0]; /*速度*/ spd.children[speedIndex].click(); /*音量*/ if(muteFlag){ cbf.children[18].click(); } playLayerf.click(); },playInterval); }; // 检查当前 tab 的内容是否完成 var detectiveFunc = function() { var vid = document.getElementsByTagName("video")[0]; if (vid) { var cb = vid.parentNode.childNodes[2]; var processBar = cb.childNodes[7]; var processText = processBar.innerText; var pctime = processText.split('/'); var ctime = pctime[0].trim(); var etime = pctime[1].trim(); if (ctime == etime) { // 当前视频播放完毕,跳转到下一个 tab console.log("当前视频播放完毕,跳转到下一个 tab") nextTabFunc(); } } }; // 主函数 var ScritpFunc = function() { playVideoFunc(); window.setInterval(detectiveFunc, playInterval); }; window.setTimeout(ScritpFunc, startTime); })();