// ==UserScript== // @name 人民教育出版社新教材培训 // @namespace free // @version 1.0 // @description 当前是免费版本,只包含了视频页面自动播放、解除播放暂停限制功能。如需自动下一集、自动换课程、秒过、全自动无人值守高级功能可升级付费版本|接各类脚本开发、代挂工作,微信:zhanyc_cn 个人网站:http://doc.zhanyc.cn // @include *://*pep.com.cn* // @include *://*.pep.com.cn/* // @include *://*.gensee.com/* // @run-at document-end // @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js // @antifeature payment // @license Creative Commons // ==/UserScript== (function () { let $ = unsafeWindow.jQuery || unsafeWindow.$ || window.jQuery || window.$; let docLink = "http://doc.zhanyc.cn/pages/cbsjcpx/"; // ========== 样式注入 ========== function injectStyle() { let styleEl = document.createElement("style"); styleEl.textContent = ` .freePanel{position:fixed;left:10px;top:10px;z-index:2147483647;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,0.3);padding:15px;min-width:320px;max-width:400px;color:#fff;font-family:microsoft yahei,sans-serif} .freePanel .fpTitle{font-size:16px;font-weight:bold;text-align:center;margin-bottom:10px;padding-bottom:8px;border-bottom:2px solid rgba(255,255,255,0.3)} .freePanel .fpStatus{background:rgba(255,255,255,0.2);border-radius:4px;padding:10px;margin:8px 0} .freePanel .fpProgress{font-size:20px;font-weight:bold;text-align:center;color:#ffd700;text-shadow:0 0 10px rgba(255,215,0,0.5)} .freePanel .fpPlayStatus{font-size:14px;margin-top:5px;text-align:center} .freePanel .fpPromo{background:rgba(255,255,255,0.1);border-radius:4px;padding:10px;margin-top:10px;font-size:12px;line-height:1.6} .freePanel .fpPromo b{color:#ffd700;font-size:14px} .freePanel .fpClose{position:absolute;top:5px;right:10px;background:none;border:none;color:#fff;font-size:24px;cursor:pointer;padding:0;line-height:1} .freePanel .fpClose:hover{color:#ff6b6b} `; document.head.appendChild(styleEl); } // ========== 视频工具 ========== let videoHelper = { getVideoEl() { return $("video")[0]; }, getCurTime() { try { return videoHelper.getVideoEl().currentTime || 0; } catch (e) { return 0; } }, getTotalTime() { try { return videoHelper.getVideoEl().duration || 0; } catch (e) { return 0; } }, formatTime(sec) { sec = Math.floor(sec); let h = Math.floor(sec / 3600); let m = Math.floor((sec % 3600) / 60); let s = sec % 60; return (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s); }, isVideoPlaying() { return new Promise((resolve) => { try { let t1 = videoHelper.getCurTime(); setTimeout(() => { let t2 = videoHelper.getCurTime(); resolve(t2 > t1); }, 300); } catch (e) { resolve(false); } }); }, tryPlayVideo() { let vid = videoHelper.getVideoEl(); if (vid) { vid.volume = 0; setTimeout(() => { vid.play().catch(() => {}); }, 200); } }, unlockPause() { let vid = videoHelper.getVideoEl(); if (!vid || vid._freeUnlocked) return; vid._freeUnlocked = true; vid.pause = function () {}; vid.addEventListener("pause", function () { if (!vid.ended) { setTimeout(() => { vid.play().catch(() => {}); }, 100); } }); }, }; // ========== 悬浮面板 ========== let panelCtrl = { panelTimerId: null, build() { let panelHtml = `