为什么造这个?
2003 年 Napster 时代攒的 MP3、CD 转的 FLAC、从虾米 / iTunes Store 买的曲子…… 散落在三块硬盘、几个 NAS、若干网盘里。你想随时听任何一首,但现实是:
流媒体在删你的歌
Spotify 下架了某张专辑、Apple Music 改成了 remix 版、订阅到期"我的音乐"全消失。 你以为是租,结果连租约都说没就没。
本地文件是烂摊子
文件名一半乱码、专辑封面缺一半、CUE+APE 分轨包根本播不了、 同一首歌在三个目录里以 320k MP3 / FLAC / OGG 各存一份。
音乐被视频淹没
打开 YouTube Music 推你听演唱会 vlog;Spotify 塞你 video podcast; 打开 Apple Music 想随便放首歌,先吃一段 MV。 你只是想听,不想看任何东西。
跨设备同步是地狱
手机里只能塞下 1/10。iTunes 同步要插线、Plex Music UI 还是 2014 年的、 Jellyfin 把音乐当视频的二等公民。
付费方案要么贵要么闭源
Roon 一年 $150 还要 ROCK 主机。商业云盘音乐管家说停就停。 你的元数据、播放历史、自己的整理工作,又不是真的属于你。
MusicTidy 的答复
把所有音乐倒进一个目录,剩下交给 MusicTidy:自动 fingerprint 识别每首歌、 从 MusicBrainz 抓回准确元数据和专辑封面、规范目录结构、解 RAR / 拆 CUE 分轨、 合并跨格式重复。整理完,iOS 客户端连上就能听。
Fingerprint 识别
chromaprint + AcoustID 算每首歌的指纹,对得上 MusicBrainz 就把元数据填回。
自动归档
按 艺人/专辑/曲目 规范化目录,cover.jpg / .cue / .log 等 sidecar 跟着走。
原码 + 转码兼顾
WiFi 直传 FLAC;蜂窝服务器自动转 AAC 192k 省流量;下载长按选码率。
iOS 原生
Swift / SwiftUI 写的,跟 Apple Music 一样的播放体验:锁屏控制、车载、CarPlay、AirPlay。
专注的纯音乐
没视频、没短视频、没 podcast 推荐。打开就是你的曲库 → 选 → 听。一秒钟也不浪费在"建议你看一下"。
压缩包友好
RAR/ZIP/7z 自动解(unar,认 GBK / Shift-JIS),CUE+FLAC 自动拆轨,旧资源不再是死文件。
不上传你的数据
App 只连你自己的服务器。MusicBrainz 查询走 server → MB,没有任何遥测进入第三方。
多少钱?
免费。Server 是 MIT 开源你自己跑,iOS 客户端在 App Store 免费下载。 装好 + 连上你服务器,就已经是你的私有 Apple Music。
- 艺人 / 专辑 / 曲目浏览 + 搜索
- 原码 + 转码流播放
- 边听边自动缓存(5 GB LRU)
- 多服务器切换 + Face ID 解锁
- 锁屏控制 / 蓝牙 / CarPlay / AirPlay
- 整套 iOS UI 完整可用
没买 Pro 也能日常一直用,不会被弹窗或灰按钮挡。
- 整张专辑批量下载(可选码率)
- 自定义专辑封面(手机相册 / Google 搜图)
- 手动指认曲目(找回 AcoustID 误识别)
- 把当前队列保存为命名播放列表
- 支持作者继续开发
给重度玩家的快捷键。不买不影响"日常听歌"。
没装服务器?先在线试
我们维护了一个 demo 实例,里面装了 30 来首公共领域 / CC 授权的音乐 —— Kevin MacLeod、1940 年代上海老唱片、戦前昭和歌謡集。 装好 iOS 客户端,配下面这个地址就能用:
试 demo
方法 1:扫码自动填 —— 把下面的二维码截图存到相册, iOS App 启动后在服务器设置页点「扫二维码」选这张照片,三个字段自动填好。 密码进登录页时手输。
方法 2:手输
https demo.musictidy.com 443 (留空即可) demo2026 ⚠ demo 每天 04:00 JST 重置,请别把它当持久库用。
App 长什么样
iPhone 客户端的真实截图(演示从上面那台 demo 服务器拉的内容):
site/public/screenshots/01-XX.png ... 就能自动出现在这里。
怎么自己跑一份
服务端是 Python + FastAPI,跑在任何能装 Python 3.11 的盒子上:旧 Mac mini、NAS、廉价 VPS 都行。 下面是最短路径,详细见部署文档。
git clone https://github.com/WanpengQian/musictidy.git
cd musictidy/server
python3.11 -m venv .venv
.venv/bin/pip install -e .
echo "APP_PASSWORD=changeme" > .env
echo "MUSIC_ROOT=/path/to/your/music" >> .env
.venv/bin/python -m app.main
# 浏览器打开 http://localhost:8765/healthz