一个轻量级的本地歌曲元信息(标签)修复工具:读取音频文件的现有元信息,根据歌名/歌手(或文件名) 从 网易云音乐 / iTunes / MusicBrainz 搜索完整元信息,由你勾选要写入的字段后写回文件。
基于 Python + PySide6(Qt6),原生支持高 DPI 缩放(高分屏下文字清晰不模糊);
标签读写由仓库自带的 tag_engine.py(纯 Python 标准库、MIT License)完成,
- 选择单个音频文件或整个文件夹(递归扫描)
- 左侧展示当前文件的元信息:标题、艺术家、专辑、专辑艺术家、年份、音轨号、风格、封面
- 选中文件后自动按现有信息搜索,可手动修改关键词或切换数据源
- 右侧列出多条候选结果(标题/艺术家/专辑/年份/来源),选择后自动获取详情与封面并预览
- 勾选要写入的字段(可手动微调),一键写回;默认写入前备份为
xxx.bak - 「写入并跳转到下一首 ▸」支持批量修复:写入后自动选中并搜索下一首
- 写入过程零额外网络请求:只使用已获取的信息,封面缺失时自动降级、不中断写入
- 自动搜索被平台限速时仅提示、不弹窗打断批量流程
| 格式 | 读取 | 写入 |
|---|---|---|
| MP3 / TTA(ID3v2) | ✔ | ✔ |
| WAV / AIFF(ID3v2 子块) | ✔ | ✔ |
| FLAC(VORBIS_COMMENT + PICTURE) | ✔ | ✔ |
| M4A / MP4(moov > udta > meta > ilst) | ✔ | ✔ |
| Ogg Vorbis / Opus(VorbisComment) | ✔ | ✔ |
| Ogg FLAC(.oga) | ✔ | ✔ |
| WMA(ASF) | ✔ | ✔ |
| APE / WV / MPC(APEv2) | ✔ | ✔(仅文本字段) |
| AAC / DSF 等 | ✔ | ✘ |
WAV 说明:Windows 资源管理器读取 WAV 时优先使用 RIFF INFO 块(并按系统代码页解码), 程序写入标签时会同步更新 INFO 块,避免出现旧标题(如
?Dee)覆盖新标签的情况; 其中无法在系统代码页中正常显示的字符(如片假名中点・)会替换为视觉相近的·, 而 ID3v2 标签内始终保留原始字符。
Ogg FLAC 说明:封面图以 VorbisComment 的
METADATA_BLOCK_PICTURE形式写入, 兼容主流播放器;WMA 封面以标准的WM/Picture属性写入。
需要 Python 3.9+。
pip install -r requirements.txt
python song_meta_fixer.pyWindows 下也可直接双击 start.bat。
dist/ 为本地构建产物,不纳入源码仓库。如需发布单文件免安装版(内置 Python 运行时与
依赖库,双击即用),请先安装 PyInstaller:
pip install pyinstaller
# 方式一:精简版 spec(推荐,约 28 MB)
pyinstaller --noconfirm --clean SongMetaFixer.spec
# 方式二:命令行直接打包(体积较大,约 48 MB)
pyinstaller --noconfirm --onefile --windowed --name SongMetaFixer \
--icon logo.ico --add-data "logo.ico;." \
--exclude-module numpy --exclude-module cryptography song_meta_fixer.py精简版 spec 会剔除未使用的 Qt 模块(QML/Quick/Pdf/Network/OpenGL 等)与多余插件/翻译, 仅保留运行必需的 QtCore/Gui/Widgets 和 qwindows/qjpeg/qico 等插件。
- 点击 选择文件… 或 选择文件夹… 载入歌曲。
- 在左侧文件列表中点击歌曲,左侧下方显示其当前元信息,右侧自动发起搜索。
- 在右侧候选结果中选中一条(数据源可在下拉框切换:自动(网易云优先)/ 网易云音乐 / iTunes / MusicBrainz)。
- 勾选要写入的字段(可手动修改),默认勾选「写入封面图」与「写入前备份为 .bak」。
- 点击 写入所选字段 完成修复;批量处理请用 写入并跳转到下一首 ▸。
| 数据源 | 类型 | 说明 |
|---|---|---|
| 网易云音乐 | 社区逆向的公开网页接口 | 无需登录;结果可能混有翻唱/用户上传内容,且接口随时可能变动 |
| iTunes Search API | Apple 官方公开接口 | 无需密钥,欧美/港台曲库质量高 |
| MusicBrainz | 开放音乐数据库 API | 请求附带应用标识,请遵守其使用条款 |
以上接口仅用于查询公开的歌曲元信息,请仅用于修复你拥有合法权利的文件,并遵守各平台的服务条款。
.
├── song_meta_fixer.py # 主程序(核心逻辑 + PySide6 界面)
├── tag_engine.py # 音频标签读写引擎(纯 Python 标准库,MIT)
├── SongMetaFixer.spec # PyInstaller 精简打包配置
├── requirements.txt # 依赖:PySide6 / requests
├── start.bat # Windows 启动脚本
├── logo.ico # 程序图标
├── LICENSE # MIT 许可证(源码)
├── THIRD_PARTY_NOTICES.md # 第三方依赖许可说明
└── docs/
└── screenshot.png # 界面截图
本程序不收集、不上传任何个人文件或本地音乐数据;所有网络请求仅用于搜索公开的歌曲元信息 (网易云搜索/详情、iTunes Search、MusicBrainz)与下载专辑封面图。
- 写入提示「暂不支持写回该格式」:该格式(如裸 AAC/DSF)不支持写标签,请转换为 MP3/FLAC/M4A。
- 搜索没有结果 / 提示「被平台限速」:平台接口有限速,自动搜索失败仅提示、不中断批量流程; 可稍候重试,或切换数据源(iTunes/MusicBrainz)、修改关键词。
- 写入时会不会再次请求网络? 不会。写入只使用已获取的信息(文本来自搜索结果、封面来自已下载 缓存或已知封面地址),封面缺失时仅跳过并提示,不中断写入。
- 写入失败:确认文件未被其他程序占用;如已生成
.bak,可用备份还原。 - 为什么不用 mutagen? mutagen 是 GPL 许可证,打包进 exe 会带来 GPL 合规负担;
本项目改用自研的
tag_engine.py(MIT),并经过各格式回归验证。
- 源码:本项目以 MIT License 发布(Copyright © 2026 YuzuBD · cirtuslab)。
- 第三方依赖:完整清单见 THIRD_PARTY_NOTICES.md。
Copyright © 2026 YuzuBD · cirtuslab
