Greasy Fork

icve-helper

icve-funs

目前为 2020-04-02 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.cloud/scripts/399050/787243/icve-helper.js

// ==UserScript==
// @name         	icve-helper
// @namespace    	[email protected]
// @version      	1.0.0
// @description  	icve-funs
// @author       	AI_童话
// @grant           GM_xmlhttpRequest
// ==/UserScript==

// 常用url
let urls = {
    login: 'https://zjy2.icve.com.cn/api/common/login/login',
    // verifyCode: 'https://zjy2.icve.com.cn/api/common/VerifyCode/index?t=',
    myHomework_getMyHomeworkList: 'https://zjy2.icve.com.cn/api/student/myHomework/getMyHomeworkList',
    homework_detail: 'https://security.zjy2.icve.com.cn/api/study/homework/detail',
    homework_history: 'https://security.zjy2.icve.com.cn/api/study/homework/history'
};

/** 向控制台输出 hello world!
 * @method hello
 */
function hello() {
    console.log("hello world");
}


/** 获取网站的jQuery, 并添加自己的函数
 * @method getjQuery
 * @param window unsafewindow
 * @returns $
 */
function getjQuery(window) {

    /** 等待元素出现
     *  @method wait
     *  @param func 找到元素后执行
     *  @param times 检测次数 -1 一直检测
     *  @param interval 检测间隔 默认20s
     */
    window.jQuery.fn.wait = function (func, times, interval) {
        var _times = times || -1, // 100次
            _interval = interval || 20, // 20毫秒每次
            _self = this,
            _selector = this.selector, // 选择器
            _iIntervalID; // 定时器id
        if (this.length) { // 如果已经获取到了,就直接执行函数
            func && func.call(this);
        } else {
            _iIntervalID = setInterval(function () {
                if (!_times) { // 是0就退出
                    clearInterval(_iIntervalID);
                }
                _times <= 0 || _times--; // 如果是正数就 --

                _self = $(_selector); // 再次选择
                if (_self.length) { // 判断是否取到
                    func && func.call(_self);
                    clearInterval(_iIntervalID);
                }
            }, _interval);
        }
    }

    return window.jQuery;
}


/* 
* 职教云作业解封文本限制 @tuChanged
*/
function uncageCopyLimit() {
    let arr = ["oncontextmenu", "ondragstart", "onselectstart", "onselect", "oncopy", "onbeforecopy"]
    for (let i of arr)
        $(".hasNoLeft").attr(i, "return true")
    console.log("已成功复制解除限制,📣如果您有软件定制(管理系统,APP,小程序等),毕设困扰,又或者课程设计困扰等欢迎联系,价格从优,源码调试成功再付款💰,实力保证,包远程,包讲解 QQ:2622321887")
}


// 学生
class Student {
    constructor(userName, userPwd) {
        this.userName = userName;
        this.userPwd = userPwd;
    }

    // 登录
    login() {
        return new Promise((resolve, reject) => {
            // let verifyCode = $('[name=photoCode]')[0].value;
            // console.log(verifyCode);
            GM_xmlhttpRequest({
                method: 'POST',
                url: urls.login,
                headers: {
                    'Content-type': 'application/x-www-form-urlencoded'
                },
                data: 'userName=' + this.userName +
                    '&userPwd=' + this.userPwd + 
                    '&verifyCode=' + ''
                ,
                timeout: setting.time,
                onload: function (xhr) {
                    if (xhr.status == 200) {
                        let obj = JSON.parse(xhr.responseText);
                        resolve(obj);
                    }
                }
            });
        });
    }

    // 获取我的作业列表
    getMyHomeworkList(unprocessed) {
        return new Promise((resolve, reject) => {
            let that = this;		// 防止this 丢失
            GM_xmlhttpRequest({
                url: urls.myHomework_getMyHomeworkList,
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                },
                data: 'unprocessed=' + unprocessed || 0,
                timeout: setting.timeout,
                onload: (xhr) => {
                    if (xhr.status == 200) {
                        var obj = JSON.parse(xhr.responseText);
                        that.hmwrkList = obj.list;				// list
                        resolve(that.hmwrkList);
                    }
                }
            });
        });
    }

    // 不写了  累
    getDetail(hmwrk) {
        if (hmwrk instanceof HomeWork) {

        }
    }

    getHistory(hmwrk) {
        if (hmwrk instanceof HomeWork) {

        }
    }
}

// 我 是 学生
class I extends Student {
    constructor(userName, userPwd) {
        super(userName, userPwd);
    }

    // 获取我的试卷信息
    getPerivewInfo() {
        let courseOpenId = $('[name=courseOpenId]')[0].value;
        let openClassId = $('[name=openClassId]')[0].value;
        let homeWorkId = $('[name=homeworkId]')[0].value;
        let hkTermTimeId = ($('[name=hkTermTimeId]')[0] || $('[name=homeworkTermTimeId]')[0]).value;
        this.hmwrk = new HomeWork(courseOpenId, openClassId, homeWorkId, hkTermTimeId);		// 获取我的作业信息
        return this.hmwrk;
    }

    copy(hmwrk) {
        if (!(hmwrk instanceof HomeWork)) {
            return '不是作业没办法复制呢!';
        }
        fillAnswer(hmwrk.history);
    }
}

// 我朋友 是 学生
class MyFriend extends Student {
    constructor(userName, userPwd) {
        super(userName, userPwd);
    }

    // 我的朋友帮助我
    async helpWith(hmwrk) {
        console.log(hmwrk);
        if (!(hmwrk instanceof HomeWork)) {							// 如果是 HomeWork
            return '数据类型错误!';									 // 传过来的不是作业
        }

        console.log(await this.getMyHomeworkList());			    // 获取我的作业列表 hmwrkList

        let isfndCourse = false;									// 是否找到课程
        for (let i = 0; i < this.hmwrkList.length; i++) {
            let hk = this.hmwrkList[i];
            if (hk.courseOpenId == hmwrk.courseOpenId) {
                isfndCourse = true;									// 找到相应课程
                this.hmwrkList = hk.homeworkList;					// 根据courseOpenId 获取 homeworkList
                break;
            }
        }

        if (!isfndCourse) {											// 如果找到相应 课程
            return '你们没有报名相同的课程.';
        }

        let isfndHmwrk = false;										// 是否找该作业

        for (let i = 0; i < this.hmwrkList.length; i++) {
            let hk = this.hmwrkList[i];
            if (hk.homeworkId == hmwrk.homeWorkId) {
                isfndHmwrk = true;
                if (!hk.stuHomeworkCount) return '该学生还未做答!';		// 如果作答次数为0, 直接返回

                // 朋友的作业
                this.hmwrk = new HomeWork(hk.courseOpenId, hk.openClassId, hk.homeWorkId,
                    hk.hkTermTimeId)
                    ;

                this.hmwrk.info = hk;									// 朋友作业的官方信息
                await this.hmwrk.getDetail();							// 朋友获取作业的详细
                console.log(await this.hmwrk.getHistory());				// 朋友获取作答记录
                return '成功获取朋友的作业.';
            }
        }

        return '你的朋友没有这个作业!';
    }
}

// 作业
class HomeWork {
    constructor(courseOpenId, openClassId, homeWorkId, hkTermTimeId) {
        this.courseOpenId = courseOpenId;
        this.openClassId = openClassId;
        this.homeWorkId = homeWorkId;			// 作业id
        this.hkTermTimeId = hkTermTimeId;
    }


    // 获取该作业的详细信息  homeworkStulist
    getDetail() {
        return new Promise((resolve, reject) => {
            GM_xmlhttpRequest({
                method: 'POST',
                url: urls.homework_detail,
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                },
                data: 'courseOpenId=' + this.info.courseOpenId +
                    '&openClassId=' + this.info.openClassId +
                    '&homeworkId=' + this.info.homeworkId +
                    '&hkTermTimeId=' + this.info.hkTermTimeId
                // '&dtype=1&viewType=2&unprocessed=0'
                ,
                timeout: setting.time,
                onload: xhr => {
                    if (xhr.status == 200) {
                        this.detail = JSON.parse(xhr.responseText);
                        resolve(this.detail);
                    }
                }
            });
        })

    }

    // 根据 stuHomeworkId 获取 批过的试卷
    getHistory() {
        return new Promise((resolve, reject) => {
            let index = this.detail.homeworkStulist.length - 1;		// 最后一次提交
            console.log(this.detail.homeworkStulist);

            GM_xmlhttpRequest({
                method: 'POST',
                url: urls.homework_history,
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                },
                data: 'courseOpenId=' + this.detail.courseOpenId +
                    '&homeWorkId=' + this.detail.homeworkId +
                    '&studentWorkId=' + this.detail.homeworkStulist[index].Id
                ,
                timeout: setting.time,
                onload: xhr => {
                    if (xhr.status == 200) {
                        this.history = JSON.parse(xhr.responseText);
                        resolve(this.history);
                    }
                }
            });
        })
    }
}