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,<0.8,暂时避开 0.8 系列的破坏性更新。默认 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。

当前版本 0.2.7 的本地验证环境为 Python 3.13.16 / Rust 1.99.0,插件支持 Python >=3.10,原生扩展使用 abi3-py310。 构建工具使用 maturin>=1.15.0,<2.0,Rust 绑定使用 pyo3 0.29.3;Release 工作流固定使用 maturin 1.15.0。

uv sync --dev --locked
uv run maturin develop --release --locked

更新依赖后需要重新构建原生扩展:

uv lock --upgrade
cargo update
uv sync --dev --locked
uv run maturin develop --release --locked

常用命令:

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

说明:

  • 发布版 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.7

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.7
File Size Uploaded
nonebot_plugin_kuwo-0.2.7.tar.gz 243.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for nonebot-plugin-kuwo 0.2.7
File
nonebot_plugin_kuwo-0.2.7-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details
nonebot_plugin_kuwo-0.2.7-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
nonebot_plugin_kuwo-0.2.7-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.7-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
nonebot_plugin_kuwo-0.2.7-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
nonebot_plugin_kuwo-0.2.7-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.7.tar.gz

Download URL nonebot_plugin_kuwo-0.2.7.tar.gz
Size 243.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d389ec033b5bcdfb4474991f547863f90e253d35c1e165814a9de158cb889208
BLAKE2b-256 checksum
How to use checksums
5f657595dc1727daf43c262fe17b629317927e130249b185a6d8b3de48797ce5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 3, 2026.

Transparency log

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

Download URL nonebot_plugin_kuwo-0.2.7-cp310-abi3-win_arm64.whl
Size 151.9 kB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
694782fa949c9afafb1213d7ba12b502781a04019427bf1729699ffd10a9a0f0
BLAKE2b-256 checksum
How to use checksums
88ce9a33ab78ce4ed3c4fd902326ebc3386f9f023410f8f91753f5888c66de3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 3, 2026.

Transparency log

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

Download URL nonebot_plugin_kuwo-0.2.7-cp310-abi3-win_amd64.whl
Size 150.9 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
ac54af1bd354179e2cc90991be1c95ddbbf2108c6b33bf17c752c6870a343724
BLAKE2b-256 checksum
How to use checksums
456962329f213a1bb10c0f2bbf6ad789bc75785129f8cea786c9971d3477efa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 3, 2026.

Transparency log

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

Download URL nonebot_plugin_kuwo-0.2.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 250.0 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
79ab4298cc9cae29eea2c0308fb2c9b58fbb3fe81a8822c622bc365c956ad514
BLAKE2b-256 checksum
How to use checksums
f0c08e5a03f29919b33d6518c91080e227820e7d7d89b51a49e4e1e9d7e777c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 3, 2026.

Transparency log

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

Download URL nonebot_plugin_kuwo-0.2.7-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 241.2 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
68d8ab1444bf8e5aff21f9b6853db9666b6516481f385b65035c934287d8ef3b
BLAKE2b-256 checksum
How to use checksums
1bc6399839f2a82103d61508d18759b3ecdb7b0a040f8b47d0703910ad88dfd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 3, 2026.

Transparency log

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

Download URL nonebot_plugin_kuwo-0.2.7-cp310-abi3-macosx_11_0_arm64.whl
Size 227.3 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c2e64f81f4214a13b55745581e3535c536b250d49d64c23e7f1d06c5d3663dfd
BLAKE2b-256 checksum
How to use checksums
6c40bfa9b8adb8d77aecc6231afee01598248f9a53e4ce605ac5bfdc69699f9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 3, 2026.

Transparency log

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

Download URL nonebot_plugin_kuwo-0.2.7-cp310-abi3-macosx_10_12_x86_64.whl
Size 227.0 kB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
95479c2fde5774d1161ef91d1f2e980aabaa16877c1c0e5e00aca1acd892989e
BLAKE2b-256 checksum
How to use checksums
ca53d2ca45ad82a7eac3fbd1bd0044bc3ae760f87338356b684f63f33d8f8746
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 3, 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