是否有人有这样一个 bash 脚本,它可以遍历媒体库并将每个 MP3 文件的 id3 标题标签设置为与文件的名称相同?
我也愿意尝试其他自动化方法。它可以是一个 GUI 应用程序或任何可以自动完成工作的东西。
EasyTag 方法如下:如何重命名 mp3 ID3 文件中的批量标题标签— 不幸的是,我不明白这些步骤。
答案1
EasyTAG 确实是解决此问题的绝佳工具。我找到了答案这里。至于如何使用,最好的参考是EasyTAG 自己的文档。
打开 EasyTag,导航到包含音乐文件的文件夹,选择文件夹中的所有文件,或者所有想要标记的文件,单击“扫描文件”按钮(您必须将鼠标悬停在它们上才能确定它是哪一个)。
然后,确保扫描仪下拉列表设置为“填充标签”,然后在“填充标签”字段中进行适当的编辑,直到字段下方的示例看起来像您要查找的内容。如果您需要有关在“填充标签”字段中输入什么的进一步帮助,请单击图例的“?”按钮(列出要翻译的不同可能代码),然后单击掩码按钮以列出一些起点。
如果您对结果满意,请单击“扫描文件”按钮(在“扫描文件”对话框中,而不是您最初单击的按钮...图标看起来相同),您的更改将得到应用。如果您没有获得艺术家或专辑名称,只需选择要更改的所有内容,输入数据并单击该字段旁边的小按钮,所有选定的文件都将填写或更改为该艺术家或专辑。这适用于大多数字段。
完成后,单击保存按钮即可完成。
附言:如果您有想要标记的完整专辑,或者至少有可供商业购买的歌曲文件,CDDB 扫描器通常可以很好地工作。
PPS:我似乎还处于半睡半醒的状态。根据您在原始帖子中所写的内容,请在“填充标签”字段中尝试以下操作:
%n. %a - %t
以下是与该问题相关的部分:
1.2.2. 使用“填充标签”扫描仪自动完成:
使用此模式的一些条件:
- 按专辑排序的文件
- 文件名或父目录包含标签信息(艺术家、专辑、标题……)
- 标签为空或者不正确
“填充标签”扫描仪使用一种模式将文件名和目录中的单词与标签条目关联起来。通过这种方式,只需按下扫描仪窗口或工具栏中的“绿色”按钮即可自动完成标签字段。如果标签部分完成,请使用“首选项”窗口的“扫描仪”选项卡中的“扫描标签时覆盖字段”选项,将所有字段替换为新值。
每个代码对应一个字段,遵循以下规则:
Strings associated with code Will fill the field %a Artist %b Album %c Comment %p Composer %r Copyright %e Encoded by %g Genre %i None! (used to ignore a string) %l Number of tracks %o Original artist %n Track %t Title %u URL %y Year
注意:为避免错误,建议在模式中仅使用一次代码。当然,就像手动标记时一样,扫描仪只会处理选定的文件。您可以使用列表中定义的模式,也可以编写自己的模式以对应文件名和目录的格式。为避免在选择或编写正确模式时出错,预览会在应用模式之前立即显示结果。如果您需要有关不同代码的帮助,请按“帮助”按钮(救生圈)显示每个代码的图例。此外,如果您想保存、编辑或排序自己的模式,请按“蒙版”按钮,扫描仪窗口上将显示一个小编辑器。
下面是使用模式的示例:
a)以下文件名:
“/mnt/MP3/EVANESCENCE – Fallen (2003) – Rock/01. Going Under.mp3” b) with the pattern : “%a - %b (%y) - %g/%n. %t” c) you will fill the tag with theses strings : Artist (%a) => EVANESCENCE Album (%b) => Fallen Year (%y) => 2003 Genre (%g) => Rock Track (%n) => 01 Title (%t) => Going Under
答案2
易达标对音频(和一些视频)文件执行各种常见的批量标签/文件名操作。
答案3
答案4
这并不总是完美的,但我已经用它来获取 mp3 文件的名称,只使用常见的 unix 工具(包括 busybox 版本)也许拥有超过 6 个 Tom Petty mp3 的人可以对它进行进一步的测试。
for x in *.mp3; do
TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
#mv "$x" "$TITLE.mp3"
echo $x" "$TITLE.mp3" #just echo for now, until further tested
done
编辑:我误读了这个问题,但了解了上述内容后,我们可以使用 sed 将 $TITLE 替换为文件名称“$x”,方法是使用 sed 替换字符串
sed -i "s/$TITLE/$x/" "$x"
我几乎 100% 确定这并不符合所有的 ID3 规范,但只要你先备份,它可能足以满足基本的个人使用