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.1.tar.gz
(4.7 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.1.tar.gz.
File metadata
- Download URL: hydrooj-0.0.1.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0ed6f05c5bff5062354ddc4f5751ec926db27100440b8c9c27854b3e39843b7
|
|
| MD5 |
85f0e805e41ebfee038b9721738089f8
|
|
| BLAKE2b-256 |
fb4535c7f785381d8e491240ddc7b7fa62bd07a0cd1d859b4159968787ebb6ff
|
File details
Details for the file hydrooj-0.0.1-py3-none-any.whl.
File metadata
- Download URL: hydrooj-0.0.1-py3-none-any.whl
- Upload date:
- Size: 5.0 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 |
ee6f84ce8f2f4ffc5934e041b195888f4594a8c58774fa2bccd9ca74d128b7a5
|
|
| MD5 |
0f5f126742706fc38c6c56319cfecfce
|
|
| BLAKE2b-256 |
e9c1d35e76c0e61e0181b151a42be5284ba811397e8f685db39e41f0345295c3
|