Rush Lecture

【深圳大学2020级新生专用/使用前请看使用说明】可用于抢领航讲座,由于无法进行测试,大家请抱着试用的心态使用该脚本。

目前为 2020-12-25 提交的版本。查看 最新版本

// ==UserScript==
// @name         Rush Lecture
// @name:en      Rush Lecture
// @namespace    http://tampermonkey.net/
// @version      0.5.4
// @description  【深圳大学2020级新生专用/使用前请看使用说明】可用于抢领航讲座,由于无法进行测试,大家请抱着试用的心态使用该脚本。
// @description:en 【深圳大学2020级新生专用/使用前请看使用说明】可用于抢领航讲座,由于无法进行测试,大家请抱着试用的心态使用该脚本。
// @author       cc
// @match        http://lecture.szu.edu.cn/*
// @require      https://gf.qytechs.cn/scripts/418193-coder-utils.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    const IS_LIHU_AREA = false;
    utils.space.area = ['粤海校区', '沧海校区'];
    function getStartTime() {
        let now = new Date();
        let year = now.getFullYear();
        let month = now.getMonth() + 1;
        let day = now.getDate();
        let startTime = new Date(`${year}-${month}-${day} 12:30:00`);
        return startTime.getTime();
    };
    function searchLecture() {
        delete utils.response;
        let listUrl = 'http://lecture.szu.edu.cn/tLectureSignUp/list?page=1&limit=10';
        utils.sendRequest(listUrl);
        (function waitListResponse() {
            if (utils.response) {
                let firstLecture = utils.response['data'][0];
                delete utils.response;
                if (firstLecture.status == '正在报名中') {
                    let signUpUrl = `http://lecture.szu.edu.cn/lectureClassroomSignUp/list?page=1&limit=20&lectureId=${firstLecture.id}`;
                    utils.sendRequest(signUpUrl);
                    (function waitSignUpResponse() {
                        if (utils.response) {
                            let reservedSeats = utils.response['data'];
                            delete utils.response;
                            let availableReservedSeats = [];
                            for (let reservedSeat of reservedSeats) {
                                if (utils.space.area.includes(reservedSeat.campus)) {
                                    availableReservedSeats.push(reservedSeat);
                                };
                            };
                            if (availableReservedSeats.length > 0) {
                                utils.space.availableReservedSeats = availableReservedSeats;
                                utils.space.seatIndex = 0;
                                utils.space.unfilledCount = 0;
                                signUpLecture(utils.space.availableReservedSeats, utils.space.seatIndex);
                            } else {
                                console.warn('所在校区没有开设讲座 (code: 2)');
                            };
                        } else {
                            setTimeout(waitSignUpResponse, 50);
                        };
                    })();
                } else if (firstLecture.status == '报名待启动') {
                    let currentTime = new Date().getTime();
                    let startTime = getStartTime();
                    if (Math.abs(currentTime - startTime) < 3 * 1000) {
                        utils.space.reload();
                    } else {
                        console.warn('最新的领航讲座目前不可报名 (code: 1)');
                    };
                } else {
                    console.warn('最新的领航讲座目前不可报名 (code: 0)');
                };
            } else {
                setTimeout(waitListResponse, 50);
            };
        })();
    };
    function signUpLecture(seats, index) {
        console.log(seats, index);
        if (index >= seats.length) {
            if (utils.space.unfilledCount > 0)
                searchLecture();
            else
                console.warn('讲座的所有场次已满,报名失败 (code: 3)');
        } else {
            let availableReservedSeat = seats[index];
            if (availableReservedSeat.chooseStatus != '已报满') {
                utils.space.unfilledCount += 1;
                let emptySeat = availableReservedSeat;
                utils.space.emptySeat = emptySeat;
                let addItemUrl = 'http://lecture.szu.edu.cn/tSelectLecture/addItem';
                let params = `lectureClassroomId=${emptySeat.id}&lectureId=${emptySeat.lectureId}&classroomId=${emptySeat.classroomId}`;
                delete utils.response;
                utils.sendRequest(addItemUrl, params, 'POST');
                (function wait() {
                    if (utils.response) {
                        emptySeat = utils.space.emptySeat;
                        if (utils.response.code == 200) {
                            console.info(`报名${emptySeat.campus}的位于${emptySeat.building}的讲座《${firstLecture.name}》成功,请刷新网页查看 (code: 5)`);
                            alert(`报名${emptySeat.campus}的位于${emptySeat.building}的讲座《${firstLecture.name}》成功`);
                        } else {
                            console.warn(`报名${emptySeat.campus}的位于${emptySeat.building}的讲座《${firstLecture.name}》失败,错误信息如下 (code: 4)`);
                            console.warn(utils.response);
                            utils.space.seatIndex += 1;
                            signUpLecture(utils.space.availableReservedSeats, utils.space.seatIndex);
                        };
                    } else {
                        setTimeout(wait, 50);
                    };
                })();
            };
        }
    };
    function exec() {
        if (IS_LIHU_AREA) {
            utils.space.area = ['丽湖校区'];
        };
        let startTime = getStartTime();
        let now = new Date().getTime();
        if (now < startTime) {
            let deltaTime = startTime - now;
            setTimeout(() => {
                location.reload();
            }, deltaTime);
        } else {
            searchLecture();
        };
    };
    exec();
})();

QingJ © 2025

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