Featured image of post 搭建私人音乐服务:下载、刮削、跨平台播放

搭建私人音乐服务:下载、刮削、跨平台播放

搭建私人音乐库早已不是什么新鲜事,但想把下载、刮削整理、跨设备播放串成一条流畅的流水线,还是需要花点心思组合工具。本文介绍我目前在用的一套方案:

  • 下载:go-music-dl(支持网易云、QQ音乐、酷狗等 10+ 平台)
  • 刮削 + 在线播放:music-tag-web(内置 Navidrome,支持 Subsonic 协议,v2 版本刮削能力更强)
  • Android:Tempo(基于开源 Tempo,增加了歌词显示和拖动功能)
  • 桌面端:Feishin

整体架构

这套方案支持两种音乐来源路径:

路径一(本地下载):go-music-dl 下载 → music-tag-web 刮削 → Subsonic 客户端播放

路径二(夸克网盘):音乐存夸克网盘 → OpenList 挂载 → music-tag-web 直连刮削+播放

两者共用同一套客户端生态:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
音乐来源
    ├── go-music-dl(下载到本地)
    │       └── music-tag-web(本地模式)
    │               └── Navidrome(Subsonic API)
    └── 夸克网盘
            └── OpenList(WebDAV)
                    └── music-tag-web(WebDAV模式)
                            └── 同上
                          ┌───────────┴───────────┐
                          ↓                       ↓
                       Tempo                  Feishin
                    (Android)               (桌面端)

一、下载音乐:go-music-dl

项目地址:https://github.com/guohuiyuan/go-music-dl

go-music-dl 是一个用 Go 编写的全网音乐下载工具,支持 10+ 主流平台(网易云音乐、QQ音乐、酷狗音乐、Bilibili、汽水音乐等),提供 Web 界面、TUI 终端和桌面应用三种使用模式。

Docker 部署

1
2
3
4
5
6
7
8
9
services:
  go-music-dl:
    image: ghcr.io/guohuiyuan/go-music-dl:latest
    container_name: go-music-dl
    ports:
      - "8099:8080"
    volumes:
      - /path/to/downloads:/app/downloads
    restart: unless-stopped

部署后访问 http://IP:8099 打开 Web 界面,搜索歌曲或歌单即可下载。

TUI 模式适合批量操作:

1
2
docker exec -it go-music-dl go-music-dl search "周杰伦"
docker exec -it go-music-dl go-music-dl download -o /app/downloads <song_id>

下载完成后,把音乐文件放到与 music-tag-web 共用的音乐目录,比如 /path/to/your/music

二、夸克网盘方案:OpenList + music-tag-web(先转移后刮削)

如果音乐已经存好在夸克网盘里,可以通过 OpenList 挂载,用 music-tag-web 浏览并把文件整理转移到本地,再进行刮削和播放。

不直接在线刮削的原因:网盘文件通过 WebDAV 读写不稳定,批量操作容易超时失败。推荐先转移文件到本地,再用本地模式刮削,体验更可靠。

部署 OpenList

项目地址:https://github.com/OpenListTeam/OpenList

OpenList 是 AList 的分支,支持挂载夸克网盘、百度网盘、阿里云盘等多种网盘,提供 WebDAV 接口。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
services:
  openlist:
    image: openlistteam/openlist:latest
    container_name: openlist
    ports:
      - "5244:5244"
    volumes:
      - /path/to/config:/opt/openlist/data
    environment:
      UMASK: 022
    restart: unless-stopped

部署后访问 http://IP:5244,查看默认密码:docker logs openlist,然后在后台添加夸克网盘存储(挂载路径填 /),记得关闭全局签名验证。

用 music-tag-web 整理并转移文件

music-tag-web 连接 OpenList 的 WebDAV 后,可以直接浏览夸克网盘里的音乐文件。找到要整理的歌之后,把文件复制/移动到本地音乐目录(/path/to/your/music),然后切换到本地模式进行刮削。

这样既能利用网盘存储音乐,又绕开了 WebDAV 在线刮削不稳定的问题。

三、刮削 + 在线播放:music-tag-web(本地文件)

如果音乐已经下载到本地,则使用 music-tag-web 直接读取本地文件进行刮削和播放。

music-tag-web 是这套方案的核心。它是一个 Web 版音乐标签编辑器,同时内置了 Navidrome,无需单独部署。最新 v2 版本在刮削能力上有明显增强,支持更多数据源,中文歌曲匹配率更高。

支持格式覆盖 FLAC、APE、WAV、AIFF、WV、MP3、M4A、OGG 等几乎所有常见音频格式,拖入文件夹即可批量刮削封面、标题、艺术家、专辑、歌词,并直接写入文件元数据标签。同时内置 Navidrome,可以通过网页直接播放音乐、管理歌单。

注意:v2 版本需要付费,功能更强(更多刮削数据源、Subsonic 播放支持等)。

music-tag-web 还可以额外挂载一个 volume,指向容器内的 /app/download 目录,与 go-music-dl 的下载目录共享,这样下载的音乐文件可以直接在 music-tag-web 里看到,无需手动搬运。

Docker Compose 部署

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
services:
  music-tag:
    image: xhongc/music_tag_web:latest
    container_name: music-tag-web
    ports:
      - "8002:8002"
    volumes:
      - /path/to/your/music:/app/media:rw
      - /path/to/your/config:/app/data
      - /path/to/downloads:/app/download:rw
    restart: unless-stopped

使用流程

  1. 访问 music-tag-webhttp://IP:8002,默认账号 admin/admin,首次登录后立刻改密码
  2. 刮削元数据:把音乐文件或文件夹拖入界面,点击"自动刮削",中文歌曲识别率很高。封面、艺术家、专辑、歌词都会自动写入文件标签
  3. 网页播放:刮削完成后,可以直接在浏览器里播放、管理歌单,适合临时场景或没有装客户端时使用
  4. Subsonic 客户端接入:music-tag-web 内置的 Navidrome 暴露 Subsonic API,各平台客户端均可连接使用

四、客户端推荐

Android:Tempo

项目地址:https://github.com/lategege/tempo

Tempo 截图

Tempo 基于开源的 Tempo 音乐播放器修改,原版不支持歌词显示,这是最大的痛点——听中文歌没有滚动歌词总感觉少了点什么。我在这个 fork 里增加了歌词显示功能,并支持通过拖动歌词来改变音乐的播放时间轴,解决部分歌曲歌词时间轴不准的问题。

Tempo 歌词显示

支持 Subsonic 协议,连接 music-tag-web 内置的 Navidrome 后自动同步歌单、封面、歌词,在一众 Subsonic 客户端中体验较好。

Tempo 功能截图 Tempo 功能截图 Tempo 功能截图

桌面端:Feishin

项目地址:https://github.com/jeffvli/feishin

Feishin 是一个现代化的自托管音乐播放器桌面端,支持 Navidrome、Jellyfin、Subsonic 等多种后端。界面美观,播放控制丰富(播放列表、队列管理、随机、均衡器等),支持 MPV 或 Web Player 两种音频后端。

Feishin 截图 Feishin 截图

下载对应平台的 Release 版本,填入 Navidrome 地址和账号密码即可使用:

1
2
3
4
设置步骤:
1. 打开 Feishin → Settings → Servers → Add Server
2. 选择 Navidrome,填入地址 http://IP:8002
3. 输入 music-tag-web 的账号密码登录

五、总结

用途工具特点
下载到本地go-music-dl10+平台,Web/TUI/桌面三模式
夸克网盘+转移OpenList + music-tag-web网盘音乐整理到本地再刮削,稳定可靠
本地刮削+播放music-tag-web v2内置Navidrome,v2刮削更强
AndroidTempo(fork)歌词显示+拖动,Subsonic
桌面端Feishin现代化UI,多后端支持

两条路径可以任选其一,也可以同时使用。夸克网盘方案省硬盘,适合已有大量收藏在网盘里的情况;本地下载方案更稳定,适合对网络条件要求高的场景。播放这块共用同一套 Subsonic 客户端生态,手机电脑都能无缝衔接。

build with Hugo, theme Stack, visits 0