企业微信阅读小助手

try to take over the world!

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         企业微信阅读小助手
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  try to take over the world!
// @author       other_pp
// @match        https://lexiangla.com/teams/*
// @match        http://127.0.0.1:8848/*
// @grant        GM_xmlhttpRequest
// @connect      vip.mms.insistzyw.top
// @connect      *
// @grant        GM_download
// @require      https://cdn.bootcss.com/jquery/3.4.1/jquery.js
// ==/UserScript==

//速度默认7秒
(function () {
    'use strict';
    let gloab = {
        username: '',
        time: 0,
        status: '未开始做题',
        key: '',
        servicestatus: '未运行',
        speed: 7,
        index: 1,
        event_interval: null,
        url: "http://47.102.113.125:29987"
    }
    //获取题目
    function getQuestion(index) {
        let title = $('div.title:eq(' + index + ')').text();
        if(!title)
            return '';
        return title.match(/[^0-9.。]+/)[0];
    }
    //获取对应题目的选项列表
    function getQuestionOption(index) {
        let answer = $('div.title:eq(' + index + ') + ul').text();
        return answer.match(/[^\sa-zA-Z.]+/ig)
    }
    //根据题目和答案选中答案 题目的下标从1开始 选项的下标从0开始
    function checkedAnswer(qindex, oindex) {
        $('div.title:eq(' + qindex + ') + ul input:eq(' + oindex + ')').click();
    }

    //插入用户面板
    function questionGui() {
        let css = "position:fixed;left:0px;top:300px;background-color:#AEDD81;box-shadow: 4px 4px 8px #888888;z-index:9999;width:222px;height:200px";
        let html_text = "";
        html_text += "<div style=\"font-size: 15px;color: white;font-weight: bold;text-align: center;\">企业微信阅读小助手</div>";
        html_text += "<div id=\"myform\" style=\"margin: 2px 2px;\"></div>";
        html_text += "<label>用户名:</label>";
        html_text += "<input type=\"text\" id=\"qq_username\" name=\"username\" style=\"width:150px;color: dimgray;\">";
        html_text += "<label>密&nbsp;&nbsp;&nbsp;钥:</label>";
        html_text += "<input type=\"text\" id=\"qq_key\" name=\"key\" style=\"width:150px\">";
        html_text += "<label>服务器状态:<span id=\"SevStatus\" style=\"color: red;\">未连接</span></label>";
        html_text += "<div>剩余使用数量:<span id=\"use_time\">0</span></div>"
        html_text += "<div>匹配进度:<span id=\"qq_ffs\">0</span></div>";
        html_text += "<div>";
        html_text += "<label>当前状态:";
        html_text += "<button id=\"qq_status\">开始做题</button>";
        html_text += "</label>";
        html_text += "<div>提示:<span id=\"qq_title\" style=\"color:red;\">无</span></div>";
        html_text += "<div style=\"color: dodgerblue;\">点击进行注册</div>";
        html_text += "</div>";
        html_text += "</div>";
        let html = "<div style=\"" + css + "\">" + html_text + "</div>";
        html_text += "</div>";
        $('body').append(html);
    }
    //开始做题
    function start() {
        //尝试获取题目
        let question = getQuestion(1);
        //判断是否在答题界面
        if (question == '') {
            $("#qq_title").text("当前不在答题界面!");
            return;
        }
        $("#qq_status").text("暂停做题");
        //开始答题
        getServiceInForMation();
        //判断剩余次数
        setTimeout(function (){
            let use_time = Number($('#use_time').text())
        if(use_time>0){
            gloab.event_interval = setInterval(toServerGetAnswer, gloab.speed * 1000);
        }
        }, 400);

    }
    //向服务器端请求
    function toServerGetAnswer() {
        let qes = getQuestion(gloab.index);
        let index = gloab.index;
        let an = '';
        let qq_username = $('#qq_username').val();
        let key = $('#qq_key').val();
        console.log(qq_username, key);
        GM_xmlhttpRequest({
            method: "get",
            url: gloab.url + "/vsp-hpp/getAnswer?username=" + qq_username + "&key=" + key + "&question=" + qes,
            onload: function (res) {
                $("#SevStatus").text("在线中");
                var obj = JSON.parse(res.response);
                //成功获取答案,开始选择答案
                if (obj.code == 200) {
                    $('#qq_title').text(obj.msg);
                    an = obj.data;
                    if (!an) {
                        $('#qq_title').text("这题没有答案噢!");
                        return;
                    }
                    let list = getQuestionOption(index);
                    for (var i = 0; i < list.length; i++) {
                        if (an.indexOf(list[i]) != -1) {
                            checkedAnswer(index, i);
                        }
                    }
                } else {
                    $('#qq_title').text(obj.msg);
                }
            }
        });
        //每隔20次重新获取状态
        if (gloab.index % 20 == 0) {
            getServiceInForMation();
        }
        if (index == 100) {
            clearInterval(gloab.event_interval);
            $("qq_ffs").text("已经暂停");
        }
        gloab.index = gloab.index + 1;
        $("#qq_ffs").text(index);
        return 1;
    }
    //停止做题
    function stop() {
        $("#qq_status").text("开始做题");
        clearInterval(gloab.event_interval);
    }
    //插入成功后开始绑定事件
    function bindUserTap() {
        $("#qq_status").bind("click", function () {
            console.log($("#qq_status").text());
            if ($("#qq_status").text() == "开始做题") {
                start();
            } else {
                stop();
            }
        })
        $("#qq_username").bind("input propertychange", function () {
            gloab.username = $("#qq_username").val();
        })
    }

    //做题前初始化
    function init() {
        questionGui();
        bindUserTap();
    }

    init();

    //当前服务器状态和个人用户信息
    function getServiceInForMation() {
        let qq_username = $('#qq_username').val();
        let key = $('#qq_key').val();
        GM_xmlhttpRequest({
            method: "get",
            url: gloab.url + "/vsp-hpp/getServerstatus?username=" + qq_username + "&key=" + key,
            onload: function (obj) {
                var res = JSON.parse(obj.response);
                if (!res.code) {
                    $("SevStatus").text("断开连接");
                    $("#qq_title").text("脚本暂时不可用");
                }
                if (res.code == 200) {
                    if(!res.data){
                        $("#use_time").text(0);
                    }else{
                        $("#use_time").text(res.data.use_time);
                    }

                    $("#SevStatus").text("已连接");
                    $("#qq_title").text("连接状态正常");
                } else {
                    $("#use_time").text(0);
                    $("#SevStatus").text("已连接");
                    $("#qq_title").text("请先注册");
                }
            }
        });
    }
})();