taglib を使用して mp3 ファイルのフォルダー全体の id3 タグを抽出するにはどうすればよいですか? 現在、一度に 1 つの mp3 ファイルの特定のジャンルのタグを抽出することしかできません。 mp3 ファイルのフォルダー全体からのタグ。
次に、必要なジャンルに一致する mp3 ファイルを新しいフォルダーの場所にコピーする必要があります。
taglib を使用して mp3 ファイルのフォルダー全体の id3 タグを抽出するにはどうすればよいですか? 現在、一度に 1 つの 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
上記の一連のジャンルは明らかに現実的ではありません。これは単なる例です:)