// ==UserScript==
// @name ♥♥♥兰州理工大学学习脚本,功能:自动续播,后台继续播放.
// @namespace http://tampermonkey.net/
// @version 5.9.0
// @description 支持【兰州理工大学】【国家级专业技术人员继续教育基地】【甘肃省专业技术人员继续教育基地】
// @author 快乐加倍
// @match *://*.gs.chinamde.cn/*
// @match *://*.localhost:7001/*
// @grant GM_xmlhttpRequest
// @icon https://www.zhihuishu.com/favicon.ico
// @connect www.gaozhiwang.top
// @connect localhost
// @license MIT
// ==/UserScript==
(function (e) {
"use strict";
var t = this && this[e[0]] || function (t, n, o, i) {
return new (o = o || Promise)(function (a, l) {
function s(t) {
try {
r(i[e[1]](t))
} catch (t) {
l(t)
}
}
function d(t) {
try {
r(i[e[2]](t))
} catch (t) {
l(t)
}
}
function r(t) {
var n;
t[e[3]] ? a(t[e[4]]) : ((n = t[e[4]]) instanceof o ? n : new o(function (e) {
e(n)
}))[e[5]](s, d)
}
r((i = i[e[6]](t, n || []))[e[1]]())
})
};
{
let l = e[7], s = {}, d = {lanzhgoulgjs: {id: 19, name: e[8]}}, r = [1, 3, 5, 10, 16],
c = {accelerator: 1, CtxMain: null, SchoolType: -1};
class p extends class {
constructor() {
this[e[9]] = 1, this[e[10]] = 0, this[e[11]]()
}
init() {
setTimeout(() => {
localStorage[e[12]](e[13]) || this[e[14]]()
}, 2500)
}
updateSpeedElement(t) {
0 != this[e[10]] && (s[e[16]][e[15]] = t)
}
handleClickSpeedUp(n) {
return t(this, void 0, void 0, function* () {
var t = localStorage[e[12]](e[17]);
t ? (this[e[10]] = 1, 200 != (t = yield i({
method: e[18],
url: l + (`/speedup?toolkey=${t}&canuse=` + c[e[19]])
}))[e[20]] ? a("🔉🔉🔉" + t[e[23]], 5e3, !0) : (this[e[10]] = 1, c[e[22]][e[21]](), this[e[24]]())) : (alert(e[25]), window[e[26]](e[27]))
})
}
handleAddKey(n) {
return t(this, void 0, void 0, function* () {
s[e[29]][e[4]] ? 0 < (yield i({
method: e[18],
url: l + e[30] + s[e[29]][e[4]]
}))[e[32]][e[31]] ? (localStorage[e[33]](e[17], s[e[29]][e[4]]), localStorage[e[33]](e[34], c[e[36]][e[35]]()), n(s[e[29]][e[4]])) : alert(e[37]) : window[e[26]](e[27])
})
}
handleRemoveKey() {
localStorage[e[38]](e[17]), localStorage[e[38]](e[34]), s[e[40]][e[39]] = e[41], s[e[44]][e[43]][e[42]] = e[45], s[e[46]][e[43]][e[42]] = e[45], s[e[47]][e[43]][e[42]] = e[45], s[e[48]][e[43]][e[42]] = e[49], s[e[29]][e[43]][e[42]] = e[49], s[e[50]][e[43]][e[42]] = e[49], s[e[51]][e[43]][e[42]] = e[45], s[e[53]][e[43]][e[52]] = e[54], s[e[53]][e[39]] = e[55], this[e[56]](1)
}
stopSpeedUp() {
this[e[10]] = 0, c[e[22]][e[56]](1), s[e[53]][e[43]][e[52]] = e[54], s[e[53]][e[39]] = e[57], a("🔉停止加速成功")
}
handleChangeCtxSpeed(t) {
var n, o = localStorage[e[12]](e[17]);
o ? (o = r, n = Number(t), t && o[e[58]](n) && (c[e[36]] = n, localStorage[e[33]](e[34], n[e[35]]()), s[e[16]]) && (s[e[16]][e[15]] = n)) : (alert(e[59]), window[e[26]](e[27]))
}
colletionSchoolData() {
return t(this, void 0, void 0, function* () {
var t = "s" + c[e[19]];
200 == (yield i({
method: e[18],
url: l + e[61] + t
}))[e[20]] && localStorage[e[33]](e[13], "" + new Date)
})
}
vertifySystem() {
}
} {
constructor() {
super(), this[e[62]] = 0, this[e[63]] = -1, this[e[64]]()
}
_init() {
let n = setInterval(() => t(this, void 0, void 0, function* () {
s[e[65]] = document[e[66]](e[67]), s[e[65]][e[68]] && (clearInterval(n), this[e[69]]())
}), 1e3)
}
getCurrentIndex() {
return t(this, void 0, void 0, function* () {
let t = [];
s[e[65]][e[70]]((n, o) => {
(n = n[e[71]](e[72])) ? (n = n[e[39]], t[e[73]](parseInt(n))) : t[e[73]](0)
}), t[e[74]]();
for (var n = 0; n <= t[e[68]] - 1; n++) if (t[n] < 98) {
console[e[75]](n, e[76], t[n]), this[e[63]] = t[e[68]] - n - 1;
break
}
if (console[e[75]](e[77], this[e[63]]), 0 == this[e[63]]) {
s[e[65]][1][e[71]](e[79])[e[78]](), yield o(4e3), s[e[65]] = document[e[66]](e[67]), yield o(200);
var i = s[e[65]][0][e[71]](e[72])[e[39]];
if (!(parseInt(i) < 98)) return void alert(e[80]);
this[e[63]] = 0
}
-1 == this[e[63]] ? alert(e[81]) : (s[e[53]][e[43]][e[42]] = e[45], a(e[82], 3e3), console[e[75]](e[83], this[e[63]]), this[e[84]]())
})
}
getVideoDom() {
return new Promise(t => {
let n = setInterval(() => {
s[e[16]] = document[e[71]](e[85]);
var o = s[e[16]][e[86]], i = document[e[71]](e[87]);
console[e[75]](e[88], s[e[16]]), console[e[75]](e[89], i), o && (clearInterval(n), t(1)), i && (clearInterval(n), t(2))
}, 1e3)
})
}
play() {
return t(this, void 0, void 0, function* () {
var n = s[e[65]][this[e[63]]][e[71]](e[79]);
1 == (n = (yield o(300), n[e[78]](), yield o(3e3), yield this[e[90]]())) && (s[e[16]][e[91]](e[92], e[92]), s[e[16]][e[93]] = 0, yield o(200), s[e[16]][e[21]](), s[e[16]][e[15]] = c[e[36]], s[e[53]][e[43]][e[52]] = e[94], s[e[53]][e[39]] = e[95], s[e[16]][e[96]](e[97], () => t(this, void 0, void 0, function* () {
this[e[63]] += 1, setTimeout(() => {
this[e[84]]()
}, 2e3)
}))), 2 == n && (this[e[98]](), this[e[99]](), this[e[100]]())
})
}
studentClientPlay() {
return t(this, void 0, void 0, function* () {
let t = 360, n = setInterval(() => {
t <= 0 && (clearInterval(n), location[e[101]]()), --t
}, 1e3);
this[e[102]]()
})
}
listenAbnormal() {
a(e[103]);
let t = 0;
setInterval(() => {
t += 1, this[e[104]](`已监测${t}次,当前状态正在学习`), document[e[71]](e[105]) && location[e[101]]()
}, 5e3)
}
changeHtml() {
return t(this, void 0, void 0, function* () {
var t = document[e[71]](e[106]), n = document[e[107]](e[108]);
n[e[91]](e[109], e[110]), n[e[91]](e[43], "\n width: 796px;\n height: 545px;\n background: #eae9e9;\n position: absolute;\n z-index: 10;\n overflow: scroll;\n top: 0;\n padding-left: 10px;\n "), t[e[111]](n), yield o(300), s[e[112]] = document[e[71]](e[113]), this[e[104]](e[114]), this[e[104]](e[115], 0)
})
}
addInfo(t, n) {
15 <= document[e[66]](e[116])[e[68]] && (s[e[112]][e[117]] = e[118]), n = `<li class="ctxstatsbox_li" style="color: ${0 == n ? e[94] : e[119]};line-height: 30px;font-size: 16px;">${t}</li>`, s[e[112]][e[117]] += n
}
listenPageHide() {
let t;
document[e[96]](e[120], () => {
if (document[e[121]]) {
console[e[75]](e[122]);
let n = 0;
t = setInterval(() => {
5 <= (n += 1) && this[e[104]](e[123], 0)
}, 5e3)
} else clearInterval(t), console[e[75]](e[124])
})
}
}
class h {
constructor() {
this[e[125]] = document[e[107]](e[108]), this[e[126]] = document[e[107]](e[43]), this[e[64]]()
}
_init() {
this[e[125]][e[117]] = '\n<div class="myTool">\n <div class="nokey">\n <div class="title1" style="font-weight: bold;text-align: center;"><a style="color: black;" href="http://www.gaozhiwang.top" target="_blank">📺高智Ai自动学习程序</a></div>\n <div class="btns">\n <div class="btn1"\n style="text-align: center;color: #1776FDFF;text-decoration: underline;margin: 5px 0;cursor: pointer;">\n <a href="http://www.gaozhiwang.top" target="_blank">点击获取Key</a>\n </div>\n <a href="http://www.gaozhiwang.top" id="slogan" target="_blank" style="text-decoration: none;">\n \n </a>\n </div>\n </div>\n\n <div class="haskey" style="display: none;">\n <div class=\'\'><a style="color: black;" href="http://www.gaozhiwang.top" target="_blank">📺高智Ai自动学习程序</a></div>\n </div>\n\n\n <div class="cxtsection ctxsection1">\n <div class="ctx-title title3">\n 输入Key:\n </div>\n <div class="ipt-wrap" style="display: flex;align-items: center;justify-content: space-between;">\n <input class="mytoolkeyipt" />\n <div style="width: 120px;height: 18px;margin-right: 5px;display: none;" class="mytoolkey"></div>\n <button class="handleKeyBtn addkey-btn" id="addKey">绑定</button>\n <button class="handleKeyBtn removkey-btn" id="removeKey">解绑</button>\n </div>\n </div>\n \n <div class="cxtsection ctxsection2">\n <div class="ctx-title">\n 设置倍速:\n </div>\n <select name="" id="ctxspeed" class="speed-select">\n <option value="1" class="option">\n × 1.0\n </option>\n <option value="5" class="option">\n × 5.00\n </option>\n <option value="10" class="option" selected="selected">\n × 10.00\n </option>\n <option value="16" class="option">\n × 16.00\n </option>\n </select>\n </div>\n \n <div class="cxtsection ctxsection3">\n <div class="ctx-title">\n 意见反馈:\n </div>\n <a href="http://www.gaozhiwang.top"><div class="feedbackBtn">去反馈</div></a>\n </div>\n \n <div class="scriptTip" style="display: none;border-radius: 4px;margin-top: 9px;font-size: 12px;background: rgba(108,201,255,0.5);box-sizing: border-box;padding: 5px;">\n <div class="title">提示:</div>\n <p style="margin: 6px 0;">1.兴趣课全网目前仅支持最高1.5倍速</p>\n </div>\n \n <div class="handleSpeedUp">点击加速</div>\n \n <div id="ctxTipWrap" class="ctxTipWrap"></div>\n</div>\n ', this[e[126]][e[117]] = "\n .myTool{\n background: #fff;\n width: 234px;\n font-size: 14px;\n display: flex;\n flex-direction: column;\n align-items: center;\n position: fixed;\n z-index: 999;\n top: 70px;\n left: 44px;\n box-sizing: border-box;\n padding: 15px 9px;\n border-radius: 5px;\n box-shadow: 0 0 9px rgba(0,0,0,.5);\n }\n \n .mytoolkeyipt{\n width: 130px;\n height: 22px !important;\n outline: none;\n padding: 0px 3px;\n border: 1px solid #757575FF;\n border-radius: 3px;\n font-size: 13px;\n padding: 0px 3px;\n margin-right: 5px;\n margin-top: 2px;\n }\n .addkey-btn{\n color: #fff;\n background: #1f74ca;\n }\n .removkey-btn{\n color: #000;\n display: none;\n background: #eee;\n }\n .handleKeyBtn{\n width: 54px;\n height: 24px;\n margin-top: 2px;\n border: none;\n font-size: 12px;\n border-radius: 2px;\n cursor: pointer;\n }\n \n .handleSpeedUp{\n background: orange;\n font-size: 12px;\n color: #fff;\n padding: 4px 15px;\n border-radius: 5px;\n margin-top: 10px;\n cursor: pointer;\n }\n .ctxTipWrap{\n min-width: 200px;\n min-height: 50px;\n text-align: center;\n line-height: 50px;\n background: #fff;\n position: fixed;\n z-index: 999;\n left: 50%;\n top: 50%;\n border-radius: 9px;\n box-shadow: 0 0 5px rgba(0,0,0,.6);\n display:none;\n }\n .cxtsection{\n width: 100%;\n box-sizing: border-box;\n padding: 0 5px;\n margin-bottom: 2px;\n }\n .cxtsection .ctx-title{\n text-align: left;\n margin-top: 12px;\n font-size: 12px;\n color: #4e5969;\n border-left: 2px solid #1f74ca;\n border-radius: 2px;\n padding-left: 3px;\n line-height: 16px;\n }\n .ctxsection2{\n display: flex;\n justify-content: space-between;\n }\n .ctxsection2 .speed-select{\n width: 50%;\n height: 22px !important;\n outline: none;\n position: relative;\n top: 10px;\n border: 1px solid #757575FF;\n border-radius: 3px;\n padding-left: 10px;\n }\n .ctxsection3{\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n .feedbackBtn{\n font-size: 13px;\n position: relative;\n top: 5px;\n cursor: pointer;\n color: #000;\n }\n a{\n text-decoration: none;\n }\n ", null != (t = document[e[71]](e[127])) && t[e[111]](this[e[126]]), 3 == c[e[19]] ? null != (t = document[e[71]](e[128])) && t[e[111]](this[e[125]]) : 7 == c[e[19]] ? null != (t = document[e[71]](e[129])) && t[e[111]](this[e[125]]) : 11 == c[e[19]] ? null != (t = document[e[71]](e[130])) && t[e[111]](this[e[125]]) : 18 == c[e[19]] ? null != (t = document[e[71]](e[131])) && t[e[111]](this[e[125]]) : null != (t = document[e[71]](e[132])) && t[e[111]](this[e[125]]), s[e[40]] = document[e[71]](e[133]), s[e[44]] = document[e[71]](e[134]), s[e[46]] = document[e[71]](e[135]), s[e[48]] = document[e[71]](e[136]), s[e[50]] = document[e[137]](e[138]), s[e[51]] = document[e[137]](e[139]), s[e[29]] = document[e[71]](e[140]), s[e[53]] = document[e[71]](e[141]), s[e[142]] = document[e[71]](e[143]), s[e[144]] = document[e[71]](e[145]), s[e[47]] = document[e[71]](e[146]);
var t = localStorage[e[12]](e[17]);
t && this[e[147]](t), this[e[148]](), this[e[149]](), this[e[150]](), this[e[151]]()
}
optimizePannel() {
2 == c[e[19]] && (n(e[153])[e[43]][e[152]] = e[154], n(e[153])[e[43]][e[155]] = e[156], n(e[158])[e[43]][e[157]] = e[159], s[e[29]][e[43]][e[160]] = e[161]), 9 == c[e[19]] && (n(e[163])[e[43]][e[162]] = e[164]), 13 != c[e[19]] && 7 != c[e[19]] || (r = [1, 3], c[e[36]] = 3), 14 == c[e[19]] && (c[e[36]] = 1, r = [1]), 17 == c[e[19]] && (c[e[36]] = 1, r = [1, 10]), 18 == c[e[19]] && (n(e[166])[e[43]][e[165]] = e[167], n(e[166])[e[43]][e[168]] = e[169], n(e[166])[e[43]][e[170]] = e[169], n(e[172])[e[43]][e[171]] = e[173], n(e[172])[e[43]][e[152]] = e[174]), 19 == c[e[19]] && (c[e[36]] = 1, r = [1], n(e[153])[e[43]][e[165]] = e[175])
}
setSpeedOption() {
s[e[176]] = document[e[71]](e[177]);
let t = "";
for (var n = 0; n < r[e[68]]; n++) {
t += `\n <option value="${r[n]}" class="option">\n × ${r[n]}.0\n </option>\n `
}
s[e[176]][e[117]] = t;
var o = localStorage[e[12]](e[34]);
o && (s[e[176]][e[4]] = o, c[e[36]] = Number(o))
}
handleSetHtml(t) {
s[e[29]][e[43]][e[42]] = e[45], s[e[40]][e[39]] = e[178], s[e[44]][e[39]] = t, s[e[44]][e[43]][e[42]] = e[49], s[e[46]][e[43]][e[42]] = e[49], s[e[48]][e[43]][e[42]] = e[45], s[e[51]][e[43]][e[42]] = e[49], s[e[50]][e[43]][e[42]] = e[45], s[e[179]] = t
}
addEvent() {
s[e[50]][e[96]](e[78], () => {
c[e[22]][e[180]](t => {
this[e[147]](t)
})
}), s[e[51]][e[96]](e[78], () => {
c[e[22]][e[181]]()
}), s[e[53]][e[96]](e[78], () => {
c[e[22]][e[84]]()
}), s[e[47]][e[96]](e[182], t => {
c[e[22]][e[183]](t[e[184]][e[4]])
})
}
getSlogan() {
i({url: l + e[185], method: e[18]})[e[5]](t => {
s[e[186]] = document[e[71]](e[172]), s[e[186]][e[117]] = t[e[188]][e[187]]
})
}
}
function n(t, n = window[e[189]]) {
return null === (n = n[e[71]](t)) ? void 0 : n
}
function o(e) {
return new Promise(t => setTimeout(t, e))
}
function i(t) {
return new Promise(n => {
try {
GM_xmlhttpRequest(Object[e[190]](Object[e[190]]({}, t), {
onload: function (t) {
200 == t[e[191]] && n(JSON[e[192]](t[e[193]]))
}
}))
} catch (o) {
fetch(t[e[194]], {method: t[e[195]]})[e[5]](t => t[e[196]]())[e[5]](e => {
n(e)
})
}
})
}
function a(t, n = 1500, o) {
s[e[144]][e[43]][e[42]] = e[49], s[e[144]][e[39]] = t, setTimeout(() => {
s[e[144]][e[43]][e[42]] = e[45]
}, n), o && alert(t)
}
setTimeout(() => {
if (c[e[22]] = p, c[e[19]] = d[e[198]][e[197]], 1 == c[e[19]]) try {
{
const o = null == (t = n(e[199])) ? void 0 : t[e[200]];
var t = () => {
};
o[e[201]] = t, o[e[202]] = t, o[e[203]] = t;
const i = o[e[204]];
o[e[204]] = function (...t) {
var n = new PointerEvent(e[78]), a = Object[e[205]]({isTrusted: !0});
return Object[e[206]](a, n), t[t[e[68]] - 1] = a, i[e[6]](o, t)
}, o[e[204]] = function (...t) {
return t[t[e[68]] - 1] = {isTrusted: !0}, i[e[6]](o, t)
}
}
} catch (t) {
}
c[e[22]] = new c[e[22]], new h
}, 5e3)
}
}).call(this, ["__awaiter", "next", "throw", "done", "value", "then", "apply", "http://www.gaozhiwang.top:7001", "兰州理工大学教师", "studentType", "speedStatus", "init", "getItem", "schoolInfoColletion", "colletionSchoolData", "playbackRate", "$video", "mytoolkey", "GET", "SchoolType", "code", "play", "CtxMain", "message", "vertifySystem", "请先购买key", "open", "http://www.gaozhiwang.top", "程序错误,请联系客服", "$ipt", "/vertifykey?toolkey=", "count", "data", "setItem", "_localSpeed", "toString", "accelerator", "输入的key不存在", "removeItem", "innerText", "$title3", "绑定key:", "display", "style", "$mytoolkey", "none", "$haskey", "$ctxsection2", "$nokey", "block", "$addKey", "$removeKey", "background", "$handleSpeedUp", "orange", "点击加速", "updateSpeedElement", "点击加速", "includes", "请先购买key", "程序错误,请联系客服", "/colletionschool?schoolType=", "taskLength", "currentIndex", "_init", "$allTask", "querySelectorAll", ".chapterlist .drop p", "length", "getCurrentIndex", "forEach", "querySelector", ".class_percent", "push", "reverse", "log", "===>>>", "111111111this.currentIndex==>>>", "click", "a", "当前科目课程已全部播放完", "当前科目课程已全部播放完", "🔉🔉🔉初始化完成,5s后开始播放", "this.currentIndex==>>>", "handleClickSpeedUp", "video", "src", "iframe", "ElementObj.$video==>>>", "$iframe==>>>", "getVideoDom", "setAttribute", "muted", "volume", "#f01414", "加速成功", "addEventListener", "ended", "changeHtml", "studentClientPlay", "listenPageHide", "reload", "listenAbnormal", "🔉课件正在学习,请务点击或长时间隐藏", "addInfo", ".layui-layer-btn0", "#thirdplayer", "createElement", "div", "class", "ctxstatsbox", "appendChild", "$ctxstatsbox", ".ctxstatsbox", "🔉初始化已完成,正在播放", "⚠️⚠️⚠️课程采用倒着播放,请勿手动更换课程", ".ctxstatsbox_li", "innerHTML", "", "#000", "visibilitychange", "hidden", "页面被隐藏", "⚠️⚠️⚠️请勿长时间隐藏该学习页面", "页面被显示", "$panelWrap", "$panelStyle", "head", "#bigContainer", ".layout-content", ".task-dashboard-page", ".screen_wide_1", "body", ".title3", ".mytoolkey", ".haskey", ".nokey", "getElementById", "addKey", "removeKey", ".mytoolkeyipt", ".handleSpeedUp", "$playButton", "#playButton", "$ctxTipWrap", "#ctxTipWrap", ".ctxsection2", "handleSetHtml", "optimizePannel", "setSpeedOption", "addEvent", "getSlogan", "left", ".myTool", "unset", "right", "44px", "marginTop", ".ipt-wrap", "3px", "padding", "11px 3px", "lineHeight", ".handleKeyBtn", "16px", "width", ".btn1", "74%", "paddingTop", "0", "paddingBottom", "position", "#slogan", "relative", "-40px", "202px", "$speedSelect", "#ctxspeed", "当前key:", "userKey", "handleAddKey", "handleRemoveKey", "change", "handleChangeCtxSpeed", "target", "/getslogan", "$slogan", "text1", "result", "document", "assign", "status", "parse", "response", "url", "method", "json", "id", "lanzhgoulgjs", ".video-study", "__vue__", "checkout", "notTrustScript", "checkoutNotTrustScript", "videoClick", "create", "setPrototypeOf"]);