🎵 Music Scraper
[](https://github.com/SimonLYU/MusicScraper#-music-scraper)
专为 NAS 用户打造的音乐元数据刮削工具
📖 项目简介
Music Scraper 是一款轻量级的音乐元数据刮削工具,帮助你自动获取音乐文件的封面、歌词、艺术家等信息。专为 NAS(网络存储)用户设计,支持 Docker 一键部署,通过网页即可在手机/电脑上操作。
🎯 解决什么问题?
- 音乐文件没有封面,播放器显示空白?
- 歌曲信息不完整,无法按专辑/艺术家分类?
- 手动一首首填写信息太麻烦?
Music Scraper 帮你自动完成这些工作!
✨ 功能特性
| 功能 |
说明 |
| **🎯**多数据源 |
支持企鹅、云村、酷系、苹果、开放库等 6 大音乐数据源 |
| 🖼️****智能匹配 |
基于置信度算法自动选择最佳匹配结果 |
| **📱**移动端适配 |
赛博朋克风格 UI,支持手机/平板访问 |
| **🚀**一键部署 |
Docker 镜像开箱即用,专为 NAS 优化 |
| **📦**批量处理 |
支持整个文件夹自动批量刮削 |
| **🎵**多格式支持 |
MP3、FLAC、M4A、OGG、WAV、WMA、DSF、DFF 等 |
| **📝**歌词获取 |
自动下载歌词并保存为 LRC 文件 |
| **🎤**内嵌歌词 |
支持将歌词直接写入音频文件元数据,独立歌词编辑页面 |
| **🔄**多源互补 |
首选源缺少数据时,自动从其他源补充 |
| 🛡️****广告过滤 |
自动识别并清理音乐标签中的广告内容,保持元数据干净整洁 |
| **⚡**熔断保护 |
数据源连续失败后自动熔断,避免无效请求,提升稳定性 |
| **🎨**双主题支持 |
暗夜/樱两种主题风格,支持一键切换 |
| ✏️****手动编辑 |
独立编辑页面,支持元数据修改和封面上传 |
| **🎤**双语歌词 |
自动合并原文和翻译歌词 |
| **🔐**登录认证 |
密码保护 + 两步验证(2FA),保护您的音乐库安全 |
| **🧰**工具箱集成 |
内置工具箱前端,硬链接整理、自动分类、刮削后自动联动(v2.0.0 新增) |
| **🎧**Hi-Res 支持 |
DSF/DFF/DTS 高解析度音频格式支持(v2.0.0 新增) |
| **🔍**搜索增强 |
文件浏览器支持按标题/艺术家/专辑字段筛选搜索(v2.0.0 新增) |
| **⚡**高性能架构 |
Go 语言重构,原生并发,性能大幅提升(v2.0.0 新增) |
| ⚙️****并发可配置 |
刮削并发数用户可配置(1-16)(v2.0.0 新增) |
飞牛Docker Compose部署
首先在镜像仓库中下载两个镜像;
# x86 架构(绿联云、威联通、部分群晖)
docker pull minzgo/music-scraper:2.0.0-amd64
docker pull minzgo/music-toolbox:2.0.0-amd64
# ARM 架构(部分群晖、树莓派)
docker pull minzgo/music-scraper:2.0.0-arm64
docker pull minzgo/music-toolbox:2.0.0-arm64
minzgo/music-scraper:2.0.0-amd64

minzgo/music-toolbox:2.0.0-amd64

基础配置(仅刮削器):
version: '3'
services:
music-scraper:
image: minzgo/music-scraper:2.0.0-amd64
pull_policy: never # 重要!使用本地镜像,不从远程拉取
container_name: music-scraper
ports:
- "7301:7301"
volumes:
- /你的音乐目录:/app/music # 修改为你的音乐文件夹路径
- ./data:/app/data # 数据持久化
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
完整配置(刮削器 + 工具箱):
version: '3'
services:
# 刮削器主服务
music-scraper:
image: minzgo/music-scraper:2.0.0-amd64
pull_policy: never
container_name: music-scraper
privileged: true
ports:
- "7301:7301"
volumes:
# Docker socket(用于“工具箱与刮削器的监控关联逻辑”,自动获取挂载映射,实现路径自动转换)
- /var/run/docker.sock:/var/run/docker.sock:ro
# 将下文中“/你的音乐目录”改为你真实存放音乐的路径,注“:/app/music”部分保留勿动。
- /vol2/1000/Music:/app/music
- /vol1/1000/docker/music-scraper/data:/app/data
environment:
- TZ=Asia/Shanghai
- TOOLBOX_URL=http://music-toolbox:7305 # 工具箱地址
restart: unless-stopped
depends_on:
- music-toolbox
# 工具箱服务(硬链接整理)
music-toolbox:
image: minzgo/music-toolbox:2.0.0-amd64
pull_policy: never
container_name: music-toolbox
ports:
- "7305:7305"
volumes:
# Docker socket(用于"工具箱与刮削器的监控关联逻辑",自动获取挂载映射,实现路径自动转换)
- /var/run/docker.sock:/var/run/docker.sock:ro
# 挂载音乐目录的父目录,确保硬链接正常工作
# 例如:音乐在 /volume2/音乐,输出到 /volume2/整理后,则挂载 /volume2
- /vol2/1000:/app/source:rw
- /vol1/1000/docker/music-scraper/toolbox-data:/app/data
environment:
- TZ=Asia/Shanghai
- SCRAPER_URL=http://music-scraper:7301 # 刮削器地址(用于授权验证)
restart: unless-stopped
配置说明
| 配置项 |
说明 |
image |
必须与导入的镜像名称一致 |
pull_policy: never |
关键配置!禁止从远程拉取,只使用本地镜像 |
volumes |
刮削器挂载音乐目录,工具箱挂载父目录(确保硬链接正常) |
TOOLBOX_URL |
刮削器连接工具箱的地址,****必须使用 Docker 服务名如 http://music-toolbox:7305 |
/var/run/docker.sock |
Docker socket,用于自动获取挂载映射,实现刮削器和工具箱间的路径自动转换 |
**💡 **硬链接要求:工具箱的源目录和输出目录必须在同一挂载点(/app/source)下,否则会自动降级为复制。
**⚠️ **联动配置关键点:
TOOLBOX_URL:刮削器连接工具箱的地址,使用 Docker 服务名 http://music-toolbox:7305,不能使用 localhost
SCRAPER_URL:工具箱连接刮削器的地址,使用 Docker 服务名 http://music-scraper:7301(用于授权验证)
- Docker socket 挂载:两个服务都需要挂载
/var/run/docker.sock,用于自动获取挂载映射
- 工具箱挂载:挂载音乐目录的父目录到
/app/source,例如音乐在 /volume2/音乐,则挂载 /volume2:/app/source
📖 使用指南
[](https://github.com/SimonLYU/MusicScraper#-%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97)
1️⃣ 浏览音乐文件
[](https://github.com/SimonLYU/MusicScraper#1%EF%B8%8F%E2%83%A3-%E6%B5%8F%E8%A7%88%E9%9F%B3%E4%B9%90%E6%96%87%E4%BB%B6)
- 打开首页,点击 "浏览文件" 卡片
- 导航到包含音乐文件的目录
- 点击音乐文件可查看当前元数据
2️⃣ 手动刮削单首歌曲
[](https://github.com/SimonLYU/MusicScraper#2%EF%B8%8F%E2%83%A3-%E6%89%8B%E5%8A%A8%E5%88%AE%E5%89%8A%E5%8D%95%E9%A6%96%E6%AD%8C%E6%9B%B2)
- 在文件浏览中选择一首歌曲
- 点击 "刮削" 按钮
- 选择数据源(华语歌曲推荐企鹅或云村)
- 从搜索结果中选择正确的匹配项
- 勾选要写入的字段(封面、标题、艺术家等)
- 点击 "确认写入"
3️⃣ 自动批量刮削
[](https://github.com/SimonLYU/MusicScraper#3%EF%B8%8F%E2%83%A3-%E8%87%AA%E5%8A%A8%E6%89%B9%E9%87%8F%E5%88%AE%E5%89%8A)
- 打开首页,点击 "自动刮削" 卡片
- 选择要刮削的目录
- 配置刮削选项:
- 数据源:勾选要使用的数据源(支持多选,会自动互补)
- 字段:选择要获取的信息(封面、歌词、标题等)
- 最低置信度:设置匹配阈值(建议 70%)
- 跳过已有:是否跳过已有封面/歌词的文件
- 点击 "开始刮削"
4️⃣ 查看刮削历史
[](https://github.com/SimonLYU/MusicScraper#4%EF%B8%8F%E2%83%A3-%E6%9F%A5%E7%9C%8B%E5%88%AE%E5%89%8A%E5%8E%86%E5%8F%B2)
- 打开首页,点击 "刮削记录" 卡片
- 查看历史刮削任务和结果
- 可以查看每首歌的刮削详情
5️⃣ 查看音乐库统计
[](https://github.com/SimonLYU/MusicScraper#5%EF%B8%8F%E2%83%A3-%E6%9F%A5%E7%9C%8B%E9%9F%B3%E4%B9%90%E5%BA%93%E7%BB%9F%E8%AE%A1)
- 打开首页,点击 "音乐库概览" 卡片
- 查看元数据完整度、格式分布、刮削覆盖率等统计信息
6️⃣ 使用工具箱(硬链接整理)
[](https://github.com/SimonLYU/MusicScraper#6%EF%B8%8F%E2%83%A3-%E4%BD%BF%E7%94%A8%E5%B7%A5%E5%85%B7%E7%AE%B1%E7%A1%AC%E9%93%BE%E6%8E%A5%E6%95%B4%E7%90%86)
💡 需要部署工具箱服务,参见「方式三:Docker Compose 项目」的完整配置
- 打开首页,点击 "工具箱" 卡片进入工具箱
- 点击 "硬链接整理" 进入整理功能
- 首次使用需要配置:
- 源目录:选择音乐文件所在目录(在
/app/source 下选择)
- 目标目录:选择硬链接输出目录(在
/app/source 下选择,需与源目录同级或平级)
- 分类模式:歌手/专辑/流派/年份/平铺
- 重命名格式:保留原名/音轨号-标题/歌手-标题 等
- 监控模式:实时监控/定时轮询/刮削器联动(推荐刮削器联动)
- 可选功能:
- 批量整理:一次性处理所有文件
- 自动监控:开启后刮削完成自动触发整理
监控模式说明:
- 实时监控:监控文件系统事件,新文件立即整理
- 定时轮询:每隔 N 分钟扫描一次目录
- 刮削器联动(推荐):仅响应刮削器通知,确保文件元数据完整后再整理
硬链接的优势:
- 不占用额外磁盘空间
- 修改元数据会同步到所有硬链接
- 删除硬链接不影响原文件
⚙️ 配置说明
[](https://github.com/SimonLYU/MusicScraper#%EF%B8%8F-%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E)
环境变量
[](https://github.com/SimonLYU/MusicScraper#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F)
| 变量 |
默认值 |
说明 |
适用服务 |
PORT |
7301 |
服务端口 |
刮削器 |
MUSIC_DIR |
/app/music |
音乐文件目录 |
刮削器 |
DATA_DIR |
/app/data |
数据存储目录 |
刮削器/工具箱 |
TZ |
UTC |
时区设置 |
刮削器/工具箱 |
TOOLBOX_URL |
http://localhost:7305 |
工具箱内部通信地址(后端间通信) |
刮削器 |
TOOLBOX_EXTERNAL_URL |
自动推断 |
工具箱外部访问地址(浏览器跳转用,反向代理场景必填) |
刮削器 |
SCRAPER_URL |
自动发现 |
刮削器地址(用于授权验证) |
工具箱 |
SCRAPE_WORKERS |
8 |
刮削并发数(1-16,可在设置界面调整) |
刮削器 |
💡 地址配置说明:
TOOLBOX_URL:刮削器后端连接工具箱的地址,Docker 部署时必须使用服务名如 http://music-toolbox:7305(Docker 内网通信)
TOOLBOX_EXTERNAL_URL:用户浏览器跳转到工具箱的地址,反向代理场景需配置为外部可访问地址
SCRAPER_URL:工具箱后端连接刮削器的地址,Docker 部署时必须使用服务名如 http://music-scraper:7301(用于授权验证)
- 如果未配置
TOOLBOX_EXTERNAL_URL,前端会自动使用 当前页面主机名:7305 作为跳转地址
⚠️ 常见错误:TOOLBOX_URL 和 SCRAPER_URL 不能配置为 localhost,因为容器内的 localhost 指向容器自身!
数据卷说明
[](https://github.com/SimonLYU/MusicScraper#%E6%95%B0%E6%8D%AE%E5%8D%B7%E8%AF%B4%E6%98%8E)
| 路径 |
说明 |
适用服务 |
/app/music |
音乐文件目录 |
刮削器 |
/app/data |
数据存储目录(配置、数据库) |
刮削器/工具箱 |
/app/source |
数据源根目录(包含音乐和输出目录) |
工具箱 |
/var/run/docker.sock |
Docker socket(路径自动转换) |
刮削器/工具箱(联合部署时) |
💡 Docker socket 说明:挂载 Docker socket 后,刮削器和工具箱可以自动获取各自的挂载映射,实现路径自动转换,无需手动配置环境变量。
封面尺寸设置
[](https://github.com/SimonLYU/MusicScraper#%E5%B0%81%E9%9D%A2%E5%B0%BA%E5%AF%B8%E8%AE%BE%E7%BD%AE)
在 设置 页面可以调整下载封面的最大分辨率:
| 选项 |
说明 |
| 300px |
小封面,节省空间 |
| 500px |
中等封面(推荐) |
| 800px |
大封面,高清显示 |
| 1000px |
超大封面 |
🔧 支持的音频格式
[](https://github.com/SimonLYU/MusicScraper#-%E6%94%AF%E6%8C%81%E7%9A%84%E9%9F%B3%E9%A2%91%E6%A0%BC%E5%BC%8F)
完全支持(读写)
[](https://github.com/SimonLYU/MusicScraper#%E5%AE%8C%E5%85%A8%E6%94%AF%E6%8C%81%E8%AF%BB%E5%86%99)
| 格式 |
元数据支持 |
封面嵌入 |
歌词嵌入 |
说明 |
| MP3 |
✅ ID3v2 |
✅ |
✅ |
最常见格式 |
| FLAC |
✅ Vorbis |
✅ |
✅ |
无损格式 |
| M4A/AAC |
✅ MP4 |
✅ |
✅ |
Apple 格式 |
| OGG |
✅ Vorbis |
✅ |
✅ |
开源格式 |
| WAV |
⚠️ 有限 |
❌ |
✅ |
建议转换格式 |
| WMA |
✅ ASF |
✅ |
✅ |
Windows 格式 |
| AIFF |
✅ ID3v2 |
❌ |
✅ |
Apple 无损格式 |
| APE |
✅ APEv2 |
❌ |
✅ |
Monkey's Audio 格式 |
| WavPack |
✅ APEv2 |
❌ |
✅ |
WavPack 格式 |
Hi-Res 音频(只读,v2.0.0 新增)
[](https://github.com/SimonLYU/MusicScraper#hi-res-%E9%9F%B3%E9%A2%91%E5%8F%AA%E8%AF%BBv200-%E6%96%B0%E5%A2%9E)
| 格式 |
元数据支持 |
封面嵌入 |
歌词嵌入 |
说明 |
| DSF |
🎧 只读 |
❌ |
❌ |
DSD Stream File,索尼 Hi-Res 格式 |
| DFF |
🎧 只读 |
❌ |
❌ |
DSDIFF 格式 |
| DTS |
🎧 只读 |
❌ |
❌ |
DTS 音频格式 |
💡 Hi-Res 格式因技术限制暂不支持写入,但可以读取并显示现有元数据,刮削时会自动跳过写入操作
🌐 数据源说明
[](https://github.com/SimonLYU/MusicScraper#-%E6%95%B0%E6%8D%AE%E6%BA%90%E8%AF%B4%E6%98%8E)
| 数据源 |
特点 |
推荐场景 |
| 企鹅音乐 |
华语覆盖全,封面高清 |
华语歌曲首选 |
| 云村音乐 |
华语覆盖好,有歌词 |
华语歌曲备选 |
| 酷狗音乐 |
歌词资源丰富 |
获取歌词 |
| 酷沃音乐 |
曲库较全 |
备用数据源 |
| 苹果音乐 |
欧美日韩覆盖好 |
外语歌曲 |
| 开放数据库 |
开放音乐数据库,数据规范 |
专业用户 |
💡 建议:勾选多个数据源,系统会自动使用置信度最高的结果,并从其他源补充缺失数据。
注:可以试用6天,觉得好用再打赏获得永久激活码;