Laden...

Genre von Mp3 ändern (taglibsharp.dll)

Erstellt von 55Flo55 vor 13 Jahren Letzter Beitrag vor 13 Jahren 6.096 Views
5
55Flo55 Themenstarter:in
37 Beiträge seit 2010
vor 13 Jahren
Genre von Mp3 ändern (taglibsharp.dll)

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.

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo 55Flo55,

[Hinweis] Wie poste ich richtig? Punkt 5.

zero_x

5
55Flo55 Themenstarter:in
37 Beiträge seit 2010
vor 13 Jahren

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

1.044 Beiträge seit 2008
vor 13 Jahren

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

5
55Flo55 Themenstarter:in
37 Beiträge seit 2010
vor 13 Jahren

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?

1.002 Beiträge seit 2007
vor 13 Jahren

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

799 Beiträge seit 2007
vor 13 Jahren

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.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
5
55Flo55 Themenstarter:in
37 Beiträge seit 2010
vor 13 Jahren

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?

5
55Flo55 Themenstarter:in
37 Beiträge seit 2010
vor 13 Jahren

Gibt es dann villeicht eine andere Lib. die dies kann?

799 Beiträge seit 2007
vor 13 Jahren

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.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
5
55Flo55 Themenstarter:in
37 Beiträge seit 2010
vor 13 Jahren
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?

U
1.688 Beiträge seit 2007
vor 13 Jahren

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;

5
55Flo55 Themenstarter:in
37 Beiträge seit 2010
vor 13 Jahren

Lösung gefunden.

tag.Genres = new string[] { "Dance" };
1.002 Beiträge seit 2007
vor 13 Jahren

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