3 步跑通 MusicBox:网易云音乐命令行播放器从安装到源码完整指南
【免费下载链接】musicbox网易云音乐命令行版本项目地址: https://gitcode.com/gh_mirrors/mu/musicbox
MusicBox(项目名NetEase-MusicBox)是一个用 Python 编写的网易云音乐命令行播放器,让你直接在终端里搜索、播放和管理歌曲,而不必打开浏览器或桌面客户端。它用字符块渲染出菜单、进度条和歌词,支持多档音质、扫码登录、本地缓存,甚至能配合 AI Agent 通过命令控制播放。本文带你从装好依赖、扫码登录,到读懂核心代码和配置,一步步把它真正用起来。
🚀 安装依赖与系统环境
MusicBox 要求Python 3.10 及以上。真正发声的部分依赖外部解码器,按你需要的音质分两档装:
| 系统 | 必装(MP3) | 可选(FLAC / Hi-Res) | 工具 |
|---|---|---|---|
| macOS | mpg123 | mpv | brew install mpg123 mpv uv |
| Ubuntu / Debian | mpg123 | mpv | sudo apt-get install mpg123 mpv |
| CentOS / Red Hat | mpg123 | mpv | sudo yum install -y mpg123 mpv |
💡 低配设备(如树莓派)建议只装
mpg123,跳过mpv,避免拉入一大串图形/视频依赖。
装好系统依赖后,推荐用uv或pipx把 MusicBox 装成全局命令:
uv tool install netease-musicbox # 或 pipx install NetEase-MusicBox想参与开发的话,克隆仓库后在目录里执行uv tool install .(开发期可加-e实现源码改动即时生效),或干脆用uv run musicbox在本地直接跑。项目元数据与依赖都声明在 pyproject.toml 里。
🎬 首次运行与扫码登录
安装完成后,在终端敲musicbox即可进入 TUI 界面:
第一次进入登录相关功能时,终端会画出一个二维码。现在只支持扫码登录,不再支持账号密码。用网易云音乐手机 App 扫码并确认,Cookie 就会写入数据目录(默认~/.netease-musicbox/cookie.txt)。
几个容易踩的点:
- 二维码靠字符块渲染,窗口建议 ≥ 25 行,并使用等宽字体。
- 必须用手机 App 扫码确认,不支持直接打开 URL 完成登录。
⌨️ 界面操作与 Vim 风格快捷键
MusicBox 的交互逻辑在 menu.py,渲染层在 ui.py。它刻意沿用了 Vim 的操作习惯,上手后效率很高。几个高频键:
| 按键 | 作用 |
|---|---|
j/k | 下移 / 上移 |
[/] | 上一曲 / 下一曲 |
Space | 播放 / 暂停 |
m | 回到主菜单 |
f | 当前列表模糊搜索 |
i | 当前歌曲信息 |
Shift + p | 切换播放模式 |
q | 退出 |
带数字修饰的快捷键(如num + j快速跳 n 首、num + Shift + g跳第 n 首)需要先输入数字再按被修饰的键。完整键位表见 README.md 的快捷键章节。
🧩 核心模块速览
整个播放器都在 NEMbox/ 目录下,各文件职责清晰,方便按需阅读:
| 模块 | 文件 | 职责 |
|---|---|---|
| 数据接口 | api.py | 封装网易云搜索、歌单、榜单、歌词、播放链接等全部请求 |
| 播放引擎 | player.py | 管理播放队列、模式,并在mpg123/mpv两种后端间切换 |
| 加密处理 | encrypt.py | EAPI 请求加密与解密,登录与接口调用的底层依赖 |
| 命令行 | cli.py | 面向脚本与 AI Agent 的无状态命令入口,支持--json输出 |
| 后台守护 | daemon.py | 常驻进程musicboxd,持有唯一播放状态,通过本地 socket 响应控制指令 |
| 界面渲染 | ui.py | 用 curses 画菜单、进度条、歌词和登录二维码 |
| 菜单逻辑 | menu.py | 处理按键事件、页面跳转与搜索 |
| 持久化 | storage.py | 把用户、收藏、歌曲元数据存进database.json |
| 桌面歌词 | osdlyrics.py | 基于 Qt 在桌面悬浮窗显示滚动歌词 |
程序入口在main.py:带参数时走 CLI 分支,不带参数则拉起 TUI;而init.py 负责在导入时自动创建好配置、缓存与日志目录,保证首次运行就有齐全的文件结构。
⚙️ 配置与数据文件
路径规则集中在 const.py,并遵循 XDG 标准。常用文件如下:
| 文件 | 默认位置 | 用途 |
|---|---|---|
config.json | ~/.netease-musicbox/config.json | 主配置:音质、后端、快捷键、桌面歌词 |
cookie.txt | 数据目录下 | 扫码登录后的凭证 |
database.json | 数据目录下 | 本地收藏、播放历史等数据 |
musicbox.log | 数据目录下 | 运行日志,排错时先查它 |
cached/ | 缓存目录下 | 本地缓存歌曲 |
主配置由 config.py 读写。最常改的两项:
music_quality:音质等级,可填数字或名称。值 说明 0/exhigh极高,最高 320kbps 3/lossless无损 FLAC 4/hires高清臻音 96kHz/24bit jymaster超清母带 192kHz/24bit player_backend:默认mpg123只播 MP3;设为mpv则全程用mpv,否则仅 FLAC 自动切到mpv。
⚠️ 网易云歌曲接口目前只接受中国大陆访问。如果你在海外,需要自行设置代理并确认出口 IP 属于大陆地区后再运行。
🤖 进阶:CLI 与 AI Agent 控制
除了 TUI,MusicBox 还能被脚本和 AI Agent 直接驱动。数据类命令(搜索、歌单、榜单)无状态,可单独调用;播放控制类命令则依赖后台守护进程 daemon.py:
musicbox search 周杰伦 --type song --json musicbox play --id 1847408145 --json musicbox status --json仓库里的 skills/musicbox/SKILL.md 给出了完整的命令速查与「搜歌→播放→读回状态」的操作配方,可以让 Cursor、Claude Code 等 Agent 安全地控制播放。注意 TUI 和守护进程互斥,二者共用同一把运行锁,不能同时启动。
🔧 常见问题排错
- 某些歌曲总时长显示
00:01:通常是版权问题,属正常现象。 - 特定终端无法出声:先确认同一终端下
mpg123能否正常播放,再换终端试musicbox,定位是解码器还是环境问题。 - 查日志:
tail -f ~/.local/share/netease-musicbox/musicbox.log实时跟踪运行状态。
想更新版本或了解改动细节,可参考 CHANGELOG.md;项目基于 MIT 协议开源。装好、扫码、敲下musicbox,音乐就响在终端里了。
【免费下载链接】musicbox网易云音乐命令行版本项目地址: https://gitcode.com/gh_mirrors/mu/musicbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考