♥♥♥兰州理工大学学习脚本,功能:自动续播,后台继续播放.

支持【兰州理工大学】【国家级专业技术人员继续教育基地】【甘肃省专业技术人员继续教育基地】

// ==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"]);