长期以来,我一直在将 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_ 标签。(一个 bug?可能是;我在六张专辑中都看到了这种情况。)此外,关于有时不寻常的排序,请注意 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 条评论