Greasy Fork

『帮帮客网课助手』

帮帮客平台精心打造了多款实用脚本和工具,涵盖了『帮帮客网课助手』、帮帮客本地预览版(BBK Local preview)以及帮帮客程序版。欢迎查看并感受它们为您带来的便利与效益!详情请看介绍。温馨提示:华医网平台已全面禁止视频倍速、跳过(程序版支持倍速且多门课程同时学,适用无需人脸认证地区的学员)。

目前为 2024-03-29 提交的版本。查看 最新版本

// ==UserScript==
// @name         『帮帮客网课助手』
// @namespace    http://tampermonkey.net/
// @version      4.8
// @description  帮帮客平台精心打造了多款实用脚本和工具,涵盖了『帮帮客网课助手』、帮帮客本地预览版(BBK Local preview)以及帮帮客程序版。欢迎查看并感受它们为您带来的便利与效益!详情请看介绍。温馨提示:华医网平台已全面禁止视频倍速、跳过(程序版支持倍速且多门课程同时学,适用无需人脸认证地区的学员)。
// @author       帮帮客
// @license      MIT
// @match        *://*.91huayi.com/*
// @match        *://*.yxlearning.com/*
// @match        *://*.cmechina.net/*
// @match        *://*.ghlearning.com/*
// @match        *://basic.smartedu.cn/teacherTraining*
// @match        *://*.zxx.edu.cn/teacherTraining/courseDetail*
// @match        *://*.qutjxjy.cn/*
// @match        *://*.hbysw.org/*
// @match        *://*.jxjyedu.org.cn/*
// @match        *://*.xjzyysxh.cn/*
// @match        *://*.mtnet.com.cn/*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_listValues
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// @require      https://lib.baomitu.com/jquery/1.12.4/jquery.min.js
// @icon         https://mmbiz.qpic.cn/mmbiz_jpg/nc15h3nWHMVYP16HAuFe6PNJcic7mB6GFnNmk61LSHfH9ZPUoOWKnZiaaB9Jze8hCyrEYzIyicOzibs3e6ZIJTlcgw/640?wx_fmt=jpeg
// @run-at       document-start
// ==/UserScript==

var myTimer;
function hnzj_gx() {//河南专技_公需
    if (document.querySelector(".item-box")) {
        try {
            for (var i = 0; i < document.querySelectorAll(".item-box").length; i++) {
                if (document.querySelectorAll(".sr-only")[i * 2].innerText != "100.0%") {
                    document.querySelectorAll(".item-box")[i].click();
                    break;
                }
            }
        } catch (error) {
            console.log("加载失败");
        }
        setTimeout(function () {
            alert("当前已选的所有课程均已完成!\n感谢您的使用");
            clearInterval(myTimer);
        }, 2000);
    }
    let jd = document.querySelector("#a span[du-html=sumschedule]");//获取视频进度
    if (jd) {
        if (!document.querySelector("#hnzjfz")) {
            document.querySelector("#defaultBtn > span.titlesname").insertAdjacentHTML('afterEnd', "<div style=\"font-weight:700;float:left;margin-left: 30px;\"><a href=https://greasyfork.org/zh-CN/scripts/441391-%E5%B8%AE%E5%B8%AE%E5%AE%A2%E7%BD%91%E8%AF%BE%E5%8A%A9%E6%89%8B target=_blank><span id=hnzjfz style=\"color:rgb(255 127 1);\">『帮帮客网课助手』</span> </a>");
            document.querySelector("#defaultBtn > div").insertAdjacentHTML('afterEnd',`
                    <div id="xl" style="margin-left: 30px; text-decoration: underline;">
                        <a id="xbfw" href="http://139.224.47.209:91/%E5%B0%8F%E5%B8%AE%E6%9C%8D%E5%8A%A1.png" target="_blank" style="color: #aaa;">小帮服务</a>
                        <a href="https://www.123pan.com/s/aYv7Vv-WgLN3" style="margin-left: 10px; margin-right: 10px; color: #aaa;" target="_blank">程序版下载</a>
                        <a href="http://139.224.47.209:91/wechat_bbk.jpg" style="margin-right: 10px; color: #aaa;" target="_blank">联系小帮</a>
                        <a href="https://www.bilibili.com/video/BV1H44y1Z7cr/" target="_blank" style="color: #aaa;">视频教程</a>
                    </div>
                `)
            setTimeout(function () {document.querySelector('#speaker').parentElement.click();}, 2000);//执行静音
        }
        if (jd.innerText != "100.00") {
            if (document.querySelector("#bplayer-ffplayer")) {
                if (document.querySelector("#stop") == null) {
                    document.querySelector("#play").parentElement.click();//执行播放
                }
            }
            let dangqian = document.querySelector(".videoLi.active");
            if (dangqian.innerText.match(/单元测试/)) {
                location.reload();
            } else if (document.querySelector("button.pv-ask-skip.pv-hide")) {
                document.querySelector("button.pv-ask-skip.pv-hide").click();//跳过答题
            } else if (dangqian.innerText.match(/[0-9]+%/)[0] == "100%" && document.querySelector(".pt5 [class=progress-bar]")) {
                document.querySelector(".pt5 [class=progress-bar]").parentElement.parentElement.click();//下一节
                setTimeout("location.reload();", 2000);
            }
        } else {
            history.back(-1);//返回
        }
    }
}
function gjzxx(){//国家中小学教育平台
    const xljkUrlList = [
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=52437a43-1e09-43cf-b7af-2beb4f96baca&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=9ca7b73a-9386-4b58-9cf9-4e452b86b47f&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=8cf90221-98c8-416f-b819-ce271b946922&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=ea4a8bdb-6819-47af-bfc2-233933bb5049&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=1238d399-6ea6-4d5c-b010-4d469b3f9d2c&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=2f22d9c1-2510-4db1-81e2-152e94f45b00&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=f97c5ef3-4163-4551-bbe6-c2282de8002e&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=03ce293f-ce99-4905-8088-62d3efd1415f&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=9c50d48e-b997-4371-bfde-c9ef9da36006&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=b13aa14e-29e0-48fd-be51-aa32f343095a&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=6e00246a-4264-4e7f-a4ba-67150cebdc97&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=3b785768-a164-4346-af41-f7edb7ba9d02&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=98b8ea15-c39c-4ab0-9c90-89cc16ea345e&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=0b8c7836-3b5a-47f9-b6f2-6a57d9208148&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=81e12411-afee-47e3-9567-fc5dd17c3ac7&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=9099c3ad-9643-476e-b74f-8dede233ea88&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=c0234602-7ba1-4c9f-b409-39d15732a1d2&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=25928aa1-3029-4442-814a-2e73123e409c&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=c29ac9f3-dc69-4ad2-8629-92bbdd3b9cf7&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
        "https://www.zxx.edu.cn/teacherTraining/courseDetail?courseId=64f2dcad-6020-4be6-a150-eb3bfa9d0de8&tag=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD",
    ];
    const xljkUrlTag =
          "%E5%BF%83%E7%90%86%E5%81%A5%E5%BA%B7%E6%95%99%E8%82%B2%E6%95%99%E5%B8%88%E5%9F%B9%E8%AE%AD";
    // function
    const changInputValue = (inputDom, newText) => {
        if (!inputDom) {
            return;
        }
        let lastValue = inputDom.value;
        inputDom.value = newText;
        let event = new Event("input", { bubbles: true });
        event.simulated = true;
        let tracker = inputDom._valueTracker;
        if (tracker) {
            tracker.setValue(lastValue);
        }
        inputDom.dispatchEvent(event);
    };

    function findLastIndex(array, predicate) {
        // 先将数组反转
        const reversedArray = array.slice().reverse();
        // 使用findIndex找到满足条件的元素的索引
        const index = reversedArray.findIndex(predicate);
        if (index === -1) {
            return -1; // 若未找到,则直接返回-1
        }
        // 计算满足条件的元素在原数组中的索引
        const originalIndex = array.length - 1 - index;
        return originalIndex;
    }

    const State = {
        LoadPage: "loadPage",
        GetActive: "getActive",
        SwitchSource: "switchSource",
        PlayVideo: "playVideo",
        HandlePlayRes: "handlePlayRes",
        WaitPlay: "waitPlay",
        SwitchActive: "switchActive",
        SwitchFirst: "switchFirst",
        TaskEnd: "taskEnd",
    }

    var state = State.LoadPage;
    var groups = undefined;
    var groupNo = undefined;
    var resItems = undefined;
    var resNo = undefined;
    var videoErr = undefined;

    const func_table = {
        loadPage: () => {
            var video = document.querySelector("video");
            var resItems = document.querySelector(".resource-item");
            if (!!video && !!resItems) {
                return State.GetActive
            }
            else {
                console.log("Bbk", "等待视频加载")
                return State.LoadPage
            }
        },
        getActive: () => {
            groups = document.getElementsByClassName("fish-collapse-item");
            //寻找最后一个打开的group(子group可能打开多个)
            //适配chrome版本低于97, firefox版本低于108的用户
            groupNo = findLastIndex([...groups], (item) => {
                return item.className.includes("active");
            })

            var base = groupNo === -1 ? document : groups[groupNo];
            resItems = base.getElementsByClassName("resource-item");
            resNo = [...resItems].findIndex((item) => {
                return item.className.includes("active");
            });
            return State.SwitchSource
        },
        switchSource: () => {
            //视频修改为标清 zxj663建议添加
            let sped = document.querySelector(
                "div.vjs-menu-button.vjs-menu-button-popup.vjs-control.vjs-button.vjs-resolution-button > span"
            );
            if (sped && sped.innerText != "标清") {
                document
                    .querySelector(
                    "div.vjs-menu-button.vjs-menu-button-popup.vjs-control.vjs-button.vjs-resolution-button > div > ul > li:nth-child(2) > span.vjs-menu-item-text"
                )
                    .click();
            }
            return State.PlayVideo
        },
        playVideo: () => {
            let icons = resItems[resNo].getElementsByClassName("iconfont");
            if (icons[1] && icons[1].className.includes("icon_checkbox_fill")) {
                console.log("Bbk", `第${groupNo + 1}组, 第${resNo + 1}个视频已经观看`);
                return State.SwitchActive
            }

            console.log("Bbk", `开始观看: 第${resNo + 1}个视频,第${groupNo + 1}组`);
            var video = document.getElementsByTagName("video")[0];
            video.muted = true;
            video.play().then(() => {
                videoErr = false
            }).catch((err) => {
                console.log("Bbk", err);
                videoErr = true
            });
            renderMenu()
            video.playbackRate = rateMenu[active].value;
            video.addEventListener("pause", () => state = State.PlayVideo, false)
            video.addEventListener("ended", () => state = State.SwitchActive, false)
            return State.HandlePlayRes
        },
        handlePlayRes: () => {
            //处理播放的结果
            return videoErr === undefined ? State.HandlePlayRes : videoErr ? State.PlayVideo : State.WaitPlay
        },
        waitPlay: () => { return State.WaitPlay },
        switchActive: () => {
            //如果没看完当前组,则观看当前组的下一个视频
            if (resNo + 1 != resItems.length) {
                resNo += 1
                resItems[resNo].click();
                console.log("Bbk", `点击当前组的下一个视频`);
                return State.SwitchSource;
            }

            //如果看完了当前组,没看完当前页面,则看下一个页面
            if (groupNo + 1 != groups.length) {
                console.log("Bbk", `点击下一组的第一个视频`);
                groupNo += 1
                document.getElementsByClassName("fish-collapse-header")[groupNo].click();
                return State.SwitchFirst
            }
            //如果都看完了
            var urlList = [];
            //是心理健康教育培训
            if (location.href.includes(xljkUrlTag)) {
                urlList = [...xljkUrlList];
            }
            var curUrl = urlList.indexOf(location.href);
            if (curUrl + 1 == urlList.length) {
                console.log("Bbk", "看完了所有学习页面,退出");
                return State.TaskEnd;

            } else if (curUrl != -1) {
                console.log("Bbk", "进入下一个学习页面");
                window.open(urlList[curUrl + 1], "_self");
            }
        },
        switchFirst: () => {
            resItems = groups[groupNo].getElementsByClassName("resource-item");
            resNo = 0
            resItems[resNo].click();
            return State.SwitchSource
        },
        taskEnd: () => {
            return State.TaskEnd;
        }
    }

    const setPopupHandler = () => {
        //点击页面的题目和弹窗
        setInterval(() => {
            [".nqti-option", ".index-module_markerExercise_KM5bU .fish-btn", ".fish-modal-confirm-btns .fish-btn"].forEach(selector => {
                let dom = document.querySelector(selector)
                if (!!dom) {
                    dom.click();
                }
            })
            //增加填空题支持
            var inputForm = document.querySelector(".index-module_box_blt8G");
            if (!!inputForm) {
                changInputValue(inputForm.getElementsByTagName("input")[1], "&nbsp;");
            }
        }, 5000);
    };

    const setVideoHandler = () => {
        setInterval(() => {
            try {
                state = func_table[state]()
                //console.log("Bbk", `${state}已经完成!`)
            }
            catch (err) {
                //tusi("BBK提示:"+`${state}: ${err}`,1000,true);
                console.log("Bbk", `${state}: ${err}`)
            }
        }, 5000)
    }

    //修改播放速度
    const changeRate = (rate, index) => {
        localStorage.setItem("active", `${index}`)
        active = index
        document.querySelector(".vjs-playback-rate-value").innerHTML = rateMenu[index].title
        document.getElementsByTagName("video")[0].playbackRate = rate
        return false
    }

    //修改速度菜单
    const renderMenu = () => {
        document.querySelector(".vjs-playback-rate .vjs-menu-content").innerHTML =
            rateMenu.map((rate, index) =>
                         `<li class="vjs-menu-item" tabindex="-1" role="menuitemradio" aria-disabled="false" aria-checked="${index == active}">
            <span class="vjs-menu-item-text">${rate.title}</span>
            <span class="vjs-control-text" aria-live="polite"></span>
          </li>`
          ).join(" ")
        const doms = document.querySelectorAll(".vjs-playback-rate .vjs-menu-content .vjs-menu-item")
        rateMenu.forEach((rate, index) => {
            doms[index].addEventListener("click", () => changeRate(rate.value, index), false)
        })

        //显示速度控制菜单
        const rateButtons = document.getElementsByClassName("vjs-playback-rate vjs-menu-button vjs-menu-button-popup vjs-control vjs-button vjs-hidden")
        if (rateButtons.length > 0) {
            rateButtons[0].classList.remove("vjs-hidden")
            document.querySelector(".vjs-playback-rate-value").innerHTML = rateMenu[active].title
        }
    }

    //获取速度
    let activeStr = localStorage.getItem("active")
    const rateMenu = [{ title: "1x", value: 1 }, { title: "4x", value: 4 }, { title: "8x", value: 8 }, { title: "12x", value: 12 }, { title: "16x", value: 16 }]
    let active = activeStr === null ? rateMenu.length - 1 : parseInt(activeStr)

    //下面开始运行脚本
    //tusi("BBK提示:脚本加载成功,稍后执行自动化操作...",1000,true);
    console.log("Bbk", "加载成功")
    setVideoHandler();
    setPopupHandler();
}
class Verify {
    constructor() {
        var version = 'version',hear = 'hear',version_ = "4.5";
        var txt,str;
        txt =
            '1.鉴于帮帮客网课助手(原)进入重构阶段,同时为了兼顾各学员学习需求,决定推出帮帮客本地预览版(BBK Local preview)\n' +
            '2.该版本简化了安装流程,更易操作使用\n' +
            '更新建议:推荐(适配未超期的旧用户,新用户按提示操作)\n' +
            '疑问解答:\n' +
            '1.帮帮客本地预览版(BBK Local preview)具备旧版功能\n' +
            '2.帮帮客本地预览版(BBK Local preview)属非正式发布版本\n' +
            '3.助手自发布以来,承蒙各学员的支持,总安装量达15000+\n' +
            '4.帮帮客注重用户体验、使用效率,如有不懂之处或疑问可通过公众号、博客、QQ等方式联系我\n' +
            '下方链接则是帮帮客本地预览版(BBK Local preview)地址\n点击确定按钮进行跳转或复制输入框内的地址到浏览器上打开亦可\n' +
            '注意事项:点击确定按钮后,个别浏览器会阻止弹窗而导致跳出失败,注意浏览器提示选择允许即可\n';
        str = 'https://www.cnblogs.com/BBK1106/p/17770770.html';
        let Set = GM_getValue("set");
        if (GM_listValues().indexOf("set") == -1) {
            GM_setValue("set", {"idCard": "","code": "","hear": "","version": ""});
            confirm("BBK_JavaScript\n初始化完毕!");
        }
        setTimeout(function () {
            Set = GM_getValue("set");
            if (Set[hear] != true) {
                data();
                let url_n = unsafeWindow.location.href.split("/");
                if (url_n[3] != 'rawsystem' && getCookie("Bbk_Sx") != "true") {
                    if (prompt(txt, str)){window.open(str);};
                }
            } else if (Set[hear] == true && Set[version] != version_) {
                data();
                let v1 = prompt('BBK_JavaScript\n\n温馨提示;您有新版本更新\n\n最新版本:' + Set[version] + ',当前版本:' + Vs + '\n\n更新流程:\n1.点击确定按钮进行跳转\n2.复制输入框内的地址到浏览器上打开即可\n\n注意事项:点击确定按钮后,个别浏览器会阻止弹窗而导致跳出失败,注意浏览器提示选择允许即可',str);
                if(v1){window.open(str);}
            }
            if (document.querySelector('#floatTips2')) {
                document.querySelector('#imga3').style.display = 'none';
                if (document.querySelector('#floatTips')) {
                    document.querySelector('#floatTips').style.display = 'none';
                }
            }
        }, 1500);
        function data() {
            var url_n, url_t;
            url_n = unsafeWindow.location.href.split("/");
            url_t = url_n[url_n.length - 1].split("?")[0];
            if (url_t != "course_list_v2.aspx") {
                $('body').append(`
                    <div id=gzh style="font-weight: bold;right: 17px;font-size: 14px;height: 32px;text-align: center;display: block;background: #ffffff;position: fixed;top: 272px;width: 129px;color: #717375;margin-left: 0px;line-height: 15px;">
                        微信扫一扫
                        <br>
                        关注帮帮客公众号
                    </div>
                    <iframe src="https://mp.weixin.qq.com/mp/qrcode?scene=10000004&size=102&__biz=Mzk0MjMxNTcxOQ==&mid=2247483681&idx=1&sn=382747485cbe09c94f7e7ee0eef363b5&send_time="
                    style="right: 17px;display: block;position: fixed; top:143px;width: 129px;color: #555;margin-left: 0px;line-height: 11px;border-radius: 6px;height: 160px;">
                    </iframe>
                    `);
            }
        }
        function getCookie(name)
        {
            var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
            if(arr=document.cookie.match(reg))
                return unescape(arr[2]);
            else
                return null;
        }
    }
}
new Verify();
//河南专技
if (location.host.includes('ghlearning')) {
    myTimer = setInterval(hnzj_gx,3000);
}
//国家中小学教育平台
else if (location.host.includes("courseDetail")) {
    gjzxx();
}