A Python SDK for interacting with HydroOJ via Selenium
Project description
HydroOJ
基于Selenium开发的HydroOJ自动化操作库,支持账号登录、题目/比赛管理、附件上传等自动化操作。
安装方法
PyPI在线安装
pip install HydroOJ
依赖列表
selenium
支持浏览器:Edge、Chrome、Firefox、Ie、Safari、WebKitGTK
快速使用示例
from HydroOJ import HydroOJ, LoginFailedError
# 初始化客户端
client = HydroOJ(
url="https://hydro.ac/",
webdriver_id="Chrome",
headless=True
)
# 登录账号
try:
client.Login("用户名", "密码")
print("登录成功")
except LoginFailedError:
print("登录失败,账号或密码错误")
# 获取第一页题目列表
print(client.ViewProblemList(page=1))
# 查看题目内容
client.ViewProblem("1001")
# 释放浏览器资源
client.Quit()
API 说明
HydroOJ 初始化参数
HydroOJ(
url="https://hydro.ac/",
webdriver_id="Edge",
webdriver_path=None,
headless=True,
disable_blink=True
)
- url:HydroOJ站点地址
- webdriver_id:浏览器标识,支持 Edge / Chrome / Firefox / Ie / Safari / WebKitGTK
- webdriver_path:浏览器驱动本地路径,留空自动寻找
- headless:是否启用无头模式,不弹出浏览器窗口
- disable_blink:关闭自动化检测特征,避免站点拦截
全部可用方法
- Login(username, password) 登录站点,登录失败抛出 LoginFailedError
- Logined() 检测当前登录状态,返回布尔值
- ViewProblemList(page=1) 获取指定页码的题目列表文本,无数据抛出 ProblemListNotFoundError
- ViewProblem(problem_id) 打开并打印指定ID题目详情,题目不存在抛出 ProblemNotFoundError
- CreateProblem(pid, title, content, tag=[], difficulty=None, hidden=False) 创建新题目,创建失败抛出 CreateProblemFailedError
- ViewContestList(page=1) 获取指定页码比赛列表,无数据抛出 ContestListNotFoundError
- ViewContest(contest_id) 打开并打印指定ID比赛详情,比赛不存在抛出 ContestNotFoundError
- UploadFileToProblem(problem_id, file_name, file_content) 为指定题目上传文本附件,上传失败抛出 UploadFileFailedError
- GotoPage(url) 浏览器跳转至任意链接
- RunJavaScript(script) 在当前页面执行JS脚本,返回执行结果
- Quit() 关闭浏览器,释放进程资源
内置异常类
- LoginFailedError:登录校验失败
- ProblemNotFoundError:目标题目不存在
- CreateProblemFailedError:新建题目操作异常
- ProblemListNotFoundError:题目列表加载失败
- ContestListNotFoundError:比赛列表加载失败
- ContestNotFoundError:目标比赛不存在
- UploadFileFailedError:题目附件上传失败
使用注意事项
- 高频批量操作建议添加 time.sleep() 降低访问频率,触发网站风控
- 程序结束必须调用 Quit(),否则浏览器后台进程残留占用内存
- 仅适配原版HydroOJ前端页面,二次修改部署的OJ可能存在元素定位失效问题
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hydrooj-0.0.2.tar.gz
(5.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hydrooj-0.0.2.tar.gz.
File metadata
- Download URL: hydrooj-0.0.2.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3653ef411c5995e8a5a3bf8cba56602b700700e20abe647216ceaf49f26bd4d7
|
|
| MD5 |
ea77177c5d0fe36ae76f78bfe4e04bdb
|
|
| BLAKE2b-256 |
e5256e1d8feac6c3beeba07ae2e5848c5136c64ddd1323d9d96e9fb98b87e9a7
|
File details
Details for the file hydrooj-0.0.2-py3-none-any.whl.
File metadata
- Download URL: hydrooj-0.0.2-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fd8dcba4f4bbd6e5109dd076cd32113badbe3f77f98213e53e9a273f2cdb58a
|
|
| MD5 |
07e4c447072d37e70a0f3df46c871259
|
|
| BLAKE2b-256 |
5273ba1230084178287310222ef8cef007e1c93bf2490ad45fd25251ce65c6ad
|