个人数据保全计划:搭建私有音乐库
共 7144字,需浏览 15分钟
·
2023-10-13 17:40
前言
现在听歌比以前方便了很多,有各种在线服务,可能大部分人都不像之前一样需要自己下载音乐导入到MP3或者手机里了。
但还是那句话,数据永远是自己掌握才好,你永远不知道你喜欢的歌曲哪一天就在音乐平台上变灰,所以遇到喜欢的歌曲,为了防止版权失效,就尽早下载到本地吧。
本文记录搭建私有音乐库的过程,包括:下载、整理、搭建流媒体服务、本地播放器等。
下载
我大部分的歌单都在网抑云里,所以目前我使用 pyncm
这个工具来下载。
探索过程
我先后使用了这几个工具
-
Beadd/Creamplayer - 基于electron,比较简陋,能下载,但经常出错,用了一下就放弃了 -
Java-S12138/Music_Download - 看起来是基于PyQt开发的,我用了之后发现无法下载,弃用了 -
magicdawn/yun-playlist-downloader - 基于node的命令行工具,可以批量下载歌单里的音乐,还不错,我用这个工具下载了一批歌曲,但好像无法写入元数据,最后还是弃用 -
mos9527/pyncm - 最终使用这个,比较方便,功能都有,也可以写入元数据,登录自己的账号(前提是有会员)之后可以下载VIP歌曲
还有一个是网友推荐的,但我还没试过
QQFlacMusicDownloader - 可以用来下载无损音乐
pyncm
这是基于Python的命令行工具,同时也可以通过Python代码调用。
安装
pip install pyncm
pip install mutagen
pip install tqdm
pip install coloredlogs
后面三个补充功能的依赖
-
mutagen
: 为下载的音乐添加元数据 -
tqdm
: 显示实时下载进度 -
coloredlogs
: 彩色日志输出
使用
不登录,使用匿名账号下载歌单里的歌曲
pyncm "https://music.163.com/playlist?id=123908306&userid=82133129" -m 4 -t "{artists} - {track}" --quality exhigh --no-overwrite
参数说明:
-
-m 4
- 同时下载4首 -
-t "{artists} - {track}"
- 文件名格式为「歌手 - 歌曲名」 -
--quality exhigh
- 下载音质为较高 -
hires -
lossless - 无损 -
exhigh - 较高 -
standard - 标准 -
--no-overwrite
- 不覆盖已有音乐
登录账号
pyncm --phone 123456 --pwd 123456 --save "login-session.conf"
使用手机号和密码登录,然后把登录信息保存在文件里
下次下载的时候,可以使用 --load xxx.conf
参数,读取登录信息。
整理
本地整理
在本地整理音乐,可以使用 mp3tag 这个应用
可以直接使用 scoop 安装(推荐Windows用户使用这个包管理器)
如果没有 scoop 的话,可以去官网下载: https://www.mp3tag.de/en/
scoop install mp3tag
安装之后可以执行以下命令把它添加到右键菜单,方便使用
PS:具体路径要根据scoop安装后的提示来
start 'regsvr32' -Verb 'RunAs' -Args @("C:\Users\Deali\scoop\apps\mp3tag\current\Mp3tagShell.dll", '/s')
打开之后就可以编辑歌曲的元数据了。
私有云
音乐库当然是得搭配 NAS 使用最好。
当把音乐文件放在 NAS 上面之后,再使用本地的元数据软件来管理就显得不太方便,这时搭建一个在线服务就会方便很多。
本文推荐的是 xhongc/music-tag-web 这个项目
使用 docker-compose 部署
version: '3'
services:
music-tag:
image: xhongc/music_tag_web:latest
container_name: music-tag-web
ports:
- "8001:8001"
volumes:
- /path/to/your/music:/app/media:rw
- /path/to/your/config:/app/data
command: /start
restart: always
直接一把梭启动就完事了,更多的操作看项目主页的文档。
搭建流媒体服务
流媒体这块,我参考了许多网友的经验
v2上的 jasonyang9 老哥提供了一个很详细的思路
预处理:
预处理-转码:不建议转码,流服务器会自动帮助客户端动态处理 预处理-拆分:CUE 到每音轨 MP3 等,mp3splt 预处理-拆分(例外):Enigma 之类的专辑不拆分,音轨之间有过渡内容 预处理-标签:Picard 全自动或半自动打标签 预处理-标签规范:albumartist-date-album-tracknumber-title-genre 预处理-统一回放增益:mp3gain ,aacgain 流服务器:Navidrome ,Lightweight Music Server ,Gonic ( Docker 或编译安装)等
客户端:任何支持 Subsonic ,Airsonic ,Madsonic 的播放器 客户端推荐:DSub ( Android ),Strawberry ( Linux ),Clementine (目前唯一支持 Win7 的老古董)
Navidrome 和 Gonic 我都试着部署了,用下来还是 Navidrome 比较好用。
使用 docker 部署 Navidrome
我是按照官网提供的配置来的
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "/path/to/data:/data"
- "/path/to/music:/music:ro"
启动之后就会自动扫描音乐
网页版UI
还能直接在网页上播放
挺不错的,跟jellyfin这类软件差不多。
客户端
到了开源社区发力的时候了,Navidrome支持多种协议,比如Subsonic ,Airsonic ,Madsonic这些,所以只要支持这些协议的客户端都可以使用。
以下是我在网络上搜集到的一些客户端列表,可以根据自己需求进行选择。
-
iOS: play:Sub, substreamer, Amperfy and iSub -
Android: DSub, Subtracks, substreamer, Ultrasonic and Audinaut -
Web: Subplayer, Airsonic Refix, Aurial, Jamstash and Subfire -
Desktop: Sublime Music (Linux) and Sonixd (Windows/Linux/macOS) -
CLI: Jellycli (Windows/Linux) and STMP (Linux/macOS) -
Connected Speakers: -
Sonos: bonob -
Alexa: AskSonic -
Other: -
Subsonic Kodi Plugin -
Navidrome Kodi Plugin -
HTTPDirFS
Android 客户端
我主要试用了几个手机上的客户端,体验都不错。
大部分都是开源的,Android上的开源App建议使用 F-droid 商店来下载。
PS: Obtainium 也不错,可以自行把开源App项目的 GitHub、Gitlab 主页添加进去,直接跟踪项目的更新。
tempo
这 App 的界面还是不错的,就是有点容易闪退,不知道是不是我的手机问题。
subtracks
开源的,不错的,不过好像没有全部音乐列表,都是以专辑或歌手的形式展现。
substreamer
这个没有开源,需要在 Google Play 下载
官网: https://substreamerapp.com/
substreamer Your Music. Your Way.
The best free client app for the subsonic music server. Get your music, your way with subsonic and substreamer.
小结
总算又把「个人数据保全计划」推进了一步,这套方案也许不是最完美的,但行之有效,可以把喜爱的音乐自行管理起来,再也不用担心某天突然变灰下架了~
互联网是每个人的,但却又不是每个人都能控制的。
几个 Android 的流媒体客户端用下来,体验都挺一般的,或许把音乐复制到手机上再搭配本地播放器会有比较好的体验(比如椒盐音乐)。
现在的手机存储空间都很大,而且我的还可以用储存卡(mate系列传统),1000首无损音乐也就几十个GB,对于现在白菜价的储存空间来说还是比较轻松的~
参考资料
-
https://v2ex.com/t/964870 -
音乐迁移计划 - https://blog.wayner.cn/music-go -
https://github.com/QiuChenlyOpenSource/QQFlacMusicDownloader -
https://github.com/mos9527/pyncm -
2023 年还在坚持本地听歌:Android 音乐播放器还有哪些好选择? -
Navidrome – 开源音乐服务器,自建云端音乐播放器