// ==UserScript==
// @name 学习通平台全能增强助手
// @namespace http://tampermonkey.net/
// @version 2.5
// @description 支持学习通自动播放、倍速、跳过弹窗、自动下一节、悬浮控制面板
// @author 学习通增强助手
// @match *://*.chaoxing.com/*
// @match *://*.zhihuishu.com/*
// @match *://u.unipus.cn/*
// @match *://*.xueqi.cn/*
// @match *://*.qingshuxuetang.com/*
// @grant GM_addStyle
// @grant GM_notification
// @run-at document-start
// ==/UserScript==
(function () {
'use strict';
// 全局配置
const config = {
autoPlay: true, // 自动播放
autoNext: true, // 自动下一节
speed: 2.0, // 默认倍速
mute: false, // 是否静音
skipAlert: true, // 自动关闭弹窗
showPanel: true // 显示悬浮控制面板
};
// 注入悬浮面板样式
GM_addStyle(`
#enhance-panel {
position: fixed;
top: 20px;
right: 20px;
z-index: 999999;
width: 180px;
background: #fff;
border-radius: 10px;
box-shadow: 0 0 12px rgba(0,0,0,0.2);
padding: 12px;
font-size: 14px;
user-select: none;
}
#enhance-panel h4 {
margin: 0 0 8px 0;
font-size: 15px;
color: #333;
text-align: center;
}
.enhance-item {
margin: 6px 0;
display: flex;
justify-content: space-between;
}
.enhance-btn {
padding: 4px 8px;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 12px;
}
.enhance-btn:hover {
background: #337ecc;
}
`);
// 创建悬浮控制面板
function createPanel() {
if (!config.showPanel) return;
if (document.querySelector('#enhance-panel')) return;
const panel = document.createElement('div');
panel.id = 'enhance-panel';
panel.innerHTML = `
📘 学习增强助手
状态:
运行中 ✅
`;
document.body.appendChild(panel);
// 倍速切换
panel.querySelectorAll('button[speed]').forEach(btn => {
btn.addEventListener('click', () => {
const s = parseFloat(btn.getAttribute('speed'));
setSpeed(s);
GM_notification(`已切换至 ${s} 倍速`, '增强助手');
});
});
}
// 设置视频倍速
function setSpeed(speed) {
const videos = document.querySelectorAll('video');
videos.forEach(v => {
v.playbackRate = speed;
});
config.speed = speed;
}
// 自动播放
function autoPlayVideo() {
if (!config.autoPlay) return;
const videos = document.querySelectorAll('video');
videos.forEach(v => {
if (v.paused && !v.ended) {
v.play().catch(() => {});
}
v.muted = config.mute;
v.playbackRate = config.speed;
});
}
// 自动关闭弹窗
function skipPopups() {
if (!config.skipAlert) return;
const closeSelectors = [
'.popbtn_yes', '.btn-primary', '.btn-ok', '.btn-confirm',
'.close', '.modal-close', '.icon-close', '.btn-close',
'.warn_pop .btn', '.alert-wrap .ok', '.btn-primary-green'
];
closeSelectors.forEach(sel => {
document.querySelectorAll(sel).forEach(el => {
if (el.offsetParent !== null) el.click();
});
});
}
// 自动下一节
function autoNextLesson() {
if (!config.autoNext) return;
const nextSelectors = [
'.nextBtn', '.next', '.btn-next', '.jumpNext',
'.continue-button', '.next-video', '.next-unit',
'.play-next', '.n-next', '.toNext'
];
nextSelectors.forEach(sel => {
const btn = document.querySelector(sel);
if (btn && btn.offsetParent !== null) {
setTimeout(() => btn.click(), 800);
GM_notification('自动进入下一节', '增强助手');
}
});
}
// 自动完成任务点(学习通专用)
function autoFinishChaoxing() {
if (location.host.includes('chaoxing.com')) {
const job = document.querySelector('.ans-attach-job');
if (job) job.click();
}
}
// 主循环
function startEnhance() {
createPanel();
autoPlayVideo();
skipPopups();
autoFinishChaoxing();
// 视频结束后自动下一节
document.querySelectorAll('video').forEach(v => {
v.addEventListener('ended', () => {
setTimeout(autoNextLesson, 1000);
});
});
}
// 持续运行(防止页面动态加载)
window.addEventListener('load', () => {
setInterval(startEnhance, 1000);
console.log('✅ 学习平台增强助手已启动');
});
})();