v1.0.0 · Windows · Local-only

Seat-Wizard

图书馆座位系统的本地自动化助手。

告别反复刷新与手动守座。
自动接管登录、临时离开,并在到指定时间完全离开,重新预约指定座位。
已经打包完毕~毫无环境配置门槛,解压即用

Windows · 解压即用 · 无需额外安装 · 首次使用请先看 README


01

两种执行模式

覆盖两种最常见的场景。

mode · greedy

贪婪模式

只想把临时离开的时间用满。

  1. 登录座位系统
  2. 执行「临时离开」
  3. 按设定时间休眠
  4. 重新登录
  5. 执行「完全离开」
mode · grand_leave

大离开模式

在临时离开作用时间内,选择完全离开后,立刻重新预约指定座位。

  1. 在贪婪模式的基础上,完全离开后
  2. 进入「座位预约」
  3. 按校区 / 楼层 / 区域 / 座位号定位
  4. 执行「立即预约」并确认

02

技术栈

克制的依赖列表,只有一个本地脚本。

  • Python 3.10+ 主程序语言。
  • Tkinter 标准库自带的本地图形界面,零额外渲染依赖。
  • Playwright 驱动 Chromium 完成登录与页面交互;每次任务新建上下文,用完即销毁。
  • ddddocr 本地识别登录验证码,全过程不联网请求第三方 OCR 服务。
  • PyInstaller 将解释器、依赖与 Chromium 一起打包成开箱即用的 Windows 目录或单文件。
# project principles
KISS          => 只有一个主脚本 "wizard.py"
LOCAL_ONLY    => 账号 / 密码 / 验证码 仅在本机进程内流转
ON_DEMAND     => 关键操作前新建浏览器上下文,避免长时间持有 Cookie

03

隐私如何被保护

本地运行,不会上传任何数据。

  • 纯本地运行。 程序只是一个跑在你电脑上的 Python 进程,没有服务端、没有账号系统、没有遥测。
  • 账号信息不持久化。 学号与密码只存在于当前进程的内存里,关闭窗口即消失,不写入任何文件。
  • 仅与学校官方系统通信。 所有网络请求由 Playwright 直接发往 zuowei.lib.swjtu.edu.cn,不经过任何中间服务。
  • 验证码本地识别。 使用 ddddocr 在本机推理,不上传图片到任何 OCR 云服务。
  • 会话用完即弃。 每个关键操作都新建独立的浏览器上下文,操作完成立刻关闭,不会留下长期 Cookie。
  • 源码完全开放。 所有逻辑都在 GitHub 仓库 里,欢迎自行审计。

04

联系开发者

问题、建议、bug 报告,任意一种方式都可以。

WeChat
quasi2317
QQ
quasi2317 / 3156367194
Email
i@qus.moe

select mirror

Seat-Wizard v1.0.0 · Windows · 解压即用

或者 查看全部版本 · 下载源码

README.md

Seat-Wizard 使用文档 · 请在遵守学校与图书馆规则的前提下使用

Seat-Wizard 是一个本地运行的图书馆座位自动化助手,用于完成临时离开、完全离开和重新预约座位等操作。

## 功能

  • 贪婪模式:登录后执行「临时离开」,等待指定时间后再次登录并执行「完全离开」。
  • 大离开模式:在贪婪模式的基础上,完全离开后重新预约指定座位。
  • 本地图形界面:输入账号、密码、等待时间和座位信息后即可运行。
  • 本地运行:账号和密码只在本机程序中使用。

## 下载使用

从 GitHub Release 下载 Windows 压缩包后:

  1. 解压压缩包。
  2. 双击运行 Seat-Wizard.exe
  3. 按界面提示填写信息并点击「开始执行」。

! 不要直接在压缩包里运行程序,请先完整解压。

## 界面说明

### 账号

填写学校座位系统使用的学号和密码。

### 执行策略
  • 贪婪模式:适合只需要延长一次临时离开时间的情况。
  • 大离开模式:适合完全离开后还需要重新预约原座位的情况。
  • 第二次登录触发时间:程序等待多久后执行第二次登录,单位为分钟。
  • 使用无头浏览器:勾选后浏览器窗口不会显示;首次使用建议不要勾选,方便观察运行情况。
### 大离开模式座位信息

选择「大离开模式」时,需要填写校区、楼层、区域和座位号。填写内容应与座位系统页面中的显示一致。

## 时间设置建议

「第二次登录触发时间」应小于系统允许的最大临时离开时间。

建议至少预留 3 分钟。例如系统允许临时离开 90 分钟,可以设置为 87 分钟或更低,避免网络波动、验证码识别或页面加载耗时导致超时。

## 默认座位配置

程序会读取同目录下的 seat-config.json 作为默认座位信息。你可以用文本编辑器修改它:

{
  "campus": "犀浦校区图书馆",
  "floor": "二楼",
  "area": "-B1",
  "seat_number": 1
}

如果文件不存在,程序会自动生成一份默认配置;如果配置文件格式错误,程序会提示并临时使用内置默认值。

## 从源码运行

如果你想直接运行源码,需要先安装 Python 3.10 或更高版本。

pip install -r requirements.txt
python -m playwright install chromium
python wizard.py

## 常见问题

### 登录一直失败怎么办?

可以点击「停止」后重新开始。首次使用建议不要勾选「使用无头浏览器」,这样可以看到页面是否正常打开、验证码是否刷新、账号密码是否正确。

### 大离开模式没有点到正确座位怎么办?

请检查 seat-config.json 或界面中的校区、楼层、区域、座位号是否与座位系统页面一致。

### 程序需要联网吗?

需要。程序会打开学校座位系统页面并完成登录、离开和预约操作。

也可以在 GitHub 上查看原文