您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
【深圳大学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(); })();