Skip to main content

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)

    # OCR 成绩图;只有完整成绩成功匹配、校验时才返回
    with open("result.jpg", "rb") as f:
        result = client.score_recognition.recognize(f.read(), ver="jp")
    print(result["song"]["id"], result["score"]["achievement"])

异步

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)

        with open("result.jpg", "rb") as f:
            result = await client.score_recognition.recognize(f.read(), ver="jp")
        print(result["song"]["title"])

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
client.score_recognition recognize

所有方法的形参 / 返回结构与 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 / 413 / 415 / 422
   ├─ 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"},
)

许可

MIT。代码:https://github.com/Matsuk1/JiETNG/tree/main/client

Metadata

Release files for jietng 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jietng 0.3.0
File Size Uploaded
jietng-0.3.0.tar.gz 12.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jietng 0.3.0
File Interpreter ABI Platform
jietng-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.3 kB

Release files / jietng-0.3.0.tar.gz

Download URL jietng-0.3.0.tar.gz
Size 12.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0c78cfcf34b091d49c898eb738d752f9d797c3fdfb5710b61615a56eb912563c
BLAKE2b-256 checksum
How to use checksums
ebe42dd663c2887295489f32fc4107d9a4e9f066be3bf2ec1c95ea12f5c398eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / jietng-0.3.0-py3-none-any.whl

Download URL jietng-0.3.0-py3-none-any.whl
Size 13.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c30ad8084afd7c3e8d14d33119f965f7dde97c3f35c3a4e4a4de372d540edfce
BLAKE2b-256 checksum
How to use checksums
09b9e0a9a00abc904441e79c847176d255342d88f6572552903e95586036a542
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

0.3.2

2 release files

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page