2

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

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

4

1 回答 1

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

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

于 2016-04-10T16:22:42.570 回答