// ==UserScript== // @name 智慧树自动播放-TTaket // @version 1.5.3 // @description ❤❤仅用于学习使用 我爱你哦小朱 // @author TTaket // @match *://*.zhihuishu.com/* // @match *://*.zhihuishu.com/videoStudy* // @match *://*.zhihuishu.com/portals_h5* // @match *://*.zhihuishu.com/live* // @match *://*.zhihuishu.com/examh5* // @match *://*.zhihuishu.com/live/vod_room* // @match *://*.zhihuishu.com/stuExamWeb* // @run-at document-start // @license MIT // @namespace https://greasyfork.org/users/1362827 // @downloadURL none // ==/UserScript== (function() { 'use strict'; //同步阻塞 function pauseSync(minMs, maxMs) { console.log("pauseSync"); var delay = Math.floor(Math.random() * (maxMs - minMs + 1)) + minMs; var start = Date.now(); while (Date.now() - start < delay) { } } //获取随机值 function getRandomDelay(minMs, maxMs) { console.log("getRandomDelay"); return Math.floor(Math.random() * (maxMs - minMs + 1)) + minMs; } //关闭弹窗 - 有点不好用 function clickCloseButton() { var closeButton = document.querySelector('span.dialog-footer .btn'); if (closeButton) { console.log('发现关闭按钮,执行点击'); closeButton.click(); } } //选择svg - 有点不好用 function clickSvgIcon() { var svgIcons = document.querySelectorAll('svg.icon.topic-option'); if (svgIcons.length > 0) { console.log('发现 SVG 图标,点击第一个...'); svgIcons[0].dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, })) // 随机等待 1 到 5 秒 pauseSync(1000, 5000); console.log('等待结束,点击关闭按钮'); clickCloseButton(); // 点击关闭按钮 } } function processVideos() { // 随机等待 1 到 2 秒 pauseSync(1000,2000); console.log("processVideos"); for (var i = 0; i < document.getElementsByTagName('video').length; i++) { var current_video = document.getElementsByTagName('video')[i]; // 设置视频音量为 10% current_video.volume = 0.1; // 设置播放速度为正常速度(1.0 倍速) current_video.playbackRate = 1.0; // 如果视频播放完毕 if (current_video.ended) { console.log("视频播放完毕"); var chapterNodeList = document.querySelectorAll('span.catalogue_title'); var j = 0; for (; j < chapterNodeList.length; j++) { //console.log("working.. 1"); //if (j == 0) continue; var parentDiv = chapterNodeList[j].parentNode; // 检查 parentNode 是否合法 合法拥有b.fl.time_ico_half var iVaild = parentDiv.querySelector('b.fl.time_ico_half'); console.log(parentDiv , "Check iVaild : ", iVaild); if (!iVaild) { console.log('not vaild continue ', chapterNodeList[j].innerText); continue; } // 检查是否未完成的课程b.fl.time_icofinish var isFinish = parentDiv.querySelector('b.fl.time_icofinish'); console.log(parentDiv , "Check isFinish : ", isFinish); if (isFinish) { console.log('已完成视频,跳过', chapterNodeList[j].innerText); continue; } console.log('未完成视频,马上播放视频', chapterNodeList[j].innerText); break; } if (j < chapterNodeList.length) { console.log("未完成视频 : " , j , chapterNodeList[j]); //阻塞等待10 - 20s pauseSync(10000,20000); console.log('CLICK',chapterNodeList[j]); chapterNodeList[j].dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, })) } else { console.log('没有找到未完成的课程'); } } // 如果视频被暂停,重新播放 if (current_video.paused) { current_video.play(); } } } function startProcessing() { console.log("startProcessing"); setTimeout(function() { clickSvgIcon(); // 先处理 SVG 图标 processVideos(); // 处理自动播放 startProcessing(); // 递归调用以继续执行 }, getRandomDelay(1000, 3000)); // 随机时间间隔 1 到 3 秒 } startProcessing(); // 启动脚本 })();