长期以来,我一直在将 CD 翻录到我的电脑中。在这段时间里,我使用过几种不同的翻录工具,我观察到每种工具似乎对标签都有不同的理解,特别是,要用音乐数据保存哪些元数据。我说的“观察到”是指,音乐播放器似乎以一种奇怪的顺序对专辑进行排序,它们将一个物理目录中的曲目分成两个专辑,或者它们会产生其他令人沮丧的恼人之处。
我还了解到,有些标签非常晦涩难懂,许多音乐播放器和标签编辑器都不会显示它们。即便如此,它们也可能会在某些极端情况下使用它们进行排序或显示音乐,例如,播放器将所有包含标签 XYZ 的音乐文件与所有不包含该标签的文件分隔到不同的专辑中。
因此,如果标签应用程序和音乐播放器不显示“怪异”标签——但却以某种方式受到它们的影响——你能做什么呢?
Metaflac 来解救了!
我一直想熟悉 metaflac,这是 FLAC 文件的开源命令行元数据编辑器,FLAC 文件是我选择的开源音乐文件格式。并不是说像 EasyTAG 这样出色的标签编辑软件有什么问题,但俗话说“如果你只有一把锤子……”就会浮现在脑海中。此外,从实际角度来看,我的家庭和办公室立体声音响的音乐需求由运行 Armbian 和 MPD 的小型专用服务器来满足,音乐文件本地存储,运行非常精简的、仅音乐的无头环境,因此命令行元数据管理工具将非常有用。
下面的屏幕截图显示了我的长期翻录程序造成的典型问题:Putumayo 精彩的哥伦比亚音乐合辑显示为两个独立的专辑,一个包含单曲,另一个包含剩余的 11 首歌曲

我使用 metaflac 生成了一个列表,其中包含包含这些曲目的目录中所有 FLAC 文件的所有标签
rm -f tags.txt
for f in *.flac; do
echo $f >> tags.txt
metaflac --export-tags-to=tags.tmp "$f"
cat tags.tmp >> tags.txt
rm tags.tmp
done
我将其保存为可执行 shell 脚本(请参阅我的同事 David Both 关于 Bash shell 脚本的精彩专栏系列,特别是关于循环的那一篇)。基本上,我在这里所做的是创建一个文件 tags.txt,其中包含文件名(echo 命令),后跟其所有标志,然后是下一个文件名,依此类推。以下是结果的前几行
A Guapi.flac
TITLE=A Guapi
ARTIST=Grupo Bahia
ALBUMARTIST=Various Artists
ALBUM=Putumayo Presents: Colombia
DATE=2001
TRACKTOTAL=12
GENRE=Latin Salsa
MUSICBRAINZ_ALBUMARTISTID=89ad4ac3-39f7-470e-963a-56509c546377
MUSICBRAINZ_ALBUMID=6e096386-1655-4781-967d-f4e32defb0a3
MUSICBRAINZ_ARTISTID=2993268d-feb6-4759-b497-a3ef76936671
DISCID=900a920c
ARTISTSORT=Grupo Bahia
MUSICBRAINZ_DISCID=RwEPU0UpVVR9iMP_nJexZjc_JCc-
COMPILATION=1
MUSICBRAINZ_TRACKID=8a067685-8707-48ff-9040-6a4df4d5b0ff
ALBUMARTISTSORT=50 de Joselito, Los
Cumbia Del Caribe.flac
经过一番调查,结果证明我同时翻录了许多 Putumayo CD,而且我当时使用的任何软件似乎都在除一个文件外的所有文件上都放置了 MUSICBRAINZ_ 标签。(一个错误?很可能;我在大约六张专辑中看到了这种情况。)此外,关于有时不寻常的排序,请注意 ALBUMARTISTSORT 标签将西班牙语冠词“Los”移到了艺术家姓名的末尾,逗号之后。
我使用一个简单的 awk 脚本来列出 tags.txt 文件中报告的所有标签
awk -F= 'index($0,"=") > 0 {print $1}' tags.txt | sort -u
这使用 = 作为字段分隔符将所有行拆分为字段,并打印包含等号的行的第一个字段。结果通过带有 -u 标志的 sort 传递,这消除了输出中的所有重复项(请参阅我的同事 Seth Kenlon 的关于 sort 实用程序的精彩文章)。对于这个特定的 tags.txt 文件,输出是
ALBUM
ALBUMARTIST
ALBUMARTISTSORT
ARTIST
ARTISTSORT
COMPILATION
DATE
DISCID
GENRE
MUSICBRAINZ_ALBUMARTISTID
MUSICBRAINZ_ALBUMID
MUSICBRAINZ_ARTISTID
MUSICBRAINZ_DISCID
MUSICBRAINZ_TRACKID
TITLE
TRACKTOTAL
稍微调查了一下,我发现 MUSICBRAINZ_ 标志出现在除一个 FLAC 文件之外的所有文件上,所以我使用 metaflac 命令删除了这些标志
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ALBUMARTISTID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ALBUMID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ARTISTID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_DISCID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_TRACKID "$f"; done
完成之后,我可以使用我的音乐播放器重建 MPD 数据库。以下是结果

瞧,所有 12 首曲目都在一张专辑中。
所以,是的,我非常喜欢 metaflac。我希望在我尝试解决我的音乐收藏的音乐标签中最后一点怪异之处时,我会更频繁地使用它。强烈推荐!
还有音乐
我花了几个晚上收听 CBC Music 上 Odario Williams 的节目 After Dark。(CBC 是加拿大公共广播公司。)感谢 Odario,我真正开始欣赏的专辑之一是 Kevin Fox 的Songs for Cello and Voice。这是他的翻唱 Eurythmics 的歌曲“Sweet Dreams (Are Made of This)”。
我在 CD 上购买了这张专辑,现在它在我的音乐服务器上,标签已正确组织!
2 条评论