Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Genre von Mp3 ändern (taglibsharp.dll)
55Flo55
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

Genre von Mp3 ändern (taglibsharp.dll)

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von 55Flo55 am .
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1069
Herkunft: Koblenz

beantworten | zitieren | melden

Hallo 55Flo55,

[Hinweis] Wie poste ich richtig? Punkt 5.

zero_x
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
55Flo55
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Folgende Fehlermeldung erhalte ich:
Zitat
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
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1069
Herkunft: Koblenz

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von zero_x am .
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
55Flo55
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

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?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von 55Flo55 am .
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von m0rius am .
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
der-schlingel
myCSharp.de - Member

Avatar #avatar-3239.jpg


Dabei seit:
Beiträge: 820
Herkunft: Österreich/Wien

beantworten | zitieren | melden

Hallo m0rius,
Zitat
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
private Nachricht | Beiträge des Benutzers
55Flo55
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
55Flo55
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Gibt es dann villeicht eine andere Lib. die dies kann?
private Nachricht | Beiträge des Benutzers
der-schlingel
myCSharp.de - Member

Avatar #avatar-3239.jpg


Dabei seit:
Beiträge: 820
Herkunft: Österreich/Wien

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von der-schlingel am .
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
private Nachricht | Beiträge des Benutzers
55Flo55
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

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?
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von 55Flo55 am .
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Zitat von 55Flo55
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;
private Nachricht | Beiträge des Benutzers
55Flo55
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Lösung gefunden.

tag.Genres = new string[] { "Dance" };
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers