临沂市专业技术人员继续教育刷课脚本分享
临沂市专业技术人员继续教育
# 脚本介绍
该油猴脚本用于 临沂市专业技术人员继续教育 的辅助看课,使用JavaScript编写,适配网址:https://sdly.treewises.com/
脚本功能如下:
- 自动播放视频
- 防止页面切换时暂停
- 自动播放下一课
- 视频静音播放
脚本安装地址:
暂时下架
如果不会安装脚本,请按照下面安装教程来操作。
# 代学服务
提示
如需代学,请联系客服,支持闲鱼交易。

微信联系:yizhituziang

QQ联系:2422270452
- img: /img/weixin.jpg
name: 微信联系:yizhituziang
- img: /img/qq.jpg
name: QQ联系:2422270452
# 安装教程
# 1.安装浏览器扩展插件
首先需要给我们的浏览器安装上脚本猫插件,这是运行所有用户脚本的基础,如果浏览器已经安装过了脚本猫或者油猴插件,那么可以跳过这一步。推荐使用edge浏览器,安装插件更方便。
浏览器打开网址:https://docs.scriptcat.org/ (opens new window)
这里用edge浏览器作为示范,点击 "添加到Edge浏览器"

接着点击 "获取"

在右上角弹出的窗口,点击 "添加扩展"

等待几秒钟,会提示已经安装好脚本猫插件了。

# 2.安装刷课脚本
打开脚本安装地址后,在页面点击 "安装脚本" 按钮,接着在弹出的窗口点击 "安装" ,之后就会提示"安装成功"。
# 3.体验脚本功能
安装脚本后,需要重新进入学习站点,如果之前已经打开课程学习页面,那么需要刷新页面后脚本才会生效。
# 核心代码
(function() {
'use strict';
const config = {
checkInterval: 2000,
nextCheckDelay: 3000,
debugMode: false
};
function log(msg) {
if (config.debugMode) {
console.log('[临沂继续教育脚本] ' + msg);
}
}
function handleVisibility() {
Object.defineProperty(document, 'hidden', {
get: function() { return false; },
configurable: true
});
Object.defineProperty(document, 'visibilityState', {
get: function() { return 'visible'; },
configurable: true
});
document.addEventListener('visibilitychange', function(e) {
e.stopImmediatePropagation();
e.preventDefault();
log('拦截了visibilitychange事件');
}, true);
window.onblur = null;
window.onfocus = null;
log('页面可见性处理完成');
}
function autoPlayVideo() {
const videos = document.querySelectorAll('video');
videos.forEach(function(video, index) {
if (video.paused) {
video.play().catch(function(err) {
log('视频播放失败: ' + err.message);
});
log('视频 ' + (index + 1) + ' 已自动播放');
}
if (!video.muted) {
video.muted = true;
log('视频已静音');
}
if (video.volume !== 0) {
video.volume = 0;
}
});
}
function checkVideoEnded() {
const videos = document.querySelectorAll('video');
videos.forEach(function(video) {
if (video.ended) {
log('当前视频播放完毕');
clickNextButton();
}
});
}
function clickNextButton() {
const selectors = [
'button:contains("下一课")',
'a:contains("下一课")',
'.next-btn',
'.next-lesson',
'#nextButton',
'[class*="next"]',
'[title*="下一课"]'
];
for (let i = 0; i < selectors.length; i++) {
try {
const elements = document.querySelectorAll(selectors[i].replace(':contains', '[data-text*='));
if (elements.length > 0) {
elements[0].click();
log('点击了下一课按钮');
return;
}
} catch (e) {
continue;
}
}
const allButtons = document.querySelectorAll('button, a');
allButtons.forEach(function(btn) {
if (btn.innerText && btn.innerText.indexOf('下一课') !== -1) {
btn.click();
log('通过文本匹配找到了下一课按钮');
}
});
}
function clickPlayButton() {
const playTexts = ['播放', '开始', '继续学习', '开始学习'];
const buttons = document.querySelectorAll('button, a, div[role="button"]');
buttons.forEach(function(btn) {
playTexts.forEach(function(text) {
if (btn.innerText && btn.innerText.indexOf(text) !== -1) {
btn.click();
log('点击了播放按钮: ' + text);
}
});
});
}
function init() {
log('脚本初始化开始');
handleVisibility();
setTimeout(function() {
autoPlayVideo();
clickPlayButton();
}, 1500);
setInterval(function() {
autoPlayVideo();
checkVideoEnded();
}, config.checkInterval);
log('脚本初始化完成');
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();