2013-06-25 20 views
5

Ich versuche, neue Künstler und Titel ID3 Tags in Tracks zu speichern. Das Laden von Tags aus Tracks, die gut funktionieren, und auch das Bearbeiten des Titels für den Track funktioniert einwandfrei. Aber wenn ich versuche, Darsteller(Künstler) zu bearbeiten, hat es nichts geändert. Hier ist der CodeTagLib scharf nicht bearbeiten Künstler

public void renameID3(string artist,string title) 
{ 
    using (TagLib.File f = TagLib.File.Create(FInfo.FullName)) 
     { 
      f.Tag.Artists[0] = artist; //Both of them are not ... 
      f.Tag.Performers[0] = artist; //working 


      f.Tag.Title = title; //This works fine 
      f.Save(); 
     } 
    } 

plus sah ich die Definiton von FirstPerformer und FirstPerformer Mitglieder TagLib Klasse, aber sie haben keine Set-Methode. Wer weiß, wie man das löst?

Antwort

7

Stuck mit dem gleichen Problem. Festgestellt, dass Clearing Performers macht es zunächst wie vorgesehen:

using(TagLib.File tlFile = TagLib.File.Create(newFileName)){ 
    //tlFile.Tag.Performers = new []{translateDict[author]}; //doesn't work 
    tlFile.Tag.Performers = null; //clearing out performers 
    tlFile.Tag.Performers = new []{translateDict[author]}; //works now 
    tlFile.Save(); 
} 
+0

Du bist der beste Mann! Vielen Dank –

+0

Sie sollten den Schritt '= null' nicht benötigen. Das Problem ist, dass Performers, et al. * Neues * Array zurückgeben, so dass es keine Änderungen an der zugrunde liegenden Datenstruktur vornimmt. Es sollte wirklich ein IEnumerable zurückgeben, aber ich war jung und rücksichtslos. –

+0

@BrianNickel Kannst du bitte einen Blick auf die Frage werfen: http://stackoverflow.com/questions/35414734/cant-add-image-keywords-if-there-were-no-keywords-to-begin-with-taglib-sharp/35421960 # 35421960 –

1
TagLib.File f = TagLib.File.Create(yourFile); 
f.Tag.AlbumArtists = new string[] { "Artist 1", "Artist 2", ... }; 
0

Das ist für mich gearbeitet:

TagLib.File file = TagLib.File.Create (fname); 
file.Tag.Performers = new String[1] { artist }; 
file.Save();