使用 taglib# 提取 mp3 标签

Posted

技术标签:

【中文标题】使用 taglib# 提取 mp3 标签【英文标题】:using taglib# to extract mp3 tags 【发布时间】:2016-04-10 15:58:26 【问题描述】:

我将如何使用 taglib 来提取整个 mp3 文件文件夹的 id3 标签,我目前只能一次提取一个 mp3 文件的说流派标签。我需要能够从整个 mp3 文件文件夹中提取 id3 标签。

然后需要将与所需类型匹配的 mp3 文件复制到一个新的文件夹位置,我已经能够为一个 mp3 文件而不是多个。

【问题讨论】:

【参考方案1】:

你需要遍历目录中的所有文件,检查每个文件是否有所需的流派。

为此,您可以使用一些 LINQ:

string genre = "Hip-Hop, Rock"; // Change as required... You can also provide a single genre or even more than 2.
var matchingFiles = Directory.GetFiles(@"Folder\SubFolder", "*.mp3", SearchOption.AllDirectories).Where(x =>  var f = TagLib.File.Create(x); return ((TagLib.Id3v2.Tag) f.GetTag(TagTypes.Id3v2)).JoinedGenres == genre; );
foreach (string f in matchingFiles)

     System.IO.File.Move(f, Path.Combine(@"D:\NewFolder", new FileInfo(f).Name));

我还想指出,如果文件有多个流派,您甚至可以设置条件来选择所有包含该流派的文件:

var matchingFiles = Directory.GetFiles(@"Folder\SubFolder", "*.mp3", SearchOption.AllDirectories).Where(x =>  var f = TagLib.File.Create(x); return ((TagLib.Id3v2.Tag) f.GetTag(TagTypes.Id3v2)).Genres.Contains(genre); );

例如,当genre 设置为Hip-Hop 时,上面将选择具有以下类型的文件:

Hip-Hop
Hip-Hop, Rock
Hip-Hop, Trap
Hip-Hop, Rock, Punk, Trap

上述流派显然是不现实的。这只是一个例子:)

【讨论】:

以上是关于使用 taglib# 提取 mp3 标签的主要内容,如果未能解决你的问题,请参考以下文章

使用 TagLib 时如何读取音频 (mp3) 标签(时长和字幕)?

ID3标签提取

带有 tagLib 锐库的 C# 自定义 mp3 标签

使用 TagLib 读取 MP3 等级

TagLib-Sharp - 重新标记文件

使用 TagLib 从 MP3 文件中提取专辑封面 - 有没有更好的方法编写此代码?