标签刮削¶
标签刮削用 MusicBrainz 补齐曲库缺失的元数据,并在写入前把每个字段的判断摆出来。
匹配顺序¶
- MBID。 文件已有
MUSICBRAINZ_TRACKID时直接查录音,最可靠。 - 目录共识。 同一专辑目录里的曲目共享发行信息时,用多数结果补发行级字段。
- 标题搜索。 用标题、艺人、专辑和时长组合搜索,按分数和时长闸门筛选。
- AcoustID 指纹。 缺 MBID 或搜索有歧义时,用音频指纹确认录音。
候选必须通过硬性闸门:
- 时长差不超过
policy.matching.max_duration_delta_seconds,默认 5 秒。 - 标题、艺人、版本信息不能明显冲突。
- 最优候选与次优的分差达到
min_score_margin,除非时长差很小。
不满足时进入「待审查」,不会猜。
字段判断¶
每个字段只有四种结果:
| 结果 | 含义 | 默认行为 |
|---|---|---|
same |
本地与来源相同 | 不写 |
fill |
本地为空,来源有值 | 可自动写入 |
correct |
发行级字段,按同目录专辑统一 | 可批量写入 |
conflict |
两边都有值且不同 | 默认勾选,人工确认 |
「纠正」只用于发行级字段,例如专辑、日期、厂牌、目录号、发行类型、介质、总轨数。标题、艺人、作词作曲等字段不会因为目录共识被批量覆盖。
冲突处理¶
冲突字段默认勾选,表示「采用来源值」。可以:
- 逐字段取消勾选;
- 一键全选;
- 一键取消全选;
- 只写「可补」和「纠正」,跳过冲突。
写入前的确认框会列出字段、来源值和影响。标题、艺人、专辑等关键字段发生变化时会额外提示。
以下情况仍会进入人工复核:
- 版本不同,例如现场版、重制版、伴奏版。
- 本地多出合作艺人,或艺人名单明显不同。
- 时长差超过标签写入容差。
- 来源本身有歧义。
自动扫描与自动写入¶
监控进程按 scan_interval_hours 扫描全库。设置页可以修改间隔、自动写入、指纹和单轮上限,保存后一分钟内生效。
自动写入只做两件事:
- 补本地为空的字段;
- 按可信目录簇纠正发行级字段。
冲突永不自动覆盖。单轮写入数量受 max_auto_write_per_run 限制。
写入安全¶
- 只改目标字段。音频数据、封面、歌词、作词人、未知标签保持不变。
- FLAC 使用 Vorbis comment 块级改写;MP3 使用 ID3v2 目标帧改写;OGG 重排 comment 页。
- 写入前备份;写入后校验音频哈希和非目标标签。
- 校验失败自动回滚,并保留失败原因。
- 撤销按字段恢复原值,不会把整份标签覆盖回旧版本。
按链接指定¶
「按链接指定」支持 MusicBrainz 的发行、录音、发行组和艺人链接。查询只读,不会改文件。
适合以下情况:
- 自动搜索没有命中;
- 同名曲目太多;
- 想指定某个发行版或某个现场版本。
链接会校验域名必须是 musicbrainz.org 或其子域,避免 SSRF。
写入历史与撤销¶
每次写入记录文件名、写入时间、变更字段、原值和新值。可以在标签页的「写入记录」里逐条撤销。
撤销只还原这次写入涉及的字段。如果之后有人手动改过同一字段,撤销会跳过或提示冲突,不会盲目覆盖。
常见问题¶
扫描显示 MusicBrainz 未配置。
检查 providers.musicbrainz.enabled 和 base_url。默认是 https://musicbrainz.org;容器内能访问公网即可。
扫描全部未匹配。
先确认 MusicBrainz 是否可达。Lyra 在扫描前会做健康检查;不可用时会拒绝扫描,避免把上一轮结果覆盖成未匹配。
自动写入没有发生。
检查写入开关、auto_write、单轮上限和时长容差。冲突字段永远不会自动写入。
MP3 的 MusicBrainz ID 读不出来。
确认文件里是 UFID 帧或对应的 TXXX 帧。Lyra 会读取 UFID 的原始字节并解码为 UUID。