OI Hydro 题目导入
在 VS Code 里登录 HydroOJ(如校内 OJ yl503.yali.edu.cn),一键把题面和样例导入成本地题目目录,直接配合 C++ 编译/测试使用。
适用于任何基于 HydroOJ 的站点,不限于某一所学校。
功能
- 编辑器内登录:用户名 / 密码只在 VS Code 输入框里输入,直接提交给 OJ 本站,不经过任何第三方
- 只保存会话 Cookie:登录态存在 VS Code 的
SecretStorage(系统加密),不落明文文件
- 一键导题:粘贴题目链接或题号,自动生成
Problems/<题号>/
├── main.cpp ← 从工作区 templates/main.cpp 复制(已存在则不覆盖)
├── problem.md ← 题面(自动打开右侧预览)
├── 1.in / 1.out ← 样例 1
└── 2.in / 2.out ← 样例 2 …
- 自动解析:优先按 Hydro 返回的 JSON 取题面(Markdown)、时限、内存、标签;样例从题面里的「输入样例 / 输出样例」代码块配对
- 多根工作区安全:写入目录优先选包含
templates/main.cpp 的文件夹,不会误写到别的根目录
- 可排查:
OI: 查看导入日志 查看每次请求与解析结果;解析失败会保留 raw_problem.html
使用方法
- 用 VS Code 打开你的 OI 工作区(含
Problems/、templates/)
- 点右下角状态栏 「Hydro: 未登录」,或
Ctrl+Shift+P → OI: 登录 HydroOJ
- 输入用户名、密码(密码为掩码输入)
Ctrl+Shift+P → OI: 导入题目,粘贴题目链接(如 https://yl503.yali.edu.cn/d/J2026/p/1)或直接输入题号
- 导入完成后
problem.md 自动在侧边预览,1.in/1.out 可直接用于本地测试
命令
| 命令 |
说明 |
OI: 登录 HydroOJ |
输入账号密码,保存会话 Cookie |
OI: 导入题目(粘贴链接/题号) |
抓取题面与样例并生成题目目录 |
OI: 退出登录 |
清除本地登录态 |
OI: 查看导入日志 |
查看请求与解析细节 |
设置
| 设置项 |
默认值 |
说明 |
oiHydro.baseUrl |
https://yl503.yali.edu.cn |
站点地址;HTTPS 连不上时可改成 http:// |
oiHydro.domainPath |
d/J2026 |
Hydro 的域名路径;只输题号时拼成 {baseUrl}/{domainPath}/p/{id},根域名部署请留空 |
oiHydro.problemsDir |
Problems |
题目目录(相对工作区根目录) |
oiHydro.autoOpenPreview |
true |
导入后自动打开 Markdown 预览 |
安全说明
- 密码不保存:登录成功后只保留会话 Cookie(HttpOnly 会话级别)
- Cookie 存放在 VS Code
SecretStorage,由操作系统凭据保护,扩展不会写到工作区文件
- 所有网络请求只发往
oiHydro.baseUrl 指向的站点
已知限制
- 依赖站点返回结构与 Hydro 版本(本扩展在 Hydro 4.58 上验证)
- 题面中的图片若需要登录才能访问,Markdown 预览里可能显示不出来
- 样例依赖题面里存在「输入样例 / 输出样例」代码块;没有的话不会生成
.in/.out
反馈
遇到解析问题,请提供 OI: 查看导入日志 的输出,以及题目目录下生成的 raw_problem.html(如有)。
License
MIT
| |