// ==UserScript== // @name 广开网络教学平台/广东开放大学【10倍速度】自动刷视频(带控制面板) // @namespace 一心向善 // @version 2.0.0 // @description 广开/广东开放大学全自动播放视频+可视化控制面板,模拟观看行为 // @author 一心向善 // @match *://course.ougd.cn/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // ===================== 核心配置(面板可修改) ===================== let currentPlaybackRate = 10.0; // 默认倍速 const watchInterval = 30000; // 模拟观看间隔(毫秒) // ================================================================ // ===================== 悬浮控制面板(新增) ===================== let panel, rateInput, statusText; // 创建控制面板DOM + 样式 function createControlPanel() { // 面板CSS样式 const style = document.createElement('style'); style.textContent = ` #gk-video-panel { position: fixed; bottom: 20px; right: 20px; width: 280px; background: rgba(20, 20, 20, 0.95); color: #fff; border-radius: 10px; padding: 12px 15px; box-shadow: 0 0 15px rgba(0,0,0,0.3); z-index: 999999; font-family: "Microsoft YaHei", sans-serif; user-select: none; cursor: move; } #gk-video-panel .title { font-size: 16px; font-weight: bold; margin-bottom: 10px; text-align: center; color: #42b983; } #gk-video-panel .row { display: flex; gap: 5px; margin: 8px 0; align-items: center; } #gk-video-panel button { padding: 6px 8px; border: none; border-radius: 5px; background: #42b983; color: white; cursor: pointer; font-size: 12px; flex: 1; } #gk-video-panel button:hover { background: #359469; } #gk-video-panel input { width: 60px; padding: 6px; border-radius: 5px; border: none; text-align: center; font-size: 12px; } #gk-video-panel .status { font-size: 12px; color: #ccc; text-align: center; margin-top: 5px; } /* 普通提示文案样式 */ #gk-video-panel .tips { font-size: 11px; line-height: 1.6; margin-top: 8px; text-align: center; color: #eeeeee; } /* Q群高亮标亮样式 */ #gk-video-panel .q-group { background: #ffd700; color: #c00000; font-weight: bold; padding: 2px 4px; border-radius: 3px; margin: 4px 0; } `; document.head.appendChild(style); // 面板HTML panel = document.createElement('div'); panel.id = 'gk-video-panel'; panel.innerHTML = `
广开视频控制面板
状态:等待视频加载
本脚本仅适用于处理视频
Q群一:949193546 群二:756253160
个人或机构如需处理答题、考试等联系群主
`; document.body.appendChild(panel); // 获取面板元素 rateInput = document.getElementById('gk-rate-input'); statusText = document.getElementById('gk-status'); // 绑定面板事件 bindPanelEvents(); // 绑定拖拽功能 bindDragEvent(); } // 面板拖拽功能 function bindDragEvent() { let isDragging = false, offsetX, offsetY; panel.addEventListener('mousedown', (e) => { isDragging = true; offsetX = e.clientX - panel.getBoundingClientRect().left; offsetY = e.clientY - panel.getBoundingClientRect().top; }); document.addEventListener('mousemove', (e) => { if (!isDragging) return; panel.style.left = e.clientX - offsetX + 'px'; panel.style.top = e.clientY - offsetY + 'px'; panel.style.bottom = 'auto'; panel.style.right = 'auto'; }); document.addEventListener('mouseup', () => isDragging = false); } // 面板按钮/输入事件绑定 function bindPanelEvents() { // 快捷倍速按钮 document.querySelectorAll('[data-rate]').forEach(btn => { btn.addEventListener('click', () => { const rate = parseFloat(btn.dataset.rate); setVideoRate(rate); }); }); // 自定义倍速应用 document.getElementById('gk-apply').addEventListener('click', () => { const rate = parseFloat(rateInput.value); if (rate > 0) setVideoRate(rate); }); // 播放/暂停切换 document.getElementById('gk-play').addEventListener('click', () => { const video = document.querySelector('video'); if (!video) return; video.paused ? video.play() : video.pause(); }); } // 设置视频倍速(同步面板+视频) function setVideoRate(rate) { currentPlaybackRate = rate; rateInput.value = rate; const video = document.querySelector('video'); if (video) video.playbackRate = rate; updateStatus(`倍速:${rate}x`); } // 更新面板状态文本 function updateStatus(text) { if (statusText) statusText.textContent = `状态:${text}`; } // ================================================================ // ===================== 原脚本核心逻辑(无修改) ===================== // 主函数 function main() { // 先创建控制面板 createControlPanel(); // 检查视频页面 if (isVideoPage()) { console.log('检测到视频页面,开始自动播放...'); autoPlayVideo(); } else { console.log('这不是一个视频播放页面。'); updateStatus('非视频页面'); } } // 判断是否为视频播放页面 function isVideoPage() { return document.querySelector('video') !== null; } // 自动播放视频 function autoPlayVideo() { const video = document.querySelector('video'); if (!video) { updateStatus('未找到视频'); return; } // 应用当前倍速 video.playbackRate = currentPlaybackRate; updateStatus(`播放中 ${currentPlaybackRate}x`); // 自动播放 if (video.paused) { video.play().then(() => { console.log('视频开始播放...'); setupVideoListeners(video); }).catch(err => { console.error('自动播放失败:', err); updateStatus('自动播放失败'); }); } else { setupVideoListeners(video); } } // 设置视频事件监听器 function setupVideoListeners(video) { // 播放结束 video.addEventListener('ended', () => { console.log('视频播放结束...'); updateStatus('播放完成'); markVideoAsCompleted(); setTimeout(() => window.history.back(), 5000); }); // 播放中 video.addEventListener('play', () => { updateStatus(`播放中 ${currentPlaybackRate}x`); simulateWatchingBehavior(); }); // 暂停自动恢复 video.addEventListener('pause', () => { updateStatus('已暂停,5秒后恢复'); setTimeout(() => { if (video.paused) { video.play().catch(err => console.error('恢复播放失败:', err)); } }, 5000); }); // 实时同步倍速 video.addEventListener('ratechange', () => { currentPlaybackRate = video.playbackRate; rateInput.value = currentPlaybackRate; updateStatus(`播放中 ${currentPlaybackRate}x`); }); } // 模拟观看行为 function simulateWatchingBehavior() { console.log('模拟观看行为...'); } // 标记视频完成 function markVideoAsCompleted() { console.log('标记视频为已完成...'); } // ================================================================= // 启动脚本 main(); })();