diff --git a/README.md b/README.md index 7ad3dae..e9bf7d7 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,90 @@ -**请完整阅读以下所有内容, 以对本软件有一个完整的了解, 如果还有问题请提交 `Issue`; 如果您对计算机使用或北师大抢课系统一无所知, 请勿使用本软件, 本人不提供相关计算机使用教学; 请不要向他人直接分享安装包, 以确保每个使用者都从本页面下载, 并都完整阅读了使用说明; 本项目仅供学习交流使用, 开源免费. 请勿用于非法用途, 请严格遵守开源协议, 请勿滥用, 请勿使用此项目牟利, 请自行承担使用此项目的风险** +**请完整、仔细阅读使用说明, 如果还有问题请提交 `Issue`; 如果您对计算机使用或北师大抢课系统一无所知, 请勿使用本软件, 本人不提供相关计算机使用教学; 请不要向他人直接分享安装包, 以确保每个使用者都从本页面下载, 并都完整阅读了使用说明; 本项目仅供学习交流使用, 开源免费. 请勿用于非法用途, 请严格遵守开源协议, 请勿滥用, 请勿使用此项目牟利, 请自行承担使用此项目的风险** # 小鸦抢课 + 一个使用简单, 开源安全的北师大自动抢课/蹲课程序, 支持公选课/专业课, 支持批量抢课/蹲课, 欢迎点亮 `Star` 关注本项目~ ![](./README.png) -# 使用前必读 -- 第一次启动时会自动联网下载 `chromium` (浏览器内核, 见软件界面的左下角), 会消耗一定的时间 (取决于你的网络状况), 请耐心等待~ (之后启动就不用了); 如果一段时间后显示 `安装失败`, 请重启软件再试一次并确保网络畅通 -- 请提前确认各项信息填写正确、无课程时间冲突、剩余学分足够 -- 为确保网络环境流畅, 建议不要去人多的地方抢课 -- **抢课时, 请提前两三分钟开启抢课模式即可**; 由于抢课模式下没有重启机制和 `Playwright` 的特性, 消耗内存会逐渐增加, 提前开启太久可能会导致你的设备内存不足 (蹲课模式下浏览器会定期重启, 没有这个问题) -- **其他年级抢课开始前后, 教务系统会显示账号已锁定 (详见学校公众号发布的抢课说明), 与小鸦抢课无关** -- 抢课/蹲课的成功率不是百分之百, 请在软件提示结束/成功后手动二次确认选课结果; 同时, 千万不要将本软件作为唯一的选课手段 -- 据传, 选课系统同时只支持约三/四/五(说法不一)个页面同时操作, 小鸦抢课会为每门课都打开一个页面 (`单线程蹲课` 模式除外), 所以如果要同时选多门课, 请自行承担风险 (但是我这边测试的时候, 排除了上面说的其他年级抢课的影响, 同时多线程蹲六门课也是正常的, 所以可能是误传) +# 使用说明 -| 选项 | 说明 | -| :---: | :---: | -| 抢课模式 | 见下面的抢课模式说明 | -| 刷新频率 | 设太快可能会起反效果, 一般 `每秒` 即可 | -| 课程类别 | 请确保添加的所有课程都在分类里存在
如果分类不对, 抢课将会失败
对于大一新同学, 一个简单的判断方式是: 你必修的课、专业选修课都不在 `选公共选修课` 里
且大多数公选课上课班号都只有 `01` | -| 学号密码 | 你的学号和密码, 所有信息都保存在你的设备本地 | -| 记住密码 | 勾选后, 下次打开程序会自动填写密码 | -| 显示浏览器 | 勾选后, 会显示浏览器窗口, 用于调试 | -| 蹲课保护 | **仅对蹲课生效**. 勾选后, 发生任何错误都会强制重启
可以避免一些网络错误导致的蹲课中断 | -| 添加课程 | 输入课程代码和上课班号, 点击 `+` 即可添加一门课程 | +## 1 下载安装 + +![](./readme/1.png) + +![](./readme/2.png) + +> `MacOS` 下软件未签名 (~~贫穷的小叶子买不起贵得要死的 `Apple Developer` 账号~~), 所以 `MacOS` 下可能提示 `软件已损坏`,请参见[这篇文章](https://www.mac2m.com/article/450/)修复,或自行下载源码进行编译 (见文末的 `手动构建方法`) + +## 2 等待下载 `chromium` + +**第一次**启动时会自动联网下载 `chromium` (浏览器内核, 用来抢课, 见软件界面的左下角), 会消耗一定的时间 (取决于你的网络状况), 请耐心等待; 如果一段时间后显示 `安装失败`, 请重启软件再试一次并确保网络畅通 + +![](./readme/3.png) + +## 3 选择模式 + +![](./readme/4.png) + +### `抢课模式` 说明 + +总而言之, 要抢课就用 `抢课` 模式, 插电蹲课用 `多线程蹲课`, 边上课边蹲课用 `单线程蹲课`; 详细说明如下: -## 抢课模式说明 | 模式 | 开启教务页面数 | 如果系统未开启 | 如果可选人数为零 | 多个课程中一个成功 | 多个课程中一个出错 | 速度 | 耗电量 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | 抢课 | 每个课程一个 | 刷新 | 退出 | 继续剩余课程 | 继续剩余课程 | 快 | 课程越多越高 | | 多线程蹲课 | 每个课程一个 | 退出 | 刷新 | 继续剩余课程 | 退出 | 快 | 课程越多越高 | | 单线程蹲课 | 一个 | 退出 | 刷新 | 退出 | 退出 | 课程越多越慢 | 较低 | -> 如果用电脑在上课的时候挂着蹲课, 建议用 `单线程蹲课` 模式, ~~别上着上着课电脑没电了~~ +### `课程类别` 说明 + +北师大的选课系统分为 `按开课计划选课`、`按上课时间选课`、`选公共选修课` 三个大类, 其中 `按开课计划选课` 和 `选公共选修课` 可以选的课程有部分重叠, 而 `按上课时间选课` 则包含了所有课程 -## 视频示例(小红书) -![](./xhs.jpg) +小鸦抢课只支持 `按开课计划选课` 和 `选公共选修课` 两个类别, 所以请确保你要选的课程在这两个类别里 -## 下载地址 -[点击前往 `Release` 下载](https://github.com/LeafYeeXYZ/BNUCourseGetter/releases)适用于你的设备的最新版本程序 (`Windows` 就下载 `xyqk-windows-amd64.exe`, `MacOS` 就下载 `xyqk-darwin-arm64.zip`), 双击运行即可 +对于大一新同学, 一个简单的判断方式是: 你必修的课、专业选修课都不在 `选公共选修课` 里, 且大多数 `选公共选修课` 里的课程的上课班号只有 `01` -> `1.6.0` 及以后版本已经提供了 `MacOS` 的应用文件 (此前仅提供了 `Windows` 和 `Linux` 版), 但 `MacOS` 下软件未签名 (~~买不起贵得要死的 `Apple Developer` 账号~~), 所以 `MacOS` 下可能提示软件已损坏,请参见[这篇文章](https://www.mac2m.com/article/450/)修复,或自行下载源码进行编译, 见文末的 `手动构建方法` +## 4 填写信息 -## 技术相关 -后端基于 `Go`, 前端基于 `TypeScript`, 使用 `Wails`、`React`、`Playwright`、`AntD` 等工具或框架开发 +请提前确认各项信息填写正确、无课程时间冲突、剩余学分足够、**网络环境流畅** (建议不要去人多的地方抢课) + +![](./readme/5.png) + +| 选项 | 说明 | +| :---: | :---: | +| 学号密码 | 你的学号和密码, 所有信息都保存在你的设备本地 | +| 记住密码 | 勾选后, 下次打开程序会自动填写密码 | +| 显示浏览器 | 勾选后, 会显示浏览器窗口, 用于调试; **正常抢课时无需开启** | +| 蹲课保护 | **仅对蹲课生效**. 勾选后, 发生任何错误都会强制重启; 可以避免一些网络错误导致的蹲课中断 | + +## 5 添加课程 + +请首先从教务系统上找到你要选的课程的 `课程号` 和 `上课班号` (如下图所示), 然后填写到软件中, 并点击 `+` 添加一门课程 + +小鸦抢课支持添加多门课程, 但请确保**所有**添加的课程属于**同一类别** (`按开课计划选课` 或 `选公共选修课`) + +![](./readme/6.png) + +![](./readme/7.png) + +## 6 开始抢课 + +**抢课时, 请提前1-3分钟开启抢课模式即可**; 由于抢课模式下, 小鸦抢课不会通过内部的重启机制来降低内存消耗, 消耗内存会逐渐增加, 所以提前开启太久可能会导致你的设备内存不足 (蹲课模式没有这个问题) + +![](./readme/8.png) + +## 7 其他注意事项 + +- **其他年级抢课开始前后, 教务系统会显示账号已锁定 (详见学校公众号发布的抢课说明), 与小鸦抢课无关** +- 抢课/蹲课的**成功率不是百分之百**, 请在软件提示结束/成功后手动二次确认选课结果; 同时, 千万**不要将本软件作为唯一的选课手段** +- 据传, 选课系统同时只支持约三/四/五(说法不一)个页面同时操作, 小鸦抢课会为每门课都打开一个页面 (`单线程蹲课` 模式除外), 所以如果要同时选多门课, 请自行承担风险 (但是我这边测试的时候, 排除了上面说的其他年级抢课的影响, 同时多线程蹲六门课也是正常的, 所以可能是误传 ~~什么都市传说~~) -由于没有选择直接发送请求, 而是以浏览器自动化的方式实现, 所以使用风险较小, 但是效率也会低一些 +# 技术说明 +后端基于 `Go`, 前端基于 `TypeScript`, 使用 `Wails`、`React`、`Playwright`、`AntD` 等工具或框架开发; 由于抢课时没有选择直接发送请求, 而是以浏览器自动化的方式实现, 所以使用风险较小, 但是效率也会低一些 `1.4.0` 及以前的二进制文件仅在 `Windows` 下测试过, `1.5.0` 及以后的二进制文件仅在 `MacOS` 下测试过, 其他平台如果有问题请提交 `Issue` 或 `Pull Request` -### 手动构建方法 +## 手动构建方法 1. 安装 `Go`、`Node.js`、`Bun` (请自行前往官网下载安装) 2. 执行 `go install github.com/wailsapp/wails/cmd/wails@latest` 安装 `Wails` 3. 执行 `git clone https://github.com/LeafYeeXYZ/BNUCourseGetter.git` 克隆本项目 diff --git a/frontend/src/components/Header.tsx b/frontend/src/components/Header.tsx index 00028a2..8d1c374 100644 --- a/frontend/src/components/Header.tsx +++ b/frontend/src/components/Header.tsx @@ -44,7 +44,7 @@ export function Header({ systemStatus }: HeaderProps ) {

- 1.6.1 + 1.6.2