🏠 Home 

智慧树半自动刷课(动态标题和一次性通知)

根据 XPath 设置标签页标题和一次性通知


Install this script?
// ==UserScript==
// @name         智慧树半自动刷课(动态标题和一次性通知)
// @version      0.9.2
// @description  根据 XPath 设置标签页标题和一次性通知
// @match        *://hike.zhihuishu.com/aidedteaching/sourceLearning/*
// @grant        GM_notification
// @grant        unsafeWindow
// @license      MIT
// @namespace https://greasyfork.org/users/718156
// ==/UserScript==
(function () {
'use strict';
const $ = unsafeWindow.jQuery;
const emojiAlert = "❗"; // 彩色emoji 感叹号
let notified = false; // 标记是否已通知
// 延迟 2 秒后获取 XPath 路径中的标题内容
setTimeout(() => {
const titleNode = document.evaluate('//*[@id="sourceTit"]/span', document, null, XPathR###lt.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
const videoTitle = titleNode ? titleNode.textContent.trim() : "刷课视频";
// 设置标签页标题
document.title = videoTitle;
console.log("标签页标题设置为:", document.title);
// 初始化播放设置
$(".volumeIcon").click();           // 静音
$(".speedTab15").click();           // 1.5倍速播放
$(".bigPlayButton.pointer").click(); // 开始播放
$(".line1bq").click();              // 播放课程视频
// 定时检测播放状态
setInterval(() => {
const activeItem = $("div.file-item.active");
// 若 icon-finish 不存在时,打印 activeItem 内文本并追加到标签页标题
if (activeItem.find("i.icon-finish").length < 0) {
const activeText = activeItem.text().trim();
console.log("当前标签页内所有文本内容:", activeText);
// 更新标签页标题
document.title = `${videoTitle} - ${activeText}`;
}
// 检查视频是否完成
if (!notified && activeItem.find("i.icon-finish").length > 0) {
notified = true; // 设置为已通知
// 视频播放完毕时发送一次性通知
GM_notification({
title: videoTitle,
text: "视频播放结束,请手动切换到下一个视频",
timeout: 5000,
onclick: () => window.focus()  // 点击通知时聚焦当前标签页
});
// 修改标签页标题为已完成状态
document.title = `${emojiAlert}已刷完${emojiAlert} ${videoTitle}`;
}
// 若播放按钮显示为“可点击”,则点击继续播放
if ($(".bigPlayButton.pointer").css("display") === "block") {
$(".bigPlayButton.pointer").click();
}
}, 2000);
}, 2000);
})();