Python SDK for the JiETNG maimai DX (舞萌DX) score management API.
Project description
jietng — Python SDK
pip install jietng — Python 客户端,封装 JiETNG 舞萌DX 查分器的 HTTP API。
支持同步 / 异步两套客户端、覆盖 v2 开发者端点和 Import Token 上传端点(用户 / 权限 / 同步 / 搜歌 / 成绩图 / 导出 / 导入 …)、类型注解齐全。
安装
pip install jietng
需要 Python ≥ 3.8、httpx ≥ 0.25。
获取 Token
JiETNG API 通过 Bearer Token 鉴权。申请方式见 https://jietng.matsuk1.com/developer-api —— 发邮件到 matsuk1@proton.me 索取。
快速开始
同步
from jietng import jietngClient
with jietngClient(token="your_token") as client:
users = client.users.list()
print(users["count"], "registered users")
# 取 B50 成绩图(返回 PNG bytes)
png = client.images.records("U1234567890", command="b50")
with open("b50.png", "wb") as f:
f.write(png)
# 流式同步:先收到 accepted,结束时收到 completed / failed
for event in client.users.sync_stream("U1234567890"):
print(event["event"], event.get("message"))
# 导出成绩为 JSON / XML,文件名由服务端推荐(含玩家名 + 时间戳)
path = client.exports.save("U1234567890", fmt="json")
print("exported to", path)
异步
import asyncio
from jietng import AsyncjietngClient
async def main():
async with AsyncjietngClient(token="your_token") as client:
print(await client.songs.search("PANDORA", user_id="U1234567890", max_results=3))
async for event in client.users.sync_stream("U1234567890"):
print("sync event:", event["event"])
png = await client.images.plate("U1234567890", title="真神")
with open("plate.png", "wb") as f:
f.write(png)
asyncio.run(main())
资源总览
| 命名空间 | 主要方法 |
|---|---|
client.users |
list / get / create / delete / sync_stream / bind / update_bind / get_bind_url / get_rebind_url / get_settings_url |
client.permissions |
request / list_requests / accept / reject / revoke / revoke_self |
client.songs |
search / info |
client.versions |
list |
client.dxdata |
get |
client.images |
user_song / records / plate / achievement |
client.exports |
download / save |
client.imports |
records |
所有方法的形参 / 返回结构与 JiETNG API 文档 一一对应。
错误处理
所有 HTTP 非 2xx 状态都会抛 APIError 子类。可以按需 catch 具体类型:
from jietng import jietngClient, NotFoundError, PermissionDeniedError, RateLimitedError, QueueFullError
try:
png = client.images.records("U_unknown", command="b50")
except NotFoundError:
print("user has no records yet")
except PermissionDeniedError:
print("your token doesn't have access to this user")
except RateLimitedError:
print("slow down")
except QueueFullError:
print("server task queue is full, retry later")
完整异常层级:
jietngError # 基类
└─ APIError # 任意 HTTP 非 2xx
├─ ValidationError # 400
├─ AuthenticationError # 401
├─ PermissionDeniedError # 403
├─ NotFoundError # 404
├─ RateLimitedError # 429
├─ ServerError # 500
└─ QueueFullError # 503
每个异常实例都带 status_code / error / message / payload 字段,方便排查。
自定义
client = jietngClient(
token="your_token",
base_url="https://your-self-hosted.example.com/api/v2", # 自托管时
timeout=60.0,
extra_headers={"X-App-Name": "MyBot"},
)
许可
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
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 jietng-0.2.0.tar.gz.
File metadata
- Download URL: jietng-0.2.0.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f61eebe494512b1d779323d0b56e69dad4e7b9944e04b8f7d58d2b6babe6e823
|
|
| MD5 |
74356342174fbf001ea371ca5bd63f58
|
|
| BLAKE2b-256 |
8b5b938ded8c89e4d1fb52fdfabd3f056b5e5217d3ed2b19801303f91bad1f09
|
File details
Details for the file jietng-0.2.0-py3-none-any.whl.
File metadata
- Download URL: jietng-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ffb0045af7e417b56137f2fd0f5cd94242866735d83f03b3c08a073c2bcf3b5
|
|
| MD5 |
ac8a4c06d7db7ce50bd0f920c0d679f9
|
|
| BLAKE2b-256 |
1bd1f0cd0576a695b4d2e6ccf19704d00f4e34b2d6348c73885aefbbe5164e9b
|