// ==UserScript== // @name 【💯💯💯2024】网络教育、专业技术、继续教育等视频学习伴侣 // @namespace http://tampermonkey.net/ // @version 6.6.0 // @description 后台继续播放📺高倍数🤖自动挂机无人值守🔥继续教育🎗️远程教育,🚩专业技术人员,安徽专技网,建投学堂、雨课堂、温州继续教育网、❇山东青年政治学院,🛎河南教师培训网,宁夏专业技术人员,黑龙江省网络助学平台,青岛市,🌈浙里学习、🐱‍🚀云课程、山东干部网络学院,河北教师教育网、隆泰达培训、🎊东营市继续教育网专业科目培训平台、百年树人、会计人员继续教育🥇深i学、济宁市高级职业学校、基础教育进修网、高等学历继续教育网络学习平台、🐱‍🚀河南专技在线、青岛大学、和学在线、湖南农民大学生⏩全国煤炭行业现代❤️浙江文化干部🤖新营造MOOC❤️贵州省建设行业职业技能管理中心、广州市干部培训❤️长春工业大学🎉西安工业大学168网校🥇在线壹佰分🎉一点通🎉上海开放大学🔉专业技术人员继续教育网📺卫生健康人才职业技能培养学习平台✅株洲教师教育1️⃣安徽专业技术人员🔥广东省教师继续教育信息管理平台🎗️河北干部网络学院↗️西安工业大学🔛江西科技学院、河南华夏基础😉九江学院继续教育学院成教平台🎉国家开放大,🧠学青书学堂、云南省执业药师、马鞍山市专业技术人员、湖南师范大学 // @author // @match *://*/* // @grant GM_xmlhttpRequest // @grant GM_openInTab // @grant GM_setValue // @grant GM_getValue // @grant window.close // @antifeature payment // @noframes // @icon https://www.zhihuishu.com/favicon.ico // @connect www.gaozhiwang.top // @connect localhost // @antifeature payment 学习辅助付费 // @license MIT // @downloadURL none // ==/UserScript== "use strict"; var __awaiter = this && this.__awaiter || function (e, a, s, r) { return new (s = s || Promise)(function (n, t) { function i(e) { try { l(r.next(e)) } catch (e) { t(e) } } function o(e) { try { l(r.throw(e)) } catch (e) { t(e) } } function l(e) { var t; e.done ? n(e.value) : ((t = e.value) instanceof s ? t : new s(function (e) { e(t) })).then(i, o) } l((r = r.apply(e, a || [])).next()) }) }; !function () { let bserUrl = ""; const panelcss = ` .myTool{ background: #fff; width: 387px; font-size: 14px; display: flex; flex-direction: column; align-items: center; position: fixed; z-index: 9999; top: 70px; left: 44px; box-sizing: border-box; padding: 12px 0px; border-radius: 5px; box-shadow: 0 0 9px rgba(0,0,0,.5); } .controls{ position: absolute; right: 12px; font-size: 27px; top: 9px; cursor: pointer; transition: all 0.4s; } .controls:hover{ color: #1f74c; transform: rotate(360deg); } .myTool-content{ width: 94%; transition: all 0.4s; overflow: hidden; } .mytoolkeyipt{ width: 130px; height: 22px !important; outline: none; padding: 0px 3px; border: 1px solid #757575FF; border-radius: 3px; font-size: 13px; padding: 0px 3px; margin-right: 5px; margin-top: 2px; } .addkey-btn{ color: #fff; background: #1f74ca; } .removkey-btn{ color: #000; display: none; background: #eee; } .handleKeyBtn{ width: 54px; height: 24px; margin-top: 2px; border: none; font-size: 12px; border-radius: 2px; cursor: pointer; } .handleSpeedUp{ background: orange; font-size: 12px; color: #fff; padding: 4px 15px; border-radius: 5px; margin: 0 auto; max-width: 80px; margin-top: 10px; cursor: pointer; text-align: center; } .ctxTipWrap{ min-width: 350px; min-height: 150px; text-align: center; line-height: 150px; background: #fff; position: fixed; z-index: 999; left: 50%; top: 50%; border-radius: 15px; box-shadow: 0 0 5px rgba(0,0,0,.6); display:none; } .cxtsection{ width: 100%; box-sizing: border-box; padding: 0 5px; margin-bottom: 2px; } .cxtsection .ctx-title{ text-align: left; margin-top: 12px; font-size: 12px; color: #4e5969; border-left: 2px solid #1f74ca; border-radius: 2px; padding-left: 3px; line-height: 16px; } .ctxsection2{ display: flex; justify-content: space-between; } .ctxsection2 .speed-select{ width: 50%; height: 18px !important; outline: none; position: relative; top: 10px; border: 1px solid #757575FF; border-radius: 3px; padding: 0; padding-left: 10px; } .ctxsection3{ display: flex; align-items: center; justify-content: space-between; } .feedbackBtn{ font-size: 13px; position: relative; top: 5px; cursor: pointer; color: #000; } a{ text-decoration: none; } .myTool-pannel_wrap{ border: 1px solid #a99e9e; height: 100px; background: rgb(190 203 206); border-radius: 6px; margin-top: 6px; color: #000; padding: 2px; box-sizing: border-box; } `; class GMTool { constructor() { } getValue(e) { return GM_getValue(e, null) } setValue(e, t) { GM_setValue(e, t) } openInTab(e) { GM_openInTab(e, {active: !0}) } } const MyTool = new GMTool; let ElementObj = {}, Internetcourse = { das01: { id: 1, name: "\u56db\u5ddd\u519c\u4e1a", mainClass: "CTXCommon", host: ["player.cnzx.info", "cj.cnzx.info"], option: { nodeListClass: ".nb-lession-item", activeClass: "nb-current-lession-item", _init(l) { return new Promise(e => { let o = setInterval(() => __awaiter(this, void 0, void 0, function* () { if (ElementObj.$parentNodes = document.querySelectorAll(".chapter"), ElementObj.$parentNodes.length) { clearInterval(o); for (var e of ElementObj.$parentNodes) e.classList.contains("ant-menu-submenu-open") || (e.click(), yield sleep(300)); ElementObj.$allTask = document.querySelectorAll(".section"); for (let e = 0; e < ElementObj.$allTask.length; e++) { var t = ElementObj.$allTask[e]; if ("\u5df2\u5b8c\u6210" !== t.querySelector(".u-clicon").title) { l.currentIndex = e, setTimeout(() => { l.handleClickSpeedUp() }, 3e3), t.classList.contains("section-cur") || t.click(); break } } } else { var n = document.querySelector("body"); if (n && "/Student/Interface/ChaKanKeJian.aspx" == location.pathname) { clearInterval(o), yield l.changeHtml(n), l.addInfo("\u521d\u59cb\u5316\u5b8c\u6210,\u5373\u5c06\u5f00\u59cb\u540e\u53f0\u64ad\u653e"); for (var i of new Array(1e4)) l.addInfo("🔊🔊\u6b63\u5728\u540e\u53f0\u64ad\u653e, \u5b66\u4e60\u5e73\u53f05\u5206\u949f\u4fdd\u5b58\u4e00\u6b21\u8fdb\u5ea6,\u8bf7\u52ff\u9891\u7e41\u5237\u65b0"), i % 100 == 0 && (i = yield new Promise(l => { fetch("https://cj.cnzx.info/Student/KaoHe/XingChengXingKaoHeChengJi.aspx", { headers: { accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-language": "zh-CN,zh;q=0.9", "cache-control": "max-age=0", "sec-ch-ua": '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "document", "sec-fetch-mode": "navigate", "sec-fetch-site": "same-origin", "sec-fetch-user": "?1", "upgrade-insecure-requests": "1" }, referrer: "https://cj.cnzx.info/Student/Default.aspx", referrerPolicy: "strict-origin-when-cross-origin", body: null, method: "GET", mode: "cors", credentials: "include" }).then(e => e.text()).then(e => { var t = document.createElement("div"); t.innerHTML = e; var n, i = t.querySelectorAll(".tableListGroup")[1].querySelectorAll("tr"); let o = ""; for (let e = 0; e < i.length; e++) 0 !== e && ((n = { name: "", t1: "0", t2: "0" }).name = i[e].querySelectorAll(".contentWhite")[0].innerText, n.t1 = i[e].querySelectorAll(".contentWhite")[1].innerText, n.t2 = i[e].querySelectorAll(".contentWhite")[2].innerText, o += `🔹${n.name}:【${n.t1}, ${n.t2}】
`); l(o) }) }), l.addInfo(i)), yield sleep(3e3) } } }), 500) }) } } } }, speedArr = [1, 2, 3, 5, 10, 16], toolOption = {accelerator: 1, CtxMain: null, SchoolType: -1}; class Main { constructor() { this.studentType = 1, this.speedStatus = 0, this.isAdaptive = 1, this.listenVidoeStatusTimer = null, this.init() } init() { } updateSpeedElement(e) { 0 != this.speedStatus && (ElementObj.$video.playbackRate = e) } handleClickSpeedUp(e, t = 0) { return __awaiter(this, void 0, void 0, function* () { this.speedStatus = 1, this.isAdaptive = 1, toolOption.CtxMain.play() }) } handleChangeCtxSpeed(e) { var t = speedArr, n = Number(e); e && t.includes(n) && (toolOption.accelerator = n, localStorage.setItem("_localSpeed", n.toString()), ElementObj.$video) && (ElementObj.$video.playbackRate = n) } colletionSchoolData() { return __awaiter(this, void 0, void 0, function* () { }) } listenVidoeStatus(t, n) { if (t) { let e = 0; this.listenVidoeStatusTimer = setInterval(() => { t.readyState < 4 && 20 <= (e += 1) && location.reload(), t.paused && (e += 1, "function" == typeof n) && (20 <= e ? location.reload() : n()) }, 5e3) } } changeHtml(t) { return __awaiter(this, void 0, void 0, function* () { var e; ElementObj.$ctxstatsbox = document.querySelector(".ctxstatsbox"), ElementObj.$ctxstatsbox || ((e = document.createElement("div")).setAttribute("class", "ctxstatsbox"), e.setAttribute("style", ` width: 100%; height: 100%; background: #eae9e9; position: absolute; z-index: 999; overflow: scroll; top: 0; padding-left: 10px; `), t.appendChild(e), yield sleep(300), ElementObj.$ctxstatsbox = document.querySelector(".ctxstatsbox")), this.addInfo("🔉\u521d\u59cb\u5316\u5df2\u5b8c\u6210,\u6b63\u5728\u64ad\u653e") }) } addInfo(e, t) { 15 <= document.querySelectorAll(".ctxstatsbox_li").length && (ElementObj.$ctxstatsbox.innerHTML = ""); t = `
  • ${e}
  • `; ElementObj.$ctxstatsbox.innerHTML += t } listenPageHide() { let t; document.addEventListener("visibilitychange", () => { if (document.hidden) { let e = 0; t = setInterval(() => { 5 <= (e += 1) && this.addInfo("⚠️⚠️⚠️\u8bf7\u52ff\u957f\u65f6\u95f4\u9690\u85cf\u8be5\u5b66\u4e60\u9875\u9762", 0) }, 5e3) } else clearInterval(t) }) } pdPlayFn(e) { var t = MyTool.getValue("spanClassName") || []; -1 != t.indexOf(e) ? toolOption.CtxMain.play() : (t.push(e), MyTool.setValue("spanClassName", t), this.handleClickSpeedUp()) } getVideoDom() { return new Promise(e => { let t = 0, n = setInterval(() => { t += 1, ElementObj.$video = document.querySelectorAll("video")[0], ElementObj.$video ? (clearInterval(n), e(1)) : 7 <= t && (clearInterval(n), e(2)) }, 1e3) }) } } let times = 1714117290426; if (!(270 < ((new Date).getTime() - times) / 1e3 / 60 / 60 / 24)) { class CTXCommon extends Main { constructor(e) { super(), this.taskLength = 0, this.parentIndex = -1, this.currentIndex = -1, this.nodeListClass = e.nodeListClass, this.activeClass = e.activeClass || "", this.nextClass = e.nextClass || "", this.openListenPlayStatus = "boolean" != typeof e.openListenPlayStatus || e.openListenPlayStatus, this.openListenPlayTime = "boolean" == typeof e.openListenPlayTime && e.openListenPlayTime, this.afterPlayEnd = e.afterPlayEnd, this.getCurrentIndexByOption = e.getCurrentIndexByOption, this.playNext = e.playNext || this.playNext, this.listenRebortFn = e.listenRebortFn, this.getVideoDom = "function" == typeof e.videoEle ? e.videoEle : this.getVideoDom, this.playFn = e.playFn, e._init ? e._init(this) : this._init() } _init() { return __awaiter(this, void 0, void 0, function* () { let e = setInterval(() => __awaiter(this, void 0, void 0, function* () { try { ElementObj.$allTask = document.querySelectorAll(this.nodeListClass), ElementObj.$allTask.length && (ElementObj.$handleSpeedUp.style.display = "none", clearInterval(e), this.getCurrentIndex()) } catch (e) { } }), 1e3) }) } getCurrentIndex() { return __awaiter(this, void 0, void 0, function* () { if (this.getCurrentIndexByOption) this.currentIndex = yield this.getCurrentIndexByOption(); else for (var e = 0; e <= ElementObj.$allTask.length - 1; e++) if (ElementObj.$allTask[e].classList.contains(this.activeClass)) { this.currentIndex = e; break } -1 != this.currentIndex && (showTip("✅✅✅\u521d\u59cb\u5316\u5b8c\u6210,5\u79d2\u540e\u5f00\u59cb\u64ad\u653e", 3e3), setTimeout(() => { this.handleClickSpeedUp() }, 4e3)) }) } getCurrentIndex2() { return __awaiter(this, void 0, void 0, function* () { ElementObj.$allTask = document.querySelectorAll(".cd-inline-block.two-right li a"); let t = MyTool.getValue("historyData") || null; var e, n = document.querySelector(".two-active a").innerText; t && (e = ElementObj.$allTask.values().find(e => { if (-1 == t.indexOf(e.innerText)) return e })) && n != e.innerText ? e.click() : this.play() }) } getVideoDom() { return new Promise(e => { let t = 0, n = setInterval(() => { t += 1, ElementObj.$video = document.querySelectorAll("video")[0], ElementObj.$video ? (clearInterval(n), e(1)) : 7 <= t && (clearInterval(n), e(2)) }, 1e3) }) } play() { return __awaiter(this, void 0, void 0, function* () { clearInterval(this.timer), clearInterval(this.listenVidoeStatusTimer), clearInterval(this.listenRebortTime); var e = yield this.getVideoDom(); this.playFn ? this.playFn(this) : (1 == e && (yield sleep(2e3), ElementObj.$video.volume = 0, ElementObj.$video.play(), this.openListenPlayStatus && this.listenVidoeStatus(ElementObj.$video, () => { ElementObj.$video.volume = 0, ElementObj.$video.play() }), this.openListenPlayTime && (yield this.changeHtml(ElementObj.$video.parentElement), this.listenPlayTime()), this.listenRebort(), ElementObj.$video.addEventListener("ended", () => __awaiter(this, void 0, void 0, function* () { showTip("✅✅✅\u5f53\u524d\u89c6\u9891\u5df2\u64ad\u653e\u5b8c,5\u79d2\u540e\u64ad\u653e\u4e0b\u4e00\u4e2a", 4500), this.playNext(this) })), ElementObj.$video.addEventListener("pause", () => { setTimeout(() => { ElementObj.$video.volume = 0, ElementObj.$video.play() }, 1500) })), 2 == e && (showTip("✅✅✅\u8be5\u7ae0\u8282\u4e3a\u6587\u6863,\u5373\u5c06\u81ea\u52a8\u5207\u6362\u4e0b\u4e00\u4e2a", 3e3), yield sleep(3e3), this.playNext())) }) } listenRebort() { this.listenRebortTime = setInterval(() => { this.listenRebortFn && "function" == typeof this.listenRebortFn && this.listenRebortFn() }, 1e3) } playNext() { return __awaiter(this, void 0, void 0, function* () { if (!(this.currentIndex >= ElementObj.$allTask.length - 1)) { yield sleep(2500), this.currentIndex += 1; let e = ElementObj.$allTask[this.currentIndex]; null !== (e = this.nextClass ? ElementObj.$allTask[this.currentIndex].querySelector(this.nextClass) : e) && void 0 !== e && e.click(), this.afterPlayEnd && (yield this.afterPlayEnd()), setTimeout(() => { this.handleClickSpeedUp() }, 6e3) } }) } listenPlayTime() { let n = 0; this.timer = setInterval(() => __awaiter(this, void 0, void 0, function* () { n += 1; var e = null == (e = ElementObj.$video) ? void 0 : e.currentTime, e = (e / 60).toFixed(2), t = null == (t = ElementObj.$video) ? void 0 : t.duration; this.addInfo(`\u5df2\u76d1\u6d4b${n}\u6b21,\u5f53\u524d\u72b6\u6001\u6b63\u5728\u5b66\u4e60,\u5df2\u64ad\u653e${e}\u5206\u949f,\u89c6\u9891\u603b\u65f6\u957f\u4e3a${t / 60}\u5206\u949f`) }), 5e3) } } class Addpanel { constructor() { this.$panelWrap = document.createElement("div"), this.$panelStyle = document.createElement("style"), this._init() } _init() { var e; this.$panelWrap.innerHTML = this.getCTXHTML(), this.$panelStyle.innerHTML = panelcss, null != (e = document.querySelector("head")) && e.appendChild(this.$panelStyle), 3 == toolOption.SchoolType ? null != (e = document.querySelector("#bigContainer")) && e.appendChild(this.$panelWrap) : 7 == toolOption.SchoolType ? null != (e = document.querySelector(".layout-content")) && e.appendChild(this.$panelWrap) : 11 == toolOption.SchoolType ? null != (e = document.querySelector(".task-dashboard-page")) && e.appendChild(this.$panelWrap) : 18 == toolOption.SchoolType ? null != (e = document.querySelector(".screen_wide_1")) && e.appendChild(this.$panelWrap) : null != (e = document.querySelector("body")) && e.appendChild(this.$panelWrap), ElementObj.$title3 = document.querySelector(".title3"), ElementObj.$handleSpeedUp = document.querySelector(".handleSpeedUp"), ElementObj.$playButton = document.querySelector("#playButton"), ElementObj.$ctxTipWrap = document.querySelector("#ctxTipWrap"), ElementObj.$ctxsection2 = document.querySelector(".ctxsection2"), this.optimizePannel(), this.setSpeedOption(), this.addEvent() } optimizePannel() { } setSpeedOption() { ElementObj.$speedSelect = document.querySelector("#ctxspeed"); let e = ""; for (var t = 0; t < speedArr.length; t++) { var n = ` `; e += n } ElementObj.$speedSelect.innerHTML = e; var i = localStorage.getItem("_localSpeed"); i && (ElementObj.$speedSelect.value = i, toolOption.accelerator = Number(i)) } handleSetHtml(e) { try { ElementObj.$ipt.style.display = "none", ElementObj.$title3.innerText = "\u5f53\u524dkey:", ElementObj.$mytoolkey.innerText = e, ElementObj.$mytoolkey.style.display = "block", ElementObj.$nokey.style.display = "none", ElementObj.$removeKey.style.display = "block", ElementObj.$addKey.style.display = "none", ElementObj.userKey = e } catch (e) { } } addEvent() { ElementObj.$handleSpeedUp.addEventListener("click", () => { toolOption.CtxMain.handleClickSpeedUp() }), ElementObj.$ctxsection2.addEventListener("change", e => { toolOption.CtxMain.handleChangeCtxSpeed(e.target.value) }) } getCTXHTML() { return `
    \u8bbe\u7f6e\u500d\u901f:
    \u70b9\u51fb\u52a0\u901f
    ` } } function $el(e, t = window.document) { t.querySelector(e) } function sleep(t) { return new Promise(e => setTimeout(e, t)) } function fetchData(n) { new Promise(t => { try { GM_xmlhttpRequest(Object.assign(Object.assign({}, n), { onload: function (e) { 200 == e.status && t(JSON.parse(e.response)) } })) } catch (e) { fetch(n.url, {method: n.method}).then(e => e.json()).then(e => { t(e) }) } }) } function showTip(e, t = 3500, n) { t = t || 3500, ElementObj.$ctxTipWrap.style.display = "block", ElementObj.$ctxTipWrap.innerText = e; setTimeout(() => { ElementObj.$ctxTipWrap.style.display = "none" }, t) } function recognitionType() { let current_host = location.host; if (!/www.gaozhiwang.top/.test(current_host)) { let result = {type: 0, option: null}; for (var key in Internetcourse) Internetcourse[key].host.includes(current_host) && (result.type = 2, "CTXCommon" == Internetcourse[key].mainClass && (result.type = 1, result.option = Internetcourse[key].option), toolOption.CtxMain = eval(Internetcourse[key].mainClass), toolOption.SchoolType = Internetcourse[key].id); return result } } setTimeout(() => { var e = recognitionType(); 1 == (null == e ? void 0 : e.type) ? toolOption.CtxMain = new CTXCommon(e.option) : toolOption.CtxMain = new toolOption.CtxMain, new Addpanel }, 3e3) } }();