bjtuo-classroom-query

北京交通大学(BJTU)教室综合查询。结合教务系统课表(判断是否有课)和实时人数接口(当前在场人数),综合评估教室空闲情况。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "bjtuo-classroom-query" with this command: npx skills add hwj123hwj/custom-skills/hwj123hwj-custom-skills-bjtuo-classroom-query

BJTU Classroom Query

基于 Playwright 的北交大教室查询自动化工具。

数据来源

数据源能力是否需要登录
教务系统(Playwright 脚本)课表占用:哪些时间段有课✅ 需要
实时人数接口(第三方)当前教室在场人数❌ 不需要

两者结合可以得出综合结论:当前有无课 + 实际人数 → 教室是否值得去

核心功能

  • AI 登录:集成智谱 AI 视觉模型,自动识别 CAS 登录页面的数学计算验证码。
  • 状态缓存:自动保存登录状态 (auth_state.json),避免频繁登录触发验证。
  • 智能选择:支持学期、周次、教学楼的模糊匹配和自动选择。
  • 空闲分析:自动解析教务系统复杂的表格结构,提取每日空闲的大节信息。
  • 实时人数:调用第三方接口,获取教室当前在场人数和容量。

快速开始

1. 配置环境

确保项目根目录下存在 .env 文件,并包含以下配置:

ZHIPU_API_KEY=your_zhipu_api_key
BJTU_USERNAME=your_username
BJTU_PASSWORD=your_password

2. 运行查询

# 查询当前学期(自动推断)第14周 思源东楼 102 的空闲情况
uv run bjtuo-classroom-query/scripts/query_classroom.py --week "14" --building "思源东楼" --classroom "102"

# 指定学期
uv run bjtuo-classroom-query/scripts/query_classroom.py --semester "2025-2026-1" --week "14" --building "思源东楼"

参数说明

参数说明示例
--week周次 (1-31)14
--semester学期代码2025-2026-1
--building教学楼 (支持模糊匹配)思源东楼, 九教, 东一
--classroom教室号 (可选)102
--show-browser显示浏览器窗口(默认无头模式)(标志位)

实时人数查询(无需登录)

接口GET http://yaya.csoci.com:2333/api/classnum/?building={教学楼名称}

第三方接口,非学校官方,数据约每 10-20 秒更新一次。

# 查询思源东楼实时人数(中文参数必须 URL 编码)
curl "http://yaya.csoci.com:2333/api/classnum/?building=%E6%80%9D%E6%BA%90%E4%B8%9C%E6%A5%BC"

返回格式

{
  "time": ["2026-02-05 13:13:07", "2026-02-05 13:13:25"],
  "data": [
    ["SY101", 5.55, 5, 90],
    ["SY102", 15.62, 5, 32]
  ]
}
字段说明
time数据采集时间范围
data[i][0]教室名称
data[i][1]占用率 %
data[i][2]当前人数
data[i][3]总容量

注意:当 人数 >= 容量 时,通常为传感器异常,数据不可信。

支持的教学楼(共 11 栋,见 数据参考

综合查询工作流

当用户询问"XX教室现在能去吗"、"哪个教室空着"等问题时,按以下步骤执行:

Step 1:查课表(有无上课)

uv run bjtuo-classroom-query/scripts/query_classroom.py \
  --week "<当前周次>" --building "<教学楼>" --classroom "<教室号>"

得到:该教室今天各节课的占用情况。

Step 2:查实时人数

curl "http://yaya.csoci.com:2333/api/classnum/?building=<URL编码后的楼名>"

从返回的 data 数组中找到对应教室,读取 [人数, 容量]

Step 3:综合给出结论

课表状态实时人数结论
当前节次无课人数少(< 容量30%)✅ 空闲,推荐
当前节次无课人数多(≥ 容量30%)⚠️ 虽无课但人多,可能有人自习
当前节次有课人数多❌ 正在上课,不要去
当前节次有课人数少⚠️ 课表显示有课但人少,可能已结束或取消

输出示例

思源东楼 102(SY102)
- 课表:本节(第3节)无课,下节(第4节)有课
- 实时:当前 5 人 / 32 座(15.6%)
- 结论:✅ 现在可以去,但第4节前需离开

数据参考

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

bilibili-toolkit

No summary provided by upstream source.

Repository SourceNeeds Review
General

idea-incubator

No summary provided by upstream source.

Repository SourceNeeds Review
General

skill-browser-crawl

No summary provided by upstream source.

Repository SourceNeeds Review
General

bilibili-video-helper

No summary provided by upstream source.

Repository SourceNeeds Review