有没有人得到一个bash脚本,该脚本将通过媒体库并将每个MP3文件的id3标题标签设置为与文件名相同?
我也欢迎其他自动化方法。它可以是GUI应用程序,也可以是可以自动完成工作的任何东西。
EasyTag方法在此处注明:如何在mp3 ID3文件中重命名批量标题标签 -不幸的是,我不明白这些步骤。
eyed3
有没有人得到一个bash脚本,该脚本将通过媒体库并将每个MP3文件的id3标题标签设置为与文件名相同?
我也欢迎其他自动化方法。它可以是GUI应用程序,也可以是可以自动完成工作的任何东西。
EasyTag方法在此处注明:如何在mp3 ID3文件中重命名批量标题标签 -不幸的是,我不明白这些步骤。
eyed3
Answers:
EasyTAG确实是解决此问题的好工具。我在这里找到了答案。关于如何使用它,最好的参考文献是EasyTAG自己的文档。
打开EasyTag,导航到其中包含音乐文件的文件夹,选择该文件夹中的所有文件或您要标记的所有文件,然后单击“扫描文件”按钮(您必须将鼠标悬停在它们上才能查明是哪一个)。
然后,确保将扫描仪下拉菜单设置为“填充标签”,然后在“填充标签”字段中进行适当的编辑,直到该字段下方的示例看起来像您要查找的内容为止。如果您需要有关填充标签字段中内容的更多帮助,请单击“?”。图例按钮(列出各种可能的代码转换方式),然后按遮罩按钮列出一些起点。
当您对结果满意时,请单击“扫描文件”按钮(在“扫描文件”对话框中,而不是最初单击以获取所需位置的按钮...图标看起来相同),更改将被应用。如果未获得艺术家或专辑的名称,只需选择所有要更改的名称,输入数据,然后单击该字段旁边的小按钮,所有选择的文件将被填充或更改为该艺术家或专辑。这适用于大多数领域。
完成后,单击“保存”按钮即可完成。
PS:如果您有要标记的完整专辑或至少有商业上可用的歌曲文件,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
EasyTAG对音频(和某些视频)文件执行各种常见的批处理标记/文件名操作。
这并不总是能够完全完美,但是我已经使用它仅使用常见的unix工具(包括busybox版本)来获取mp3文件的名称。也许只有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通过使用sed替换字符串将sed替换为文件“ $ x”的名称$ TITLE
sed -i "s/$TITLE/$x/" "$x"
我几乎100%确信这不符合所有ID3规范,但只要您先进行备份,就可以满足基本的个人使用需求
对于Ubuntu 18.04 LTS(我认为所有Debian版本都可以正常运行):
安装eyeD3与 sudo apt install eyeD3
为bash脚本创建文件(我使用了“触摸”;您可以使用任何喜欢的文本编辑器)
复制此内容并将其粘贴到文件中:
复制文件名并将其写入Title标记
for x in *; do
eyeD3 --title="${x%.*}" "$x"
echo $a
done
如果您不希望查看进度,请忽略echo $a
单词“ done”(完成)上方的行。
使文件可执行:
chmod +x filename
将脚本复制到要在其中运行的目录–包含媒体文件的目录;例如:
cp filename /music/directory
导航到您刚刚将脚本复制到的目录:
cd /music/directory
运行脚本:
./filename
完成
它在Ubuntu 18.04 LTS上对我有用-我的妻子在大约3分钟内为我写了这个,所以如果它对您不起作用,我将无法回答任何问题。我不是一个精通程序员的人,我正在设置此Web,dns,ssh,sftp,ftp,AD /域,文件,防火墙,路由器/服务器之类的人:-)我讨厌做脚本,编程等等。我喜欢利用脚本,编程和类似的东西:-)
ubuntuforums.org
并引用来源。:)如果ubuntuforums.org
链接不可用,这将有助于以后的超级用户访问者。