2016-04-10 20 views
2

Tüm mp3 dosyaları bir klasörünün id3 etiketlerini ayıklamak için taglib'i nasıl kullanırdım, şu anda sadece bir mp3 dosyası için bir tür söyleme türünü çıkartmak için kullanabiliyorum .IM3 etiketini mp3 dosyalarının tüm bir klasöründen ayıklayabilmem gerekir.taglib # using mp3 etiketleri çıkartmak

Gerekli türle eşleşen mp3 dosyaları daha sonra bir mp3 dosyası için yapabileceğimiz ancak birden fazla dosya kullanamadığım yeni bir klasör konumuna kopyalanmalıdır.

cevap

1

Dizindeki tüm dosyaları incelemeniz ve her birinin gerekli türe sahip olup olmadığını kontrol etmeniz gerekir. Bunun için

, bazı LINQ kullanabilirsiniz:

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

Ben de dosya birden türler varsa, hatta içeren tüm dosyaları seçmek için kriterleri ayarlayabilirsiniz işaret etmek istiyorum tür:

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

yukarıda olur, genreHip-Hop olarak ayarlanır aşağıdaki türler ile örneğin, dosyaları seçin:

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

Yukarıdaki türler açıkça gerçekçi değildir. Sadece bir örnek var :)