Hallo,
ich würde gerne die Genre einer Mp3 ändern.
Dazu benutze ich TagLibSharp.dll
Dies habe ich es filgendermaßen versucht.
TagLib.File f = TagLib.File.Create(filename);
TagLib.Id3v2.Tag tag = f.GetTag(TagLib.TagTypes.Id3v2) as TagLib.Id3v2.Tag;
tag.Genres[0] = "Dance";
tag.FirstGenre = "Dance";
Leider kommt dann beim ändern der Genre immer die Fehlermeldung,
dass die Genre Schreibgeschützt sein.
Wie kann ich die Genre trotzdem ändern.
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Folgende Fehlermeldung erhalte ich:
Fehler 1 Einer Eigenschaft oder einem Indexer "TagLib.Tag.FirstGenre" kann nichts zugewiesen werden -- sie sind schreibgeschützt. C:\Users****\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 24 13 ConsoleApplication1
Hallo 55Flo55,
das bedeutet, dass du so auf die die Eigenschaft FirstGenre nicht zugreifen kannst. Die Eigenschaft besitzt keinen Setter, das wohl auch aus einem guten Grund. Schau dir lieber mal das API-Design der Library an.
Siehe auch [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen).
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
aber wenn ich das erste Beispiel verwende
TagLib.File f = TagLib.File.Create(filename);
TagLib.Id3v2.Tag tag = f.GetTag(TagLib.TagTypes.Id3v2) as TagLib.Id3v2.Tag;
tag.Genres[0] = "Dance";
Dann taucht die Fehlermeldung nicht auf. Aber auch die Genre wird nicht geändert.
Gibt es denn da keine Möglichkeit die Genre zu ändern?
oder gibt es eine andere .dll mit der ich die Genre ändern kann?
Hallo 55Flo55,
hast du die Fehlermeldung des Compilers eigentlich gelesen? Du versuchst in diesem Beispiel auch gar nicht, TagLib.Tag.FirstGenre
zuzuweisen, also erhältst du auch die Fehlermeldung nicht.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Hallo m0rius,
hast du die Fehlermeldung des Compilers eigentlich gelesen? Du versuchst in diesem Beispiel auch gar nicht, TagLib.Tag.FirstGenre zuzuweisen, also erhältst du auch die Fehlermeldung nicht.
Naja, er editiert das erste Element des Arrays. Das kann man schon so verstehen, dass er einfach auf verschiedene Art herumprobiert das Property zu ändern.
@55Flo55
Entweder die Lib. kann das gar nicht oder du musst das ganze Tag-Objekt zurückschreiben. Ich kenne die Lib nicht aber ich tippe darauf, dass du in TagLib.File eine Methode findest mit der du das erreichst.
As a man thinketh in his heart, so he is.
Wenn ich aber mit
tag.Genres[0] = "Dance";
Die Genre nicht zuweisen kann, wie kann ich das dann machen?
tag.Genres[] greift genauso wie tag.FirstGenre auf die erste Genre zu.
Nur bei tag.FirstGenre wird eine Fehlermeldung ausgegeben und bei tag.Genres[0]
nicht. Aber trotzdem wird die Genre nicht geändert.
Was mache ich falsch, sodass die Genre nicht geändert wird, bzw was muss ich andrs machen?
Hast du es schon mit:
TagLib.File f = TagLib.File.Create(filename);
TagLib.Id3v2.Tag tag = f.GetTag(TagLib.TagTypes.Id3v2) as TagLib.Id3v2.Tag;
tag.Genres[0] = "Dance";
f.Save(); // <-- habe ich nicht in deinen beispiel-codes gesehen.
probiert?
Die Lib scheint das zu können aber ich kann das leider nicht überprüfen da die Website vom Anbieter von einem pr0n-Cracker übernommen wurde.
As a man thinketh in his heart, so he is.
TagLib.File f = TagLib.File.Create(filename);
TagLib.Id3v2.Tag tag = f.GetTag(TagLib.TagTypes.Id3v2) as TagLib.Id3v2.Tag;
tag.Genres[0] = "Dance";
f.Save(); // <-- habe ich nicht in deinen beispiel-codes gesehen.
f.Save
habe ich verwendet.
Leider nur vergessen mit anzugeben. Sorry
Gibt es als alternative eine andere Lib. die das kann?
Denn mitlerweile habe ich alle möglichkeiten ausprobiert, oder habe ich doch noch eine übersehen?
Denn mitlerweile habe ich alle möglichkeiten ausprobiert, oder habe ich doch noch eine übersehen?
Was heißt denn "alle"? Wär ja schön, wenn Du schon mal Alternativen zum Ausschließen genannt hättest. Wie wäre es z. B. damit?
string[] Genres = tag.Genres;
Genres[0] = "Dance";
tag.Genres = Genres;
Hallo 55Flo55,
diesen Fehler hättest du aber von Anfang an vermeiden können, wenn du dir den Datentyp von tag.Genres
angesehen hättest.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg