使用taglib#提取mp3标签



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

匹配所需类型的mp3文件需要复制到一个新的文件夹位置,我可以为一个mp3文件复制,但不能为多个。

您需要浏览目录中的所有文件,并检查每个文件是否都具有所需的类型。

为此,您可以使用一些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(@"FolderSubFolder", "*.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(@"FolderSubFolder", "*.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

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

最新更新