From pku-cli
CLI scraper pulls PKU course catalogs from dean.pku.edu.cn, elective.pku.edu.cn, and onlineroomse.pku.edu.cn, merges into JSON for offline querying by dept/teacher/keyword. For bulk semester exports and selection analysis.
npx claudepluginhub pkuinfo/pkucli --plugin pku-cliThis skill uses the workspace's default tool permissions.
A CLI scraper that pulls course catalog data from multiple PKU sources and merges them into a queryable JSON export.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
A CLI scraper that pulls course catalog data from multiple PKU sources and merges them into a queryable JSON export.
crates/claspider/dean.pku.edu.cn)——无需登录,HTML 抓取,覆盖全校所有开课elective.pku.edu.cn)——需要 IAAA 登录(复用 pku-elective crate 的 session),按课程分类遍历;能拿到选课网特有的备注、教学安排、课程简介onlineroomse.pku.edu.cn)——需要浏览器 _token cookie(JWT),按周查询有直播/录播的课程merge 子命令把它们按课号对齐,产出一份最全的 JSON~/.config/info/elective/src/main.rs — tokio::main 调用 pku_claspider::run()src/lib.rs — Clap CLI 定义 + dispatchsrc/dean.rs — 教务部 HTML 抓取src/elective_query.rs — 选课网抓取(复用 pku_elective::client_build)src/zhiyun.rs — 智云课堂 JWT APIsrc/model.rs — 统一的 Course 结构 + 合并算法src/display.rs — 终端渲染| Command | 用途 |
|---|---|
dean --term 25-26-2 [--dept 00048] [--keyword ...] [--teacher ...] [--json] | 从教务部抓课(无需登录) |
elective --category speciality [--dept ...] [--keyword ...] [--json] | 从选课网抓课(需先 elective login -p) |
zhiyun --token <JWT> --week-start 2026-04-13 [--detail] [--json] | 从智云课堂抓有直播/录播的课 |
merge --term 25-26-2 --category speciality [--dept ...] [--zhiyun-token ...] [--zhiyun-week ...] [--json] | 三方合并 |
选课网分类取值:speciality(专业课)/ politics / english / gym / tsk_choice(通选)/
pub_choice / liberal_computer / ldjyk / szxzxbx / education_plan_bk。
# 纯教务部抓本学期信科全部开课,导出 JSON
claspider dean --term 25-26-2 --dept 00048 --json > info.json
# 选课网补充(要求已 elective login)
elective login -p
claspider elective --category speciality --dept 00048 --json > info_elective.json
# 智云课堂:从浏览器拿 _token cookie
claspider zhiyun --token eyJhbGc... --week-start 2026-04-13 --json > info_zhiyun.json
# 三方合并
claspider merge --term 25-26-2 --category speciality --dept 00048 \
--zhiyun-token eyJhbGc... --zhiyun-week 2026-04-13 --json > info_merged.json
anyhow::Result + .context("...")pku_elective::client_build(cookie_store) 复用 elective crate 的 reqwest client 工厂,
避免重复实现 IAAA 登录;但 claspider 本身没有自己的 session 目录onlineroomse.pku.edu.cn 浏览器
cookie 里复制,没有 CLI 登录入口src/model.rs 里实现elective(选课/退课工具)——claspider 只读不写,不调用 elect/droptreehole course(查单个学生本学期的课表)——claspider 抓的是全校目录course(北大教学网 / Blackboard)——那是作业/课件平台,和课程目录无关