我将如何使用taglib提取整个mp3文件文件夹的id3标签,我目前只能获取一次提取一个mp3文件的say gen标签。我需要能够提取id3整个mp3文件文件夹中的标签。
然后,需要将符合要求的流派的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(@"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
上述类型流派显然是不现实的。这只是一个例子:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句