Skip to main content

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"},
)

许可

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jietng-0.2.0.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jietng-0.2.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

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

Hashes for jietng-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f61eebe494512b1d779323d0b56e69dad4e7b9944e04b8f7d58d2b6babe6e823
MD5 74356342174fbf001ea371ca5bd63f58
BLAKE2b-256 8b5b938ded8c89e4d1fb52fdfabd3f056b5e5217d3ed2b19801303f91bad1f09

See more details on using hashes here.

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

Hashes for jietng-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ffb0045af7e417b56137f2fd0f5cd94242866735d83f03b3c08a073c2bcf3b5
MD5 ac8a4c06d7db7ce50bd0f920c0d679f9
BLAKE2b-256 1bd1f0cd0576a695b4d2e6ccf19704d00f4e34b2d6348c73885aefbbe5164e9b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page