基于 go-musicfox 改造的 QQ 音乐命令行客户端。
UI 基于 charmbracelet/bubbletea,音频后端支持 AVFoundation (macOS)、Beep (跨平台)、MPV、MPD、DLNA 等。
- ✅ 二维码登录(QQ / 微信)
- ✅ 我的歌单 / 收藏歌单
- ✅ 歌单详情与播放
- ✅ 歌词显示
- ✅ 搜索歌曲
- ✅ 播放模式切换(顺序/循环/随机/单曲)
- ✅ 快捷键操作(按
?查看帮助)
| 依赖 | 版本 | 说明 |
|---|---|---|
| Go | ≥ 1.22 | 编译 |
| Python | ≥ 3.10 | QQ 音乐 API 后端 |
| QQMusicApi | latest | Python 依赖,需在本机可用 |
| uv(推荐) | latest | 自动管理 Python 依赖 |
# Debian/Ubuntu
sudo apt install libflac-dev libasound2-dev
# Arch
sudo pacman -S flac
# Fedora
sudo dnf install flac-develgit clone https://github.com/go-musicfox/go-musicfox.git
cd go-musicfox
git checkout qq
# 确保 QQMusicApi 在本机可用(以下二选一):
# 方式 A:使用 uv(推荐),项目放在相邻目录即可自动发现
git clone https://github.com/luren-dc/QQMusicApi.git ../QQMusicApi
# 方式 B:手动安装到 Python 环境
pip install qqmusic-api
# 编译
make./bin/musicfox启动时会自动拉起 Python 后端(hack/qqapi/app.py),退出时自动关闭。
进入主菜单 → 二维码登录 → 用 QQ 或微信扫码。
| 变量 | 说明 | 默认值 |
|---|---|---|
QQMUSIC_API_BASE_URL |
覆盖后端完整地址 | http://127.0.0.1:17891 |
QQMUSIC_API_PORT |
仅覆盖端口 | 17891 |
QQMUSIC_API_UV_PROJECT |
指定 QQMusicApi 项目路径(uv 模式) | 自动发现 |
QQMUSIC_API_PYTHONPATH |
指定 QQMusicApi 的 Python 路径 | 自动发现 |
- 自动启动:Go 端启动时自动拉起 Python 后端
- 版本协商:通过
/api/version检查已有后端版本,匹配则复用,不匹配则重启 - 自动退出:Go 端退出时通过 stdin pipe 断开 +
/api/exit接口 + 进程组 SIGKILL 三重保险确保 Python 后端退出 - 手动启动:也可单独运行
python hack/qqapi/app.py
按 ? 查看完整帮助。常用快捷键:
| 按键 | 功能 |
|---|---|
n / Enter |
进入 / 播放 |
b / Esc |
返回 |
Space |
播放 / 暂停 |
[ / ] |
上一首 / 下一首 |
- / = |
音量减 / 音量加 |
p |
切换播放模式 |
c |
当前播放列表 |
/ |
搜索当前列表 |
q |
退出 |
路径:
- macOS:
$HOME/Library/Application Support/go-musicfox/config.toml - Linux:
$XDG_CONFIG_HOME/go-musicfox/config.toml - Windows:
%AppData%\go-musicfox\config.toml
详见 配置示例。
cmd/ 程序入口
hack/qqapi/ Python QQ 音乐 API 后端
app.py HTTP 服务(登录/歌单/播放/歌词/搜索)
static/ 调试用静态页面
internal/
qqapi/ QQ API Go 客户端 + 后端进程管理
ui/ TUI 界面(菜单、播放器、歌词渲染)
lyric/ 歌词解析与服务
player/ 播放引擎(beep/osx/mpv/mpd/dlna)
...