将ID3标题标签设置为等于MP3文件名


14

有没有人得到一个bash脚本,该脚本将通过媒体库并将每个MP3文件的id3标题标签设置为与文件名相同?

我也欢迎其他自动化方法。它可以是GUI应用程序,也可以是可以自动完成工作的任何东西。

EasyTag方法在此处注明:如何在mp3 ID3文件中重命名批量标题标签 -不幸的是,我不明白这些步骤。


您可以回答自己的问题。列出找到的步骤ubuntuforums.org并引用来源。:)如果ubuntuforums.org链接不可用,这将有助于以后的超级用户访问者。
iglvzx 2012年

3
这里有一些提示:1)不要用“ edit 1”,“ edit 2”等来打乱您的问题。使用注释解决问题。2)如果找到解决方案,请将其发布为答案,就像您试图回答别人的问题一样。不要把答案放在问题上。人们不是在这里寻找它的:)此外,对于其他地方引用的内容,请使用块引用(请参阅格式帮助)。
slhck 2012年

我制作了一个脚本来正确标记格式为“ Artist-Track.mp3”的MP3文件,然后将文件重命名为“ Track.mp3”:gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0使用eyed3
Zach Saucier

Answers:


17

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


3

我发现各种命令行工具都很有用:

id3v2

id3v2是命令行id3v2标记编辑器。您可以添加/修改/删除id3v2标签,并将id3v1标签转换为id3v2标签。它使用id3lib。我在寻找共同维护者。如果您有兴趣,请发送电子邮件至myers_carpenter。

眼睛D3

eyeD3是用于处理ID3标签的Python模块和程序。还提供了有关mp3文件的信息(例如,比特率,采样频率,播放时间等)。支持的格式为ID3 v1.0 / v1.1和v2.3 / v2.4。

当编写脚本来扫描目录时,这些是理想的选择。


2

这并不总是能够完全完美,但是我已经使用它仅使用常见的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规范,但只要您先进行备份,就可以满足基本的个人使用需求


谢谢。我找到了一种使用EasyTAG实现目标的方法,但是您的回复实际上可以最好地回答我的原始问题。字符串是一个很好的实用程序。(我以前没有使用过。)您能否根据您的编辑发布完整的解决方案,以便可以确定我理解建议的更改?
MountainX

2

对于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 /域,文件,防火墙,路由器/服务器之类的人:-)我讨厌做脚本,编程等等。我喜欢利用脚本,编程和类似的东西:-)


1

我很惊讶没有人建议使用ffmpeg或作为最简单的解决方案avconv

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;

0

我会在python virtualenv中安装eyeD3,pip install eyeD3以便获得最新发布的版本。在那之后运行:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.