2016-04-10 7 views
2

Wie würde ich Taglib verwenden, um die ID3-Tags eines ganzen Ordners von MP3-Dateien zu extrahieren, ich bin derzeit nur in der Lage, das Etikett von Genre für eine MP3-Datei zu einem Zeitpunkt zu extrahieren .Ich muss in der Lage sein, das ID3-Tag aus einem ganzen Ordner von MP3-Dateien zu extrahieren.Verwenden von Taglib # zum Extrahieren von MP3-Tags

Die mp3-Dateien, die dem gewünschten Genre entsprechen, müssen dann in einen neuen Ordner kopiert werden, den ich für eine MP3-Datei, aber nicht für mehrere mp3-Dateien verwenden konnte.

Antwort

1

Sie müssen alle Dateien im Verzeichnis durchsuchen und prüfen, ob sie alle das gewünschte Genre haben.

Dafür können Sie einige LINQ verwenden:

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)); 
} 

Ich möchte auch, dass darauf hinweisen, wenn die Datei mehrere Genres hat, können Sie auch die Kriterien alle Dateien auszuwählen, die enthalten, dass Genre:

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); }); 

Die obige wäre zum Beispiel, wählen Sie Dateien mit den folgenden Gattungen, wenn genre-Hip-Hop gesetzt:

Hip-Hop 
Hip-Hop, Rock 
Hip-Hop, Trap 
Hip-Hop, Rock, Punk, Trap 

Die obige Reihe von Genres ist offensichtlich nicht realistisch. Es ist nur ein Beispiel :)

Verwandte Themen