您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
【深圳大学2020级新生专用/使用前请看使用说明】可用于抢领航讲座,由于无法进行测试,大家请抱着试用的心态使用该脚本。
当前为
// ==UserScript== // @name Rush Lecture // @name:en Rush Lecture // @namespace http://tampermonkey.net/ // @version 0.5.3 // @description 【深圳大学2020级新生专用/使用前请看使用说明】可用于抢领航讲座,由于无法进行测试,大家请抱着试用的心态使用该脚本。 // @description:en 【深圳大学2020级新生专用/使用前请看使用说明】可用于抢领航讲座,由于无法进行测试,大家请抱着试用的心态使用该脚本。 // @author cc // @match http://lecture.szu.edu.cn/* // @grant none // ==/UserScript== (function() { 'use strict'; const IS_LIHU_AREA = false; utils.space.area = ['粤海校区', '沧海校区']; window.utils = window.utils || {}; function sendRequest(url, params='', mode='GET') { let request = new XMLHttpRequest(); if (params.length > 0) url = `${url}?${encodeURIComponent(params)}`; request.open(mode, url, true); request.setRequestHeader('Content-Type', 'application/json'); request.send(); request.onreadystatechange = function () { if (request.readyState == 4 && request.status == 200) { utils.url = url; utils.response = JSON.parse(request.responseText); }; }; }; window.utils.sendRequest = window.utils.sendRequest || sendRequest; window.utils.space = window.utils.space || {}; function getStartTime() { let currentTime = new Date(); let year = currentTime.getFullYear(); let month = currentTime.getMonth() + 1; let day = currentTime.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.isSignUp = false; utils.space.unfilledCount = 0; for (let i = availableReservedSeats.length - 1; i >= 0; i--) { let availableReservedSeat = availableReservedSeats[i]; if (availableReservedSeat.chooseStatus != '已报满') { utils.space.unfilledCount += 1; let emptySeat = availableReservedSeat; let addItemUrl = 'http://lecture.szu.edu.cn/tSelectLecture/addItem'; let params = `lectureClassroomId=${emptySeat.id}&lectureId=${emptySeat.lectureId}&classroomId=${emptySeat.classroomId}`; utils.space.waitRequest = true; utils.sendRequest(addItemUrl, params, 'POST'); (function waitAddItemResponse() { if (utils.response) { if (utils.response.code == 200) { console.log(`报名${emptySeat.campus}的位于${emptySeat.building}的讲座《${firstLecture.name}》成功,请刷新网页查看 (code: 5)`); utils.space.isSignUp = true; } else { console.log(`报名${emptySeat.campus}的位于${emptySeat.building}的讲座《${firstLecture.name}》失败,错误信息如下 (code: 4)`); console.log(utils.response); }; delete utils.response; utils.space.waitRequest = false; } else { setTimeout(waitAddItemResponse, 50); }; })(); }; while (utils.space.waitRequest) ; // do nothing if (utils.space.isSignUp) break; }; if (utils.space.unfilledCount == 0) { console.log('讲座的所有场次已满,报名失败 (code: 3)'); } else if (!utils.space.isSignUp) { searchLecture(); }; } else { console.log('所在校区没有开设讲座 (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 exec() { if (IS_LIHU_AREA) { utils.space.area = ['丽湖校区']; }; let startTime = getStartTime(); let currentTime = new Date().getTime(); if (currentTime < startTime) { let deltaTime = startTime - currentTime; setTimeout(() => { utils.space.reload(); }, deltaTime); } else { searchLecture(); }; }; exec(); })();