使用 taglib# 提取 mp3 标签
using taglib# to extract mp3 tags
我如何使用 taglib 来提取整个 mp3 文件文件夹的 id3 标签,我目前只能在 time.I 需要时使用它来提取一个 mp3 文件的 say genre 标签能够从整个 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(@"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));
}
我还想指出,如果文件有多种类型,您甚至可以将条件设置为 select 所有 包含 该类型的文件:
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
时,上面的 select 文件具有以下类型:
Hip-Hop
Hip-Hop, Rock
Hip-Hop, Trap
Hip-Hop, Rock, Punk, Trap
上面这组流派显然不太现实。这只是一个例子:)
我如何使用 taglib 来提取整个 mp3 文件文件夹的 id3 标签,我目前只能在 time.I 需要时使用它来提取一个 mp3 文件的 say genre 标签能够从整个 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(@"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));
}
我还想指出,如果文件有多种类型,您甚至可以将条件设置为 select 所有 包含 该类型的文件:
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
时,上面的 select 文件具有以下类型:
Hip-Hop
Hip-Hop, Rock
Hip-Hop, Trap
Hip-Hop, Rock, Punk, Trap
上面这组流派显然不太现实。这只是一个例子:)