Files
MyTool/README.md
T

2.2 KiB

MangTool —— 音乐文件一键导入工具

面向 Navidrome 音乐服务器的音频文件智能导入管线。

一键导入工作流

将待处理的音频文件放入 Input/ 目录,点击「开始一键导入」即可自动完成:

  1. 扫描 — 递归扫描 Input 目录下的所有音频文件
  2. 校验 — 检查 Title/Artist/Album 元数据是否完整,缺失文件移入 Rejected/MissingMetadata
  3. 繁简转换 — 将繁体中文标签自动转为简体
  4. 格式转换 — 将 WAV/APE/AIFF/WV/TTA 转为 FLAC(需 FFmpeg),失败文件移入 Rejected/ConversionFailed
  5. 去重 — 基于 Artist+Album+Disc+Track+Title 归一化身份标识对比 Library 已有文件,重复移入 Rejected/Duplicate
  6. 入库 — 有效文件按 Artist/Album (year)/NN - Title.ext 布局移入 Library

目录结构

BasePath/
├── Input/              ← 放入待处理的音频文件
├── Library/            ← 整理后的 Navidrome 兼容曲库
└── Rejected/           ← 被拒绝的文件按原因分类
    ├── MissingMetadata/
    ├── Duplicate/
    ├── ConversionFailed/
    ├── Unreadable/
    └── Other/

构建与运行

# 后端
cd backend && mvn clean package -DskipTests && mvn spring-boot:run

# 前端(开发模式)
cd frontend && npm ci && npm run dev

# Docker
cd docker && docker compose up -d --build

一次性清理历史曲库

正常导入不会扫描或删除 Library 中的历史文件。升级后如需清理旧数据,先运行默认的预览模式:

./scripts/cleanup-library.sh --library /path/to/Library --dry-run

确认输出后再显式执行:

./scripts/cleanup-library.sh --library /path/to/Library --execute

脚本会优先把音频内嵌封面提取为专辑目录的 cover.jpg/png。只有目录和音频都没有封面时,才删除音频及同 basename 的 .lrc.cue.json.txt 和图片 sidecar;不会删除公共 cover.jpg/png 或其他曲目文件。

技术栈

  • 后端:Spring Boot 2.7 + Java 8 + Maven
  • 前端:Vue 3 + Vite + TypeScript + Element Plus
  • 音频元数据:jaudiotagger
  • 繁简转换:opencc4j
  • 格式转换:FFmpeg