Taglib again :)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von NoIde.

    Taglib again :)

    hallo liebe gemeinde :D

    arbeiten mit taglib ist nicht so einfach, da es meiner meinung eine ziemlich schwachstelle hat.

    sobald ein file-object erstellt wurde, wird sowohl der tag von ID3v1 und ID3v2 gelesen.
    ich lade also in eine varable den tag von ID3v1, in einer anderen den tag von ID3v2
    jetzt bearbeite ich die tags. wahlweise ID3v1 und/oder ID3v2.
    speicher ich jetzt ID3v1 wird auch der zuvor gelesene ID3v2 geschrieben und umgekehrt.
    das heißt der eine Tag bügelt immer über den anderen Tag drüber.
    es gibt zwar eine möglichkeit einen tag zu entfernen wie hier beschrieben:
    stackoverflow.com/questions/85…b-sharp-saving-only-id3v2
    das betrifft aber nur tags, die hinzugefügt wurden.

    ich habe mir in meiner verzweiflung eine routine gebastelt, die das problem behebt:

    VB.NET-Quellcode

    1. Public Sub ID3SaveTag(Optional ByRef mp3v1 As TagLib.File = Nothing,
    2. Optional ByRef mp3v2 As TagLib.File = Nothing,
    3. Optional ByVal newID3v2 As TagLib.Tag = Nothing,
    4. Optional showInfo As Boolean = True)
    5. Dim ID3v2 As TagLib.Tag
    6. If mp3v1 IsNot Nothing Then
    7. ID3v1SaveTag(mp3v1, showInfo) 'Tagv1 speichern
    8. End If
    9. CloseMP3(mp3v1) 'File-ObjectV1 schließen
    10. If mp3v2 IsNot Nothing Then
    11. Dim fInfo As New IO.FileInfo(mp3v2.Name)
    12. ID3v2GetTag(fInfo, mp3v2, ID3v2) 'Tagv2 lesen
    13. ID3CopyTag(newID3v2, ID3v2) 'zuvor übergebenen neuen Tag in den zuvor geöffneten Tag kopieren.
    14. ID3v2SaveTag(mp3v2,,, showInfo) 'Tagv2 speichern
    15. End If
    16. CloseMP3(mp3v2) 'File-ObjectV2 schließen
    17. ID3v2 = Nothing
    18. End Sub


    eigentlich ist es so:
    ich öffne Tagv1 & TagV2
    ich bearbeite beide Tags und/oder einen Tag.
    TagV1 wird gespeichert und geschlossen.
    TagV2 wird erneut geöffnet und der neue Tag hinein kopiert.
    TagV2 wird gespeichert und geschlossen.

    das problem hatte ich als ich vor monaten mit taglib angefangen habe und habe noch keine bessere möglichkeit gefunden.
    ich bin etwas unglücklich mit meiner routine, obwohl sie funktioniert.

    weiß jmd rat ;( ?
    oder habe ich iwas übersehen oder verstehe ich es nur nicht ?
    @woeh Was genau ist das Ziel Deiner Operation?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey,

    also ich würde mich an deiner Stelle mit den Tags direkt auseinander setzen und alles selbst machen. Hatte damals ein paar Tag-Libs probiert, irgend etwas war immer nicht gut, teils sogar ungeschicktes Exceptionhandling, so das es trotzt Exceptionhandling zum Absturz kam und schlimmeres(defekte Dateien). Schwer ist es nicht, ausreichend gut dokumentiert ist das auf id3.org auch.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    danke für die antworten...

    bis auf diese "kleinigkeit" funktioniert ja alles so wie es soll.
    habe einfach nur nochmal nachgefragt...hätte ja sein können, dass es an mir gelegen hat.

    ich werde mir das mal überlegen mich mit den tags auseinander zu setzen.
    das ist aber eine ziemliche mamut-aufgabe, das ich sämtliche frames inkl. bilder bearbeite.

    wer weiß....vielleicht packt es mich ja iwann :D