Skip to main content

nonebot-plugin-kuwo

logo

✨ 基于 NoneBot2 的酷我音乐插件 ✨

LICENSE python Adapters

uv ruff rust

基于 NoneBot2 的酷我音乐插件,面向 NapCat / OneBot V11 使用场景,提供搜索、直链、音乐卡片、语音和文件发送能力。

功能

  • kwsearch <关键词>
    • 返回搜索结果列表
    • 支持 text / image
  • kw搜索 <关键词>
    • kwsearch 中文别名
  • kw <关键词> [-q/--quality <quality>]
    • 搜索后直接取第一首歌
    • 支持 text / card / record / file
  • kwid <rid> [-q/--quality <quality>]
    • 直接通过 rid 获取歌曲
    • 支持 text / card / record / file

安装

nb-cli

nb plugin install nonebot-plugin-kuwo --upgrade

使用 PyPI 源:

nb plugin install nonebot-plugin-kuwo --upgrade -i https://pypi.org/simple
使用包管理器安装

推荐使用 uv:

uv add nonebot-plugin-kuwo

安装 GitHub 仓库主分支:

uv add git+https://github.com/006lp/nonebot-plugin-kuwo@main

如果你使用其他包管理器,也可以选择:

pdm add nonebot-plugin-kuwo
poetry add nonebot-plugin-kuwo

安装后,在 NoneBot2 项目的 pyproject.toml 中加入:

plugins = ["nonebot_plugin_kuwo"]

配置

COMMAND_START=["/"]
LOG_LEVEL=INFO
RENDER_BACKEND=playwright

KUWO_SEARCH_LIMIT=5
KUWO_LIST_RENDER_MODE=text
KUWO_TRACK_RENDER_MODE=text
KUWO_DEFAULT_QUALITY=standard
# KUWO_TRACK_PROXY_URL=http://127.0.0.1:7890
KUWO_TRACK_CACHE_RETENTION_DAYS=1
KUWO_TRACK_CACHE_MAX_SIZE_MB=1024

配置项说明:

配置项 默认值 说明
KUWO_SEARCH_LIMIT 5 搜索结果条数,范围 1-10
KUWO_LIST_RENDER_MODE text 搜索列表模式,支持 text / image
KUWO_TRACK_RENDER_MODE text 单曲输出模式,支持 text / card / record / file
KUWO_DEFAULT_QUALITY standard 默认音质
KUWO_TRACK_PROXY_URL 未配置 由于版权相关问题,海外用户请求歌曲直链时需要使用境内 HTTP/HTTPS 代理,例如 http://user:pass@127.0.0.1:7890
KUWO_TRACK_CACHE_RETENTION_DAYS 1 文件缓存保留天数,0 表示关闭按天清理
KUWO_TRACK_CACHE_MAX_SIZE_MB 1024 文件缓存总大小上限,0 表示关闭按大小清理

RENDER_BACKEND 是 nonebot-plugin-htmlrender 的配置项。使用 KUWO_LIST_RENDER_MODE=image 时需要设置为 playwright;未配置时图片渲染会失败并自动回退到文本列表。当前项目已按 nonebot-plugin-htmlrender>=0.7.1 验证:默认 RENDER_STARTUP_MODE=off 时不会在 NoneBot 启动阶段预热浏览器,首次图片渲染会按需启动,详情见 nonebot-plugin-htmlrender 文档。

音质枚举:

  • standard
  • exhigh
  • lossless
  • hires
  • hifi
  • sur
  • jymaster

特殊规则:

  • KUWO_TRACK_RENDER_MODE=card 且未显式设置 KUWO_LIST_RENDER_MODE 时,搜索列表默认切到 image
  • record 模式强制回落到 standard
  • card 模式音质上限固定为 lossless
  • KUWO_TRACK_CACHE_MAX_SIZE_MB 小于 600 时仅记录警告,不阻止启动
  • KUWO_TRACK_PROXY_URL 只代理歌曲直链接口,不代理搜索、封面、详情和文件下载

使用

搜索列表

kwsearch / kw搜索 当前支持两种输出:

  • text
    • 每行格式:序号. 音乐id 歌曲名-歌手
  • image
    • 使用 nonebot-plugin-htmlrender 生成图片列表
    • 直接复用搜索接口返回的 web_albumpic_short
    • 渲染失败时自动回退到文本

单曲输出

kw / kwid 当前支持四种输出:

  • text
    • 有封面时发送 图片 + 文本
    • 文本包含:歌曲名、歌手、专辑、时长、码率、直链
    • 若接口返回 ekey,文本中会额外带上 ekey
  • card
    • 发送自定义音乐卡片
    • url 和 audio 都使用真实直链
  • record
    • 发送语音段
    • 始终使用 standard
  • file
    • 下载到本地缓存后发送文件段
    • .mflac 会先解密成可播放的 .flac
    • 上传文件名使用 [quality]歌曲名 - 歌手.扩展名,quality 为最终生效音质,例如 [lossless]Summer - rionos.flac

音质参数

kw 和 kwid 都支持:

-q
--quality

示例:

/kw Summer Pockets -q lossless
/kwid 553152678 --quality exhigh

文件缓存与 .mflac

file 模式使用 nonebot-plugin-localstore 的插件缓存目录,并在其下维护 tracks/ 子目录。

普通可直接发送的格式:

  • mp3
  • flac
  • aac
  • ogg
  • wav

缓存策略:

  • 相同 rid + bitrate 优先复用缓存
  • 缓存命中会刷新文件时间
  • 默认按 1 天和 1024MB 双重策略清理
  • 两个值都设为 0 时,不做自动清理

.mflac 流程:

  1. 下载原始 .mflac
  2. 使用 Kuwo 返回的 ekey
  3. 提取 QMC 原始密钥
  4. 推导最终 QMCv2 密钥
  5. 本地解密为 .flac
  6. 发送解密后的文件
  7. 删除中间 .mflac

反馈问题

提交 Issue 前请先搜索已有反馈,并按模板提供插件版本、NoneBot / 适配器 / 协议端版本、相关配置、触发命令和脱敏后的 DEBUG 日志。

开发

项目强制使用 uv。

uv sync
uv run maturin develop --release

常用命令:

uv run ruff check .
uv run pytest tests -q -p no:cacheprovider
cargo fmt --all

说明:

  • 发布版 wheel 会自带原生扩展 _qmc_rs
  • 源码开发或本地调试需要先执行 maturin develop

项目结构

nonebot_plugin_kuwo/
├── __init__.py
├── config.py
├── data_source.py
├── models.py
├── qmc.py
├── render.py
└── utils.py
src/
└── qmc.rs
tests/

鸣谢

许可证

本项目使用 AGPL-3.0 许可证。

Metadata

Release files for nonebot-plugin-kuwo 0.2.6

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

Source distribution (sdist)

Source distribution for nonebot-plugin-kuwo 0.2.6
File Size Uploaded
nonebot_plugin_kuwo-0.2.6.tar.gz 222.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for nonebot-plugin-kuwo 0.2.6
File
nonebot_plugin_kuwo-0.2.6-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details
nonebot_plugin_kuwo-0.2.6-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
nonebot_plugin_kuwo-0.2.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
nonebot_plugin_kuwo-0.2.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
nonebot_plugin_kuwo-0.2.6-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
nonebot_plugin_kuwo-0.2.6-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 1.5 MB

Release files / nonebot_plugin_kuwo-0.2.6.tar.gz

Download URL nonebot_plugin_kuwo-0.2.6.tar.gz
Size 222.0 kB
Tags Source
SHA-256 checksum
How to use checksums
99e6ad7e4746c976839ffaa811fb6906d67fffbc2fa1fef3418f4030f27927aa
BLAKE2b-256 checksum
How to use checksums
3a78358f5b6d22f42cb6ac677d8978864f57b37e863b70d87b56e088c1ecc2d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / nonebot_plugin_kuwo-0.2.6-cp310-abi3-win_arm64.whl

Download URL nonebot_plugin_kuwo-0.2.6-cp310-abi3-win_arm64.whl
Size 149.6 kB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
8c2e35566eaaa5cd494c684da0755620fcf57d413047dfcace0a5ab2ec880a64
BLAKE2b-256 checksum
How to use checksums
c212637ea9c2b462b1f75136a463e2b83a01bdf71debf083155f0f820c42bc54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / nonebot_plugin_kuwo-0.2.6-cp310-abi3-win_amd64.whl

Download URL nonebot_plugin_kuwo-0.2.6-cp310-abi3-win_amd64.whl
Size 148.8 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
7925c41e540d2077681a128dcb942e97e73b63344b11a8b70262b352e57367cc
BLAKE2b-256 checksum
How to use checksums
a5c6bdd472bae4d4488401e54493c868bda8ca2e24673adf34f6c444ddad64a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / nonebot_plugin_kuwo-0.2.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL nonebot_plugin_kuwo-0.2.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 249.1 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
68140eea3bf9446c010163ea4335cd0bf050dad966a8abc8e88dc084ea0c08e9
BLAKE2b-256 checksum
How to use checksums
f1a0d27e5a5ce27d4a15231cd19c5123cc6b16caf3cd3acbcc4947838197e0cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / nonebot_plugin_kuwo-0.2.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL nonebot_plugin_kuwo-0.2.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 240.6 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
e9609e30b500281180db883646b44eb243afa8df3390547d7bf164daef895e2b
BLAKE2b-256 checksum
How to use checksums
6f5199d77ed893f72d4e29601a35a2eb12e5b974de3dedbbbfbaff3ca516ff3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / nonebot_plugin_kuwo-0.2.6-cp310-abi3-macosx_11_0_arm64.whl

Download URL nonebot_plugin_kuwo-0.2.6-cp310-abi3-macosx_11_0_arm64.whl
Size 227.1 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
94fd32d54b27b73afd16086c85d113bc5a917940505704f76d962aa7aa4ac00e
BLAKE2b-256 checksum
How to use checksums
40e956901e04068df19ab8f32aa769af129b76b35126c506f6a9f10446e0881e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / nonebot_plugin_kuwo-0.2.6-cp310-abi3-macosx_10_12_x86_64.whl

Download URL nonebot_plugin_kuwo-0.2.6-cp310-abi3-macosx_10_12_x86_64.whl
Size 226.4 kB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a2b5b73cecaee030ccdeaa34d519df9787817f9cbb3f010c8bdd7d76943c1d2a
BLAKE2b-256 checksum
How to use checksums
023e884af03a126cc508e460f75377e5474c5340b01ce616a45b89d7c131ca50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log
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