yftech自动答题程序

作用于www.yftechweb.cn,是一款针对网页端考试,练习作业的一款轻量级自动化答题插件。

// ==UserScript==
// @name         yftech自动答题程序
// @namespace    https://v6ym.com/
// @version      1.0.6
// @description  作用于www.yftechweb.cn,是一款针对网页端考试,练习作业的一款轻量级自动化答题插件。
// @author       朱岩松
// @match        https://www.yftechweb.cn/exam.html
// @icon         https://sou.zhuyansong.com/favicon.ico
// @require       http://libs.baidu.com/jquery/2.1.4/jquery.min.js
// @connect v6ym.com
// @grant GM_xmlhttpRequest
// @license zys
// @supportURL   https://v6ym.com/
// @homepage     https://v6ym.com/
// ==/UserScript==
/**
 * 文档注释
 * 开发感言:2021年12月26日 17点54分写下
 * 此插件已有前身,项目地址:https://gf.qytechs.cn/zh-CN/scripts/436116 关于它的前身,我只能表示程序写的非常烂。
 * 采用原生JavaScript,面向过程的写法。并且无法解决JS的异步问题(即便递归也没办法),所以新开项目,采用Jqurey来写它。
 * 希望这个新项目能很好的解决我的需求并让我同步学习并掌控Jqurey知识。
 * 完结感言:2021年12月29日 15点34分写下
 * 零零散散的时间写完它,这个插件对我有特殊意义,它是我第一次尝试边学边写,使用Jqurey来获取对象,确实比用原生JavaScript
 * 好多了,虽然异步问题也没用解决,但是通过settimeout完成了流程控制。总体感觉不错。
 * 目前还有一个非常之大的BUG,那就是无法完成他的特殊字符处理,比如答案中有+-/""''这写特殊符号都会导致答案虽然获取到但是无
 * 法通过indexof来进行判断是否统配,可能需要做适配。还在持续开发中。
 * */
//----用户自定义变量开始----
var key

//----用户自定义变量结束----

//----全局变量开始----
var nowversion = '1.0.6'
var nowAnswer
var totalAnswer
var thisSubject
var thisAnswer
var error=""
    //----全局变量结束----
    //----菜单区域开始----
    //菜单几乎废弃,目前使用的是jqurey的弹窗提醒!
buju = 'auto';
pifu = 2

function IsPC() {
    var a = navigator.userAgent;
    var b = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
    var c = true;
    for (var v = 0; v < b.length; v++) {
        if (a.indexOf(b[v]) > 0) {
            c = false;
            break
        }
    }
    if (c == false) {
        buju = 80
    } else if (buju == "auto") {
        if (window.screen.height == 1080) {
            buju = 300
        } else if (window.screen.height == 768) {
            buju = 100
        } else if (window.screen.height == 720) {
            buju = 50
        } else if (window.screen.height < 720) {
            buju = 0
        } else if (window.screen.height > 1080) {
            buju = 500
        } else {
            buju = 300
        }
    }
}
IsPC();
var btnList = {},
    paddingLeft = '0px',
    paddingRight = '0px',
    clrs1 = 'color',
    clrs2 = 'ground',
    color0 = '#E0EEEE',
    ground0 = '#9370DB',
    color1 = '#BFEFFF',
    ground1 = '#BDB76B',
    color2 = '#E0EEE0',
    ground2 = '#CD661D',
    color3 = '#FFFAFA',
    ground3 = '#FFB6C1',
    color4 = null,
    ground4 = null,
    color = eval(clrs1 + pifu),
    ground = eval(clrs2 + pifu),
    buttonWidth = '70px',
    buttonHeight = '20px',
    currentPos = 5,
    delta = 30,

    database = window.localStorage;
var btnBox2 = document.createElement('div');
btnBox2.style.position = 'absolute';
btnBox2.style.top = '210px';
btnBox2.style.left = 460 + buju + 'px';
btnBox2.style.width = buttonWidth;
btnBox2.style.height = buttonHeight;
document.body.appendChild(btnBox2);

var btnBox1 = document.createElement('div');
btnBox1.style.position = 'absolute';
btnBox1.style.top = '210px';
btnBox1.style.left = 540 + buju + 'px';
btnBox1.style.width = buttonWidth;
btnBox1.style.height = buttonHeight;
document.body.appendChild(btnBox1);

function createButton(a, b, c) {
    btnList[a] = document.createElement('button');
    var d = btnList[a];
    d.innerText = a;
    d.style.marginTop = currentPos + "px";
    d.style.color = color;
    d.style.background = ground;
    d.style.paddingLeft = paddingLeft;
    d.style.paddingRight = paddingRight;
    d.style.width = '100%';
    d.style.height = '100%';;
    d.addEventListener('click', c);
    b.appendChild(d)
}
var html580ads = {
    init: function(a, c) {
        a = '<h2  id="outle" style="height: 40px; top:-15px; line-height: 30px; padding-left: 5px; font-size: 20px;text-align:center; color:' + color + ";background:" + ground + ';border-bottom: 1px solid #aaaaaa; position: relative; "><b>' + a + '</b><span style="width: 21px; height: 20px;position: absolute; top: 1px; right:30px;"><a id="btn_min" href="javascript:void(0); ">一</a>&nbsp&nbsp<a id="btn_close" href="javascript:void(0);" >X</a></span></h2><div id="mainoutle" style="height:200px; width:300px; overflow: hidden; font-size: 18px; line-height: 18px;text-decoration:underline; color:rgb(195, 66, 255);"><div style="padding:2px;"><b>' + c + "</b></div></div>";
        var b = this;
        c = document.body;
        b.oDiv = document.createElement("div");
        b.oDiv.id = "miaov_float_layer";
        b.oDiv.style.cssText = "border: 1px solid #aaaaaa; display:none;width:300px;";
        c.appendChild(b.oDiv);
        b.oDiv.innerHTML = a;
        var d = document.getElementById("btn_min");
        a = document.getElementById("btn_close");
        b.oDivContent = b.oDiv.getElementsByTagName("div")[0];
        var e = 0;
        c = window.navigator.userAgent.match(/MSIE 6/ig) && !window.navigator.userAgent.match(/MSIE 7|8/ig);
        b.oDiv.style.display = "block";
        e = b.oDivContent.offsetHeight;
        c ? (b.oDiv.style.position = "absolute", b.repositionAbsolute(), window.attachEvent("onscroll", function() {
            b.repositionAbsolute()
        }), window.attachEvent("onresize", function() {
            b.repositionAbsolute()
        })) : (b.oDiv.style.position = "fixed", b.repositionFixed());
        d.timer = null;
        d.isMax = !0;
        d.onclick = function() {
            b.startMove(b.oDivContent, (this.isMax = !this.isMax) ? e : 0, function() {
                d.className = "min" == d.className ? "max" : "min"
            })
        };
        a.onclick = function() {
            b.oDiv.remove()
        }
    },
    startMove: function(a, c, b) {
        a.timer && clearInterval(a.timer);
        var d = this;
        a.timer = setInterval(function() {
            d.doMove(a, c, b)
        }, 30)
    },
    doMove: function(a, c, b) {
        var d = (c - a.offsetHeight) / 8;
        a.offsetHeight == c ? (clearInterval(a.timer), a.timer = null, b && b()) : (d = 0 < d ? Math.ceil(d) : Math.floor(d), a.style.height = a.offsetHeight + d + "px", window.navigator.userAgent.match(/MSIE 6/ig) && 2 == window.navigator.userAgent.match(/MSIE 6/ig).length ? this.repositionAbsolute() : this.repositionFixed())
    },
    repositionFixed: function() {
        this.oDiv.style.right = 0;
        this.oDiv.style.bottom = 0
    },
    repositionAbsolute: function() {
        var a = document.body.scrollTop || document.documentElement.scrollTop,
            c = document.documentElement.clientHeight;
        this.oDiv.style.left = (document.body.scrollLeft || document.documentElement.scrollLeft) + document.documentElement.clientWidth - this.oDiv.offsetWidth + "px";
        this.oDiv.style.top = a + c - this.oDiv.offsetHeight + "px"
    },
    changemsgcss: function() {
        document.getElementById("outle").style.color = color;
        document.getElementById("outle").style.background = ground
    }
};

function alertmsg(a, c) {
    1 == database.alert_flag ? (document.getElementById("btn_close") && html580ads.oDiv.remove(), html580ads.init(a, c)) : $.growl.warning({ title: "警告", message: "你有一条弹窗消息待显示,可弹窗功能未开启!" });
}

function mainoutle(a, c) {
    document.getElementById("mainoutle").style.height = a + "px";
    document.getElementById("mainoutle").style.width = c + "px";
    html580ads.oDiv.style.width = c + "px"
};

GM_xmlhttpRequest({
    method: 'GET',
    url: 'https://v6ym.com/api/gg.php?ver=' + nowversion,
    headers: {
        'User-agent': 'Mozilla/4.0 (compatible) gg',
        'Accept': 'application/atom+xml,application/xml,text/xml',
    },
    onload: function(responseDetails) {
        var gg = responseDetails.responseText;
        database.alert_flag = 1;
        //alertmsg("公告", gg);
    }
});


(function() {
    var e, isInitialized = false,
        _console = {};

    function createElement(a, b) {
        var c = document.createElement(a);
        c.style.cssText = b;
        return c
    }

    function createPanel(a) {
        a.bgColor = a.bgColor || ground;
        a.color = a.color || color;
        a.css = a.css || '';
        a.freeConsole = false;
        var b = createElement('div', 'font-family:Helvetica,Arial,sans-serif;font-size:10px;font-weight:bold;padding:5px;text-align:left;opacity:0.8;position:fixed;left:300px;top:216px;min-width:200px;max-height:50vh;overflow:auto;background:' + a.bgColor + ';color:' + a.color + ';' + a.css);
        b.style.left = 610 + buju + 'px';
        return b
    }

    function log() {
        var c = createElement('div', 'line-height:18px;background:' + (e.children.length % 2 ? 'rgba(255,255,255,0.2)' : ''));
        var d = [].slice.call(arguments).reduce(function(a, b) {
            return a + ' ' + b
        }, '');
        c.textContent = d;
        e.appendChild(c);
        e.scrollTop = e.scrollHeight - e.clientHeight
    }

    function clear() {
        e.innerHTML = ''
    }

    function init(a) {
        if (isInitialized) {
            return
        }
        isInitialized = true;
        a = a || {};
        e = createPanel(a);
        document.body.appendChild(e);
        if (!a.freeConsole) {
            _console.log = console.log;
            _console.clear = console.clear;
            console.log = originalFnCallDecorator(log, 'log');
            console.clear = originalFnCallDecorator(clear, 'clear')
        }
    }

    function destroy() {
        isInitialized = false;
        console.log = _console.log;
        console.clear = _console.clear;
        e.remove()
    }

    function hidelog() {
        e.style.visibility = "hidden"
    }

    function showlog() {
        e.style.visibility = "visible"
    }

    function changecss() {
        e.style.color = color;
        e.style.background = ground
    }

    function checkInitialized() {
        if (!isInitialized) {
            throw 'You need to call `screenLog.init()` first.';
        }
    }

    function checkInitDecorator(a) {
        return function() {
            checkInitialized();
            return a.apply(this, arguments)
        }
    }

    function originalFnCallDecorator(a, b) {
        return function() {
            a.apply(this, arguments);
            if (typeof _console[b] === 'function') {
                _console[b].apply(console, arguments)
            }
        }
    }
    window.screenLog = {
        init: init,
        log: originalFnCallDecorator(checkInitDecorator(log), 'log'),
        clear: originalFnCallDecorator(checkInitDecorator(clear), 'clear'),
        destroy: checkInitDecorator(destroy),
        hidelog: checkInitDecorator(hidelog),
        showlog: checkInitDecorator(showlog),
        changecss: checkInitDecorator(changecss)
    }
})();
//----菜单区域结束----
//----函数区域开始----
function Test() {

}

function toNext() { //下一题点击
    document.getElementsByClassName("next ui button")[0].click();
}

function toSubmit() { //提交点击

}

function onLoad() { //进入答题页面初始化
    nowAnswer = $(".progress").text().split("/")[0];
    totalAnswer = $(".progress").text().split("/")[1]
}

function onEnd() {

}

function getSubject() {
    thisSubject = $(".q-content").text()
}

function getQuery() { //查询
    var tm = thisSubject;
    $.growl.notice({ title: "正在查询题目~", message: "当前第" + nowAnswer + "题   共有" + totalAnswer + "题" });
    GM_xmlhttpRequest({
        method: 'POST',
        url: "https://v6ym.com/api/api.php",
        data: 'q=' + tm + '&ver=' + nowversion + '&key=' + key,
        headers: {
            'Content-type': 'application/x-www-form-urlencoded',
        },
        onload: function(responseDetails) {
            var obj = JSON.parse(responseDetails.responseText);
            thisAnswer = obj.msg;
            $.growl({ title: "第" + nowAnswer + "题答案:", message: thisAnswer });
        }
    });
}

function setSubject() {

    var exist = document.getElementsByClassName('option2 correct').length
    var q1 = $(".q-content").text().split("、")[1]
    var lx = $(".q-content").text().split("、")[0]
    var dd

    switch (exist) {
        case 1:
            var tAnswer1 = document.getElementsByClassName('option2 correct')[0].innerText.split("、")[1];
            dd = tAnswer1
            break;
        case 2:
            var tAnswer1 = document.getElementsByClassName('option2 correct')[0].innerText.split("、")[1];
            var tAnswer2 = document.getElementsByClassName('option2 correct')[1].innerText.split("、")[1];
            dd = tAnswer1 + '→' + tAnswer2
            break;
        case 3:
            var tAnswer1 = document.getElementsByClassName('option2 correct')[0].innerText.split("、")[1];
            var tAnswer2 = document.getElementsByClassName('option2 correct')[1].innerText.split("、")[1];
            var tAnswer3 = document.getElementsByClassName('option2 correct')[2].innerText.split("、")[1];
            dd = tAnswer1 + '→' + tAnswer2 + '→' + tAnswer3
            break;
        case 4:
            var tAnswer1 = document.getElementsByClassName('option2 correct')[0].innerText.split("、")[1];
            var tAnswer2 = document.getElementsByClassName('option2 correct')[1].innerText.split("、")[1];
            var tAnswer3 = document.getElementsByClassName('option2 correct')[2].innerText.split("、")[1];
            var tAnswer4 = document.getElementsByClassName('option2 correct')[3].innerText.split("、")[1];
            dd = tAnswer1 + '→' + tAnswer2 + '→' + tAnswer3 + '→' + tAnswer4
            break;
        default:
            dd = '写入失败了,因为没有找到正确答案'
            break;
    }

    GM_xmlhttpRequest({
        method: 'POST',
        url: "https://v6ym.com/api/xr.php",
        data: 'tm=' + q1 + '&lx=' + lx + '&da=' + dd,
        headers: {
            'Content-type': 'application/x-www-form-urlencoded',
        },
        onload: function(responseDetails) {
            var fh = responseDetails.responseText
            $.growl({ title: "写入结果:", message: "第" + nowAnswer + "题:" + fh });
        }
    });

}

function getAnswerOption() { //遍历每个选项,直到与传入的答案匹配      将答案作为一整个字符串,通过indexof获取答案是否存与答案中~这样即使多选题也可以判断并选择
    var xx1 = $(".option:first").text();
    var xx2 = $(".option:eq(1)").text();
    var xx3 = $(".option:eq(2)").text();
    var xx4 = $(".option:eq(3)").text();
var jjjs=0;
    if(thisAnswer==null){
         error=error+"\n第"+nowAnswer+"题暂无答案"
    }
    if (thisAnswer.indexOf(xx1) >= 0) { //判断第1个选项中的答案是否在答案中
        if($(".option:eq(0)").children("input").is(':checked')) {
    // do something
}else{
 $(".option:eq(0)").children("input").click();
}
        jjjs++;
    }
    if (thisAnswer.indexOf(xx2) >= 0) { //判断第2个选项中的答案是否在答案中
        if($(".option:eq(1)").children("input").is(':checked')) {
    // do something
}else{
 $(".option:eq(1)").children("input").click();
}
        jjjs++;
    }
    if (thisAnswer.indexOf(xx3) >= 0) { //判断第3个选项中的答案是否在答案中
          if($(".option:eq(2)").children("input").is(':checked')) {
    // do something
}else{
 $(".option:eq(2)").children("input").click();
}
        jjjs++;
    }
    if (thisAnswer.indexOf(xx4) >= 0) { //判断第4个选项中的答案是否在答案中
           if($(".option:eq(3)").children("input").is(':checked')) {
    // do something
}else{
 $(".option:eq(3)").children("input").click();
}
        jjjs++;
    }
  if (thisAnswer.indexOf(xx1) < 0 && thisAnswer.indexOf(xx2) < 0 && thisAnswer.indexOf(xx3) < 0 && thisAnswer.indexOf(xx4) < 0) {
        $.growl.error({ title: "第" + nowAnswer + "题答题错误", message: "原因是:服务器返回的结果不与选项值匹配" });
//	error=error+","+nowAnswer+"题需要手动查询"

    }
    if(jjjs==0){
        error=error+"\n第"+nowAnswer+"题需要手动查询"
    }

    if ($(".option:eq(3)").text() != $(".option:last")) { //判断第四个选项是否为最后一个选项,如果不是则代表有多个选项。
        var xx5 = $(".option:eq(4)").text();
        if (thisAnswer.indexOf(xx5) >= 0) { //判断第5个选项中的答案是否在答案中
            $(".option:eq(4)").children("input").click();
        }
    }


}

function getChoice() { //选择答案

}


function liucheng() {
    nowAnswer = $(".progress").text().split("/")[0];
    totalAnswer = $(".progress").text().split("/")[1]
    setTimeout(() => {
        onLoad()
    }, 0);
    setTimeout(() => {
        getSubject()
    }, 0);
    setTimeout(() => {
        getQuery()
    }, 100);
    setTimeout(() => {
        getAnswerOption()
    }, 1000);
    setTimeout(() => {
        toNext()
    }, 1000);
    if (nowAnswer == totalAnswer) {
        clearInterval(lc)
        $("button:contains('题号选择')").click()
        setTimeout(() => {
            $.growl.warning({ title: "答题结束", message: "程序答题已完成!部分题目可能无法查询到,请根点击红色位置自行作答!" });
            showMenu()

                alert(error)


        }, 1000);


    }

}

var lc

function start() {
    $.growl.warning({ title: "操作提示", message: "程序正在自动答题,已隐藏菜单,答题结束后会显示。" });
    $("button:contains('开始答题')").hide()
    $("button:contains('暂停答题')").hide()
    $("button:contains('手动查询')").hide()
    $("button:contains('隐藏菜单')").hide()
    lc = setInterval(liucheng, 1500);
}

function stop() {
    clearInterval(lc)
    $.growl.warning({ title: "操作提示:", message: "已暂停!" });
}

function Test4() {

    //var tall = prompt("请输入题库密码","");
    var panduan = true
    var num = 0
    var zts = 100

    if (panduan == true) {
        var div = document.querySelector(".q-content").getElementsByTagName('div');
        var th = div[div.length - 1].id
        var lx = document.querySelector(".type").innerText
        var szth = th.replace(/[^\d]/g, '');
        $.growl.notice({ title: "题号:" + th, message: "题目类型:" + lx });

        var xuan1 = document.getElementById("qs_" + szth + "_1").click();
        document.getElementsByClassName("next ui button")[0].click();
    } else {

    }


}
var lc1

function starttest() {
    lc1 = setInterval(Test4, 500);
}

function stoptest() {
    clearInterval(lc1)
    $.growl.warning({ title: "操作提示", message: "已暂停!" });
}

function appendTMenu() { //菜单绘制
    //screenLog.init();
    // screenLog.log('Auto v' + nowversion + '');
    // screenLog.log('------------------程序日志------------------');

}

function noAuto() {
    getSubject()
    var tm = thisSubject;
    $.growl.notice({ title: "正在查询题目~", message: "本题题目:" + tm });
    GM_xmlhttpRequest({
        method: 'POST',
        url: "https://v6ym.com/api/api.php",
        data: 'q=' + tm + '&ver=' + nowversion + '&key=' + key,
        headers: {
            'Content-type': 'application/x-www-form-urlencoded',
        },
        onload: function(responseDetails) {
            var obj = JSON.parse(responseDetails.responseText);
            thisAnswer = obj.msg;
            $.growl({ title: "本题答案:", message: thisAnswer });
        }
    });
}

function hideMenu() {
    $("button:contains('开始答题')").hide()
    $("button:contains('暂停答题')").hide()
    $("button:contains('手动查询')").hide()
    $("button:contains('隐藏菜单')").hide()
    $.growl.warning({ title: "操作提示", message: "菜单已经隐藏!按下回车可见" });
    $(document).keydown(function(event) {
        if (event.keyCode == 13) {
            showMenu()
        }
    });


}

function showMenu() {
    $("button:contains('开始答题')").show()
    $("button:contains('暂停答题')").show()
    $("button:contains('手动查询')").show()
    $("button:contains('隐藏菜单')").show()
    $.growl.notice({ title: "操作提示", message: "菜单已不再隐藏!" });
}

function initialization() {
    //----程序运行初始化----

    appendTMenu(); //菜单初始化
    createButton('开始答题', btnBox2, start);
    createButton('暂停答题', btnBox2, stop);
    createButton('手动查询', btnBox2, noAuto);
    createButton('隐藏菜单', btnBox2, hideMenu);
    //createButton('写入题目', btnBox2, setSubject);
    //createButton('瞎选题目', btnBox2, starttest);
    //createButton('停止瞎选', btnBox2, stoptest);
    //----程序运行初始化----
}
//----函数区域结束----

//====通知js
// Generated by CoffeeScript 1.10.0

/*
jQuery Growl
Copyright 2015 Kevin Sylvestre
1.3.2
 */

(function() {
    "use strict";
    var $, Animation, Growl,
        bind = function(fn, me) { return function() { return fn.apply(me, arguments); }; };

    $ = jQuery;

    Animation = (function() {
        function Animation() {}

        Animation.transitions = {
            "webkitTransition": "webkitTransitionEnd",
            "mozTransition": "mozTransitionEnd",
            "oTransition": "oTransitionEnd",
            "transition": "transitionend"
        };

        Animation.transition = function($el) {
            var el, ref, result, type;
            el = $el[0];
            ref = this.transitions;
            for (type in ref) {
                result = ref[type];
                if (el.style[type] != null) {
                    return result;
                }
            }
        };

        return Animation;

    })();

    Growl = (function() {
        Growl.settings = {
            namespace: 'growl',
            duration: 3200,
            close: "&#215;",
            location: "default",
            style: "default",
            size: "medium",
            delayOnHover: true
        };

        Growl.growl = function(settings) {
            if (settings == null) {
                settings = {};
            }
            this.initialize();
            return new Growl(settings);
        };

        Growl.initialize = function() {
            return $("body:not(:has(#growls))").append('<div id="growls" />');
        };

        function Growl(settings) {
            if (settings == null) {
                settings = {};
            }
            this.container = bind(this.container, this);
            this.content = bind(this.content, this);
            this.html = bind(this.html, this);
            this.$growl = bind(this.$growl, this);
            this.$growls = bind(this.$growls, this);
            this.animate = bind(this.animate, this);
            this.remove = bind(this.remove, this);
            this.dismiss = bind(this.dismiss, this);
            this.present = bind(this.present, this);
            this.waitAndDismiss = bind(this.waitAndDismiss, this);
            this.cycle = bind(this.cycle, this);
            this.close = bind(this.close, this);
            this.click = bind(this.click, this);
            this.mouseLeave = bind(this.mouseLeave, this);
            this.mouseEnter = bind(this.mouseEnter, this);
            this.unbind = bind(this.unbind, this);
            this.bind = bind(this.bind, this);
            this.render = bind(this.render, this);
            this.settings = $.extend({}, Growl.settings, settings);
            this.$growls().attr('class', this.settings.location);
            this.render();
        }

        Growl.prototype.render = function() {
            var $growl;
            $growl = this.$growl();
            this.$growls().append($growl);
            if (this.settings.fixed) {
                this.present();
            } else {
                this.cycle();
            }
        };

        Growl.prototype.bind = function($growl) {
            if ($growl == null) {
                $growl = this.$growl();
            }
            $growl.on("click", this.click);
            if (this.settings.delayOnHover) {
                $growl.on("mouseenter", this.mouseEnter);
                $growl.on("mouseleave", this.mouseLeave);
            }
            return $growl.on("contextmenu", this.close).find("." + this.settings.namespace + "-close").on("click", this.close);
        };

        Growl.prototype.unbind = function($growl) {
            if ($growl == null) {
                $growl = this.$growl();
            }
            $growl.off("click", this.click);
            if (this.settings.delayOnHover) {
                $growl.off("mouseenter", this.mouseEnter);
                $growl.off("mouseleave", this.mouseLeave);
            }
            return $growl.off("contextmenu", this.close).find("." + this.settings.namespace + "-close").off("click", this.close);
        };

        Growl.prototype.mouseEnter = function(event) {
            var $growl;
            $growl = this.$growl();
            return $growl.stop(true, true);
        };

        Growl.prototype.mouseLeave = function(event) {
            return this.waitAndDismiss();
        };

        Growl.prototype.click = function(event) {
            if (this.settings.url != null) {
                event.preventDefault();
                event.stopPropagation();
                return window.open(this.settings.url);
            }
        };

        Growl.prototype.close = function(event) {
            var $growl;
            event.preventDefault();
            event.stopPropagation();
            $growl = this.$growl();
            return $growl.stop().queue(this.dismiss).queue(this.remove);
        };

        Growl.prototype.cycle = function() {
            var $growl;
            $growl = this.$growl();
            return $growl.queue(this.present).queue(this.waitAndDismiss());
        };

        Growl.prototype.waitAndDismiss = function() {
            var $growl;
            $growl = this.$growl();
            return $growl.delay(this.settings.duration).queue(this.dismiss).queue(this.remove);
        };

        Growl.prototype.present = function(callback) {
            var $growl;
            $growl = this.$growl();
            this.bind($growl);
            return this.animate($growl, this.settings.namespace + "-incoming", 'out', callback);
        };

        Growl.prototype.dismiss = function(callback) {
            var $growl;
            $growl = this.$growl();
            this.unbind($growl);
            return this.animate($growl, this.settings.namespace + "-outgoing", 'in', callback);
        };

        Growl.prototype.remove = function(callback) {
            this.$growl().remove();
            return typeof callback === "function" ? callback() : void 0;
        };

        Growl.prototype.animate = function($element, name, direction, callback) {
            var transition;
            if (direction == null) {
                direction = 'in';
            }
            transition = Animation.transition($element);
            $element[direction === 'in' ? 'removeClass' : 'addClass'](name);
            $element.offset().position;
            $element[direction === 'in' ? 'addClass' : 'removeClass'](name);
            if (callback == null) {
                return;
            }
            if (transition != null) {
                $element.one(transition, callback);
            } else {
                callback();
            }
        };

        Growl.prototype.$growls = function() {
            return this.$_growls != null ? this.$_growls : this.$_growls = $('#growls');
        };

        Growl.prototype.$growl = function() {
            return this.$_growl != null ? this.$_growl : this.$_growl = $(this.html());
        };

        Growl.prototype.html = function() {
            return this.container(this.content());
        };

        Growl.prototype.content = function() {
            return "<div class='" + this.settings.namespace + "-close'>" + this.settings.close + "</div>\n<div class='" + this.settings.namespace + "-title'>" + this.settings.title + "</div>\n<div class='" + this.settings.namespace + "-message'>" + this.settings.message + "</div>";
        };

        Growl.prototype.container = function(content) {
            return "<div class='" + this.settings.namespace + " " + this.settings.namespace + "-" + this.settings.style + " " + this.settings.namespace + "-" + this.settings.size + "'>\n  " + content + "\n</div>";
        };

        return Growl;

    })();

    this.Growl = Growl;

    $.growl = function(options) {
        if (options == null) {
            options = {};
        }
        return Growl.growl(options);
    };

    $.growl.error = function(options) {
        var settings;
        if (options == null) {
            options = {};
        }
        settings = {
            title: "Error!",
            style: "error"
        };
        return $.growl($.extend(settings, options));
    };

    $.growl.notice = function(options) {
        var settings;
        if (options == null) {
            options = {};
        }
        settings = {
            title: "Notice!",
            style: "notice"
        };
        return $.growl($.extend(settings, options));
    };

    $.growl.warning = function(options) {
        var settings;
        if (options == null) {
            options = {};
        }
        settings = {
            title: "Warning!",
            style: "warning"
        };
        return $.growl($.extend(settings, options));
    };

}).call(this);
//通知js结束
//----程序启动验证----
let script = document.createElement('link');
script.setAttribute('rel', 'stylesheet');
script.setAttribute('type', 'text/css');
script.href = "https://static.runoob.com/assets/jquery/jquery.growl/stylesheets/jquery.growl.css";
document.documentElement.appendChild(script);
key = prompt("请输入您的程序使用密钥(密钥请在网站生成!)", "");
GM_xmlhttpRequest({
    method: 'GET',
    url: 'https://v6ym.com/api/yz.php?ver=' + nowversion + '&key=' + key,
    headers: {
        'User-agent': 'Mozilla/4.0 (zys) login.get',
        'Accept': 'application/atom+xml,application/xml,text/xml',
    },
    onload: function(responseDetails) {
        var fhz = responseDetails.responseText;
        database.alert_flag = 1;
        if (fhz == 'ok') {
            $.growl.notice({ title: "欢迎使用", message: "账号状态正常!" });
            initialization()
            gg();
            cstz();
        } else {
            if (fhz == '脚本版本与服务器不匹配,请更新最新版本') {
                $.growl.error({ title: "错误", message: fhz });
                $.growl.warning({ title: "提示", message: "两秒钟后将会跳转到更新页面" });
                setTimeout(() => {
                    window.location.href = "https://gf.qytechs.cn/zh-CN/scripts/437742";
                }, 2000);

            } else {
                $.growl.error({ title: "错误", message: fhz });
                $.growl.warning({ title: "警告", message: "由于密钥验证失败两秒后重载页面" });
                setTimeout(() => {
                    document.location.reload();
                }, 2000);

            }
        }
    }
});

function cstz() {
    GM_xmlhttpRequest({
        method: 'GET',
        url: 'https://v6ym.com/api/jl.php?key='+key,
        headers: {
            'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
            'Accept': 'application/atom+xml,application/xml,text/xml',
        },
        onload: function(responseDetails) {
            var jl = responseDetails.responseText;
            database.alert_flag = 1;

            $.growl.notice({ title: "账号记录", message: jl });
        }
    });
}

function gg() {
    GM_xmlhttpRequest({
        method: 'GET',
        url: 'https://v6ym.com/api/gg.php?ver=',
        headers: {
            'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
            'Accept': 'application/atom+xml,application/xml,text/xml',
        },
        onload: function(responseDetails) {
            var gg = responseDetails.responseText;
            database.alert_flag = 1;

            $.growl.notice({ title: "公告", message: gg });
        }
    });
}
//----程序启动验证结束----

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址