From c05fd567bc81c0ba27915ae89037ceb7925be964 Mon Sep 17 00:00:00 2001 From: jinglekang Date: Wed, 10 Jun 2026 15:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=84=9A=E6=9C=AC=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E8=87=B32026-06-10.2=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=8F=9C=E5=8D=95=E5=91=BD=E4=BB=A4=E6=B3=A8=E9=94=80?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=B3=A8=E5=86=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qingshuxuetang_auto_play.user.js | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/qingshuxuetang_auto_play.user.js b/qingshuxuetang_auto_play.user.js index 0113513..0044372 100644 --- a/qingshuxuetang_auto_play.user.js +++ b/qingshuxuetang_auto_play.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name 平顶山学院(青书学堂)自动学习脚本 // @namespace http://tampermonkey.net/ -// @version 2026-06-10.1 +// @version 2026-06-10.2 // @description 自动进入青书学堂未完成课件,支持视频播放、文本课件停留和运行状态提示 // @author JK // @license MIT @@ -14,6 +14,7 @@ // @grant GM_setValue // @grant GM_deleteValue // @grant GM_registerMenuCommand +// @grant GM_unregisterMenuCommand // ==/UserScript== (function () { @@ -70,6 +71,7 @@ "qingshu_auto_course_list_refresh_count:" + location.pathname + location.search; + let menuCommandIds = []; // 创建右下角提示消息容器和样式。 // 每次通知都会创建一个新的提示消息,所以多个通知会一起堆叠显示。 @@ -175,6 +177,7 @@ const saveConfig = (patch) => { Object.assign(CONFIG, patch); GM_setValue(CONFIG_STORAGE_KEY, CONFIG); + registerConfigMenus(); notify("设置已保存,刷新页面后生效", "success", 6000); }; @@ -203,10 +206,22 @@ // 在 Tampermonkey 菜单里提供配置入口。 // 这些值保存在脚本存储区,脚本更新不会覆盖它们。 const registerConfigMenus = () => { + menuCommandIds.forEach((id) => { + if (id) { + GM_unregisterMenuCommand(id); + } + }); + menuCommandIds = []; + const menuTitle = (label, value, unit) => label + "(当前:" + value + unit + ")"; - GM_registerMenuCommand( + const registerMenu = (title, callback) => { + const id = GM_registerMenuCommand(title, callback); + menuCommandIds.push(id); + }; + + registerMenu( menuTitle("设置视频倍速", CONFIG.videoPlaybackRate, "倍"), () => { promptNumberConfig( @@ -218,7 +233,7 @@ } ); - GM_registerMenuCommand( + registerMenu( menuTitle("设置课件最小学习时间", CONFIG.minStudySeconds / 60, "分钟"), () => { promptNumberConfig( @@ -231,7 +246,7 @@ } ); - GM_registerMenuCommand( + registerMenu( menuTitle("设置运行提醒间隔", CONFIG.heartbeatSeconds, "秒"), () => { promptNumberConfig( @@ -243,7 +258,7 @@ } ); - GM_registerMenuCommand( + registerMenu( menuTitle("设置课程列表等待时间", CONFIG.courseListWaitSeconds, "秒"), () => { promptNumberConfig( @@ -255,7 +270,7 @@ } ); - GM_registerMenuCommand( + registerMenu( menuTitle( "设置课程列表自动刷新次数", CONFIG.maxCourseListRefreshCount, @@ -272,7 +287,7 @@ } ); - GM_registerMenuCommand( + registerMenu( menuTitle("设置提示消息显示时间", CONFIG.toastDefaultDuration / 1000, "秒"), () => { promptNumberConfig( @@ -285,9 +300,10 @@ } ); - GM_registerMenuCommand("恢复默认设置", () => { + registerMenu("恢复默认设置", () => { GM_deleteValue(CONFIG_STORAGE_KEY); Object.assign(CONFIG, DEFAULT_CONFIG); + registerConfigMenus(); notify("设置已重置,刷新页面后生效", "success", 6000); }); };