我正在使用“甜菜”来组织我的 mp3。我从亚马逊购买的一张 mp3 专辑被错误地标记为不是合辑,而实际上它是合辑。我根据专辑是否是合辑来组织我的文件。无论我尝试对这些 mp3 做什么,我对 ID3 标签所做的更改都不会保持不变。
例如:
mp3info -d ../amazon_album/* # This WIPES the tags
mp3info ../amazon_album/01-01 - Track 1.mp3
../amazon_album/01-01 - Track 1.mp3 does not have an ID3 1.x tag.
Run Code Online (Sandbox Code Playgroud)
但是当我在任何媒体播放器中打开文件时,所有信息仍然存在!
然后我尝试了:
mp3info -a "LOL" ../amazon_album/*
mp3info ../amazon_album/01-01 - Track 1.mp3
File: ../amazon_album/01-01 - Track 1.mp3
Title: Track:
Artist: LOL
Album: Year:
Comment: Genre: [255]
Run Code Online (Sandbox Code Playgroud)
然而,在任何媒体播放器中,它仍然保留了所有原始信息。因此,我无法将专辑更改为“合辑”,这意味着我无法按照自己想要的方式在 Beets 中组织它。
我已经确认这不是文件权限问题。难道我做错了什么?有没有另一种方法可以在 Linux 中实现这一点?或者有没有办法可以“欺骗”甜菜将其视为编译(以便它使用我的编译路径)?
使用MP3 Diags清理我的 mp3 收藏,我发现除了 ID3v2 标签外,有些文件还有 Lyrics3、ID3v1 和一些 APE 标签。是否有命令行工具可以删除除 ID3v2 标签之外的所有内容?
最近几周,我从一种相当“动手”的方法转为 .flac --> .mp3 转码,转为一种“设置并忘记”的方法。
第一步是停止使用 GUI 前端(带有 LAME 插件的 Audacity),而是使用我在此处概述的方法。
第二步是找到一个 bash shell 脚本,它会告诉命令循环递归工作,允许在一个简单的步骤中转码具有许多包含 .flac 文件的子目录的目录。该答案是由 askubuntu.com 上的用户提供的。
现在我想学习如何进一步细化,以便保留 ID3 标签信息。链接到上述条带 ID3 标签数据的方法,保留最少的内容(即仅保留标题字段)。
谁能教我如何编写这样的shell脚本?
shell 脚本已更新为:
#!/bin/bash
file="$1"
flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"
id3cp "$file" "${file%.flac}.mp3"
Run Code Online (Sandbox Code Playgroud)
这样find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \;在〜/桌面/堆栈提供了以下的输出:
01 - Amon Tobin - Chomp Samba.flac: done
LAME 3.98.4 64bits (http://www.mp3dev.org/)
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding …Run Code Online (Sandbox Code Playgroud) 我最喜欢的 vorbis 评论批量编辑工具是 vorbistagedit。我可以做到vorbistagedit *.ogg,它让我可以在我最喜欢的编辑器 (emacs) 中一次编辑所有 ogg 文件中的元数据。
我想知道是否有一种工具可以以类似的方式处理 id3 标签?
我可以看到它打开了一个看起来像这样的文件:
: file1.mp3
+ file1.mp3
TIT2=Title
TPE1=Artist
TALB=Album
: file2.mp3
+ file3.mp3
...
Run Code Online (Sandbox Code Playgroud)
我可以添加/编辑我认为合适的标签,当我关闭 $EDITOR 时,它会将标签写回文件。
它不必完全那样工作,但我认为那将是我的理想。任何事情都比一堆 BASHfor循环更容易id3v2。
如果没有类似的东西存在,我可能最终会使用 eyeD3 库编写自己的库。
并且请不要打扰建议 EasyTag。这是一个很棒的程序,但我正在寻找不需要 GUI 的东西。
PS对于那些不想费心阅读下面评论的人,我只是修改了 vorbistagedit 以支持 mp3 文件中的 id3 标签。修改后的脚本可以在GitHub上找到。
我有一个 MP3 文件库,其中在某些文件中,“CD 编号”标签 (TPOS) 包含“CDx”值,例如“CD1”或“CD2”。ID3 规范说 TPOS 值应该是数字字符串。处理这些文件会破坏一些标签编辑器,特别是 eyeD3 会忽略这些值。
通过命令行用数字字符串替换这些 ID3 标签的聪明方法是什么?
我有一个带有一些命令行魔法的解决方案,我正在寻找更简单的方法:
find . -name "*.mp3" -exec id3v2 -R {} \; |awk -F": " '/^Filename/ {f=$2};/^TPOS/ {print f, "\t", $2}'|grep CD1|awk -F" \t" '{print $1}'|xargs -L 1 -d "\n" -I{} id3v2 --TPOS "1" {}
Run Code Online (Sandbox Code Playgroud)
简而言之:找到mp3文件,用id3v2提取ID3标签,用awk提取文件名和TPOS,grep为“CD1”,剪下文件名并应用id3v2将光盘编号设置为“1”。
我正在寻找一个实用程序,它将现有的 ID3v2 标签与 MP3 文件中的原始元数据一起复制到 ID3v1 对应项。
我有一些旧硬件,我不会很快放弃,而且它与 ID3v2 不兼容,因此我需要在我的文件中同时存在这两种标签,以使每个人都满意。我一直在使用 EasyTAG,它可以在其文件中创建两个标签,但我正在寻找一种通过脚本运行文件以自动化该过程的方法。
我一直在使用Python的Mutagen库,但它只支持ID3v2。
我正在尝试编写一个脚本来自动将曲目和标题信息添加到 mp3 文件的 id3 标签。
在这一点上,我已经 sed 从文件名中获取信息并将其格式化以适合 id3v2 命令,但是在点击多字标题时,我收到错误Couldn't stat file '<second word of title>'. 如果我只是回显正在运行的 id3v2 命令,我会看到以下格式的命令:
id3v2 -t Title\ Of\ Track -T 1 1_-_Title_Of_Track.mp3
Run Code Online (Sandbox Code Playgroud)
将该文本复制/粘贴到终端中可以正确执行标记,但当然缺乏预期的脚本自动化。所以这里是打算自动化这个过程的脚本的样子:
#!/bin/bash
for track in *.mp3 ; do
id3v2 $(echo ${track} | sed -e 's/^\([1-9][0-9]*\)_-_\(.*\).mp3/-t \2 -T \1/' -e 's/_/\\ /g') ${track}
done
Run Code Online (Sandbox Code Playgroud)
关于为什么在手动键入时将标题视为单个参数而不是在编写脚本时将其视为单个参数的任何见解?