【深圳大学2020级新生专用/使用前请看使用说明】可用于抢领航讲座,由于无法进行测试,大家请抱着试用的心态使用该脚本。
当前为
// ==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://greasyfork.org/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.log('最新的领航讲座目前不可报名 (code: 1)');
};
} else {
console.log('最新的领航讲座目前不可报名 (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();
})();