// ==UserScript== // @name 万能视频倍速自动播放切换 华医 医博士 好医生 医教管理 双卫网 岐黄天使 青书学堂 国家开放大学 学习通 融学 专业技术继续教育平台 公需课 专项培训 住院规培 三基培训 中医培训 基层培训 // @namespace https://jiaobenmiao.com/ // @version 1.1 // @description 全局视频倍速、自动播放、自动下一集、循环播放 华医 医博士 好医生 医教管理 双卫网 岐黄天使 青书学堂 国家开放大学 学习通 融学 专业技术继续教育平台 公需课 专项培训 住院规培 三基培训 中医培训 基层培训 // @author 蓝色魔宙 // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; // 配置区自行修改 const config = { defaultSpeed: 2, // 默认倍速 autoPlay: true, // 自动播放 autoNext: true, // 视频结束自动下一集 loop: false, // 单视频循环 checkInterval: 1000, // 检测间隔毫秒 nearEndSec: 3 // 还差多少秒结束就切下一集 }; let video = null; let controlPanel = null; // 查找video function getVideo() { return document.querySelector('video'); } // 设置倍速 function setSpeed(num) { if (!video) return; num = Math.max(0.25, Math.min(16, num)); video.playbackRate = num; document.getElementById('sp_input').value = num; } // 创建悬浮控制面板 function createPanel() { if (controlPanel) return; const div = document.createElement('div'); controlPanel = div; div.style = ` position:fixed;top:120px;right:10px;z-index:999999; background:rgba(0,0,0,0.8);color:#fff;padding:10px;border-radius:8px; font-size:14px;min-width:160px; `; div.innerHTML = `
视频控制器
倍速:
刷新页面关闭面板
`; document.body.appendChild(div); // 绑定按钮事件 document.getElementById('sp_btn').onclick = ()=>{ const val = parseFloat(document.getElementById('sp_input').value); setSpeed(val); }; div.querySelectorAll('button[data-s]').forEach(btn=>{ btn.onclick = ()=> setSpeed(parseFloat(btn.dataset.s)); }); } // 自动下一集按钮选择器,覆盖多数平台 const nextBtns = [ '[title*="下一集"]','[title*="下一个"]','.next','.next-btn','.btn-next','#next', '.video-next','.jump-next','.control-next','a[href*="play"]:not([href*="comment"])' ]; function tryClickNext(){ for(let sel of nextBtns){ const btn = document.querySelector(sel); if(btn && btn.offsetParent){ btn.click(); setTimeout(initVideo,1200); break; } } } function initVideo(){ video = getVideo(); if(!video) return; // 基础设置 video.playbackRate = config.defaultSpeed; video.loop = config.loop; if(config.autoPlay){ video.play().catch(e=>{}); } // 结束监听 video.onended = function(){ if(config.autoNext) tryClickNext(); if(config.loop) video.play(); }; } // 定时检测视频状态 setInterval(()=>{ if(!getVideo()) return; if(!controlPanel) createPanel(); initVideo(); // 快结束预判切集 const v = getVideo(); if(v && v.duration && v.currentTime > v.duration - config.nearEndSec){ tryClickNext(); } }, config.checkInterval); // 页面加载完成初始化面板 window.addEventListener('load',()=>{ setTimeout(createPanel,800); }); })();