直接运行:从Release页面下载WakeUp4SMU.exe并运行
git clone或手动下载仓库Zip并解压- 安装Python
- 安装uv:
pip install uv - 在仓库目录中执行:
uv sync
uv run main.py
- 点击本页面上部的Code按钮-Download Zip下载Zip文件
- 下载完成后双击解压Zip文件
- 按command(⌘)+空格打开Spotlight,输入terminal打开终端
- 在终端中依次运行:
pip3 install uv -i https://pypi.tuna.tsinghua.edu.cn/simple
cd ~/Downloads/WakeUp4SMU-master
uv sync
uv run main.py
以下内容由Gemini生成,感谢Gemini 3 Pro,感谢Antigravity
本指南将教你如何利用 GitHub Actions 每天自动抓取南医大教务系统课表,并同步到你的手机日历中。
通过本方法配置,你的账号密码仅存储在你个人的 GitHub 仓库中,生成的课表文件存储在私密的 Gist 中。除了你自己,没有人能看到你的课表。
- 一个 GitHub 账号
- 你的南医大教务系统账号和密码
- 点击本页面右上角的
Fork按钮。 - 点击
Create fork,将这个项目复制到你自己的账号下。
我们需要一个地方存放生成的课表文件,且不能公开。GitHub Gist 是最佳选择。
- 登录 gist.github.com。
- Gist description:填写
我的课表(选填)。 - Filename:填写
schedule.ics(注意后缀必须是 .ics)。 - Content:随便写点什么,比如
temp(运行后会被自动覆盖)。 - 点击右下角的
Create secret gist(⚠️ 注意:一定要选 Secret,不要选 Public)。 - 创建成功后,看浏览器上方的地址栏,链接最后的一串字符就是你的 Gist ID。
- 例如:
https://gist.github.com/你的名字/c09a8b7e6d5f4e3d2c1a - 那么
c09a8b7e6d5f4e3d2c1a就是你的 ID,请复制备用。
- 例如:
为了让脚本能自动把课表写入你的 Gist,需要一把“钥匙”。
- 进入 GitHub Token 设置页面。
- Note:填写
WakeUp4SMU。 - Expiration:建议选择
No expiration(永不过期),否则你需要定期更新。 - Select scopes:勾选
gist(Create gists)。 - 点击页面底部的
Generate token。 ⚠️ 立即复制显示的 Token (以ghp_开头),离开页面后它将不再显示。
回到你刚才 Fork 过来 的仓库页面,点击上方的 Settings -> 左侧边栏 Secrets and variables -> Actions。
我们需要添加以下配置:
点击 New repository secret,依次添加以下 4 个:
| Name (名称) | Secret (值) | 说明 |
|---|---|---|
| ACCOUNT | 你的学号 | 教务系统账号 |
| PASSWORD | 你的密码 | 教务系统密码 |
| GIST_ID | (第二步获取的ID) | 刚才复制的那串字符 |
| GIST_TOKEN | (第三步获取的Token) | ghp_ 开头的那串字符 |
点击 Variables 选项卡 (在 Secrets 旁边),点击 New repository variable,添加以下 2 个:
| Name (名称) | Value (值) | 说明 |
|---|---|---|
| WEEKS | 20 |
本学期总周数 (例如 20) |
| START_DATE | 2025-02-24 |
开学第一周周一的日期 (格式必须为 YYYY-M-D) |
出于安全考虑,GitHub 默认会禁用 Fork 仓库的 Actions。
- 点击仓库上方的
Actions标签页。 - 点击绿色的按钮
I understand my workflows, go ahead and enable them。 - 在左侧点击
Schedule Update。 - 点击右侧的
Run workflow->Run workflow手动触发一次。
等待几分钟,如果显示绿色的 ✅ Success,说明配置成功!脚本以后每天会自动运行。
配置完成后,最后一步是获取链接并在手机上订阅。
-
回到你的 Gist 页面,找到刚才创建的
schedule.ics。 -
你会发现内容已经变成了长长的日历代码。点击右上角的
Raw按钮。 -
关键步骤:复制浏览器的地址栏链接,但要删除中间的版本号。
- 原始链接长这样:
.../raw/823abc...123/schedule.ics - 请修改为 (删除
raw/和schedule.ics中间的那串乱码):https://gist.githubusercontent.com/你的用户名/你的GistID/raw/schedule.ics - 为什么要改? 因为不删除版本号的话,你的日历永远指向旧版本,不会自动更新。
- 原始链接长这样:
-
订阅导出的课表:
- iOS/MacOS: 设置 -> 日历 -> 账户 -> 添加账户 -> 其他 -> 添加已订阅的日历 -> 粘贴链接。(我没有苹果手机啊你们自己找找,反正是可以的)
- Android: 使用自带的系统日历或者通过 Google Calendar 添加URL订阅。
- Windows: 可使用Outlook、网易邮箱大师、Thunderbird等邮件客户端添加日历订阅
Q: 运行失败,提示 Login failed?
A: 请检查 Secrets 中的 ACCOUNT 和 PASSWORD 是否正确,或者教务系统是否正在维护。
Q: 日历多久更新一次? A: 脚本默认每天凌晨自动运行一次。你也可以在 Actions 页面手动点击运行。
Q: 为什么我的 Gist 里还是空的?
A: 请检查 Actions 的运行日志。如果报错 Resource not found,通常是 GIST_ID 填错了;如果报错 Bad credentials,则是 GIST_TOKEN 填错或权限不足。