VB 5/6-Tipp 0483: ID3V1 Tags lesen und schreiben
von TEKER
Beschreibung
Ganz ohne Hilfe von APIs oder Controls sondern nur mit einem Modul werden ID3V1 Tags von MP3 Dateien gelesen und geschrieben.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '-------------- Anfang Projektdatei MP3Tag.vbp -------------- ' Die Komponente 'Microsoft Common Dialog Control 6.0 (SP3) (COMDLG32.OCX)' wird benötigt. ' Es muss ein Verweis auf 'Microsoft Scripting Runtime' gesetzt werden. '-------- Anfang Formular "frmTAG" alias frmTAG.frm -------- ' Steuerelement: Standarddialog-Steuerelement "cdLoad" ' Steuerelement: Schaltfläche "cmdLoad" ' Steuerelement: Textfeld "txtGenere" ' Steuerelement: Textfeld "txtYear" ' Steuerelement: Textfeld "txtArtist" ' Steuerelement: Textfeld "txtComment" ' Steuerelement: Textfeld "txtAlbum" ' Steuerelement: Textfeld "txtTitle" ' Steuerelement: Schaltfläche "cmdSave" ' Steuerelement: Beschriftungsfeld "Label1" ' Steuerelement: Beschriftungsfeld "Label2" ' Steuerelement: Beschriftungsfeld "Label3" ' Steuerelement: Beschriftungsfeld "Label4" ' Steuerelement: Beschriftungsfeld "Label5" ' Steuerelement: Beschriftungsfeld "Label6" ' Steuerelement: Beschriftungsfeld "lblPath" Option Explicit Private Path As String Private Sub cmdLoad_Click() Dim T As TagInfo cdLoad.ShowOpen Path = cdLoad.FileName If GET_ID3V1TAG(Path, T) Then txtAlbum.Text = T.album txtArtist.Text = T.artist txtComment.Text = T.comment txtGenere.Text = T.genre txtTitle.Text = T.Songname txtYear.Text = T.year Else txtAlbum.Text = "" txtArtist.Text = "" txtComment.Text = "" txtGenere.Text = "" txtTitle.Text = "" txtYear.Text = "" MsgBox "Kein ID3v1 Tag gefunden", vbInformation, "Info" End If End Sub Private Sub cmdSave_Click() Dim T As TagInfo T.album = txtAlbum.Text T.artist = txtArtist.Text T.comment = txtComment.Text T.genre = txtGenere.Text T.Songname = txtTitle.Text T.year = txtYear.Text If Not PUT_ID3V1TAG(Path, T) Then MsgBox "Fehler: Konnte keinen ID3v2 Tag schreiben", _ vbCritical, "Fehler" End Sub Private Sub Form_Load() cdLoad.Filter = "MP3-Dateien (*.mp3)|*.mp3" End Sub '--------- Ende Formular "frmTAG" alias frmTAG.frm --------- '---------- Anfang Modul "mdlMP3" alias mdlMP3.bas ---------- '© by TEKER 2002 Option Explicit Public Type TagInfo TAG As String * 3 Songname As String * 30 artist As String * 30 album As String * 30 year As String * 4 comment As String * 30 genre As String * 1 End Type Public Path$, WINAMPPATH$ Public Function GET_ID3V1TAG(FilePath$, TAG As TagInfo) As Boolean Dim FNum%, fso As New FileSystemObject On Error Goto ERRORS If Not fso.FileExists(FilePath) Then GET_ID3V1TAG = False Exit Function End If With TAG FNum = FreeFile Open FilePath For Binary As #FNum Get #FNum, LOF(FNum) - 127, .TAG If .TAG <> "TAG" Then GET_ID3V1TAG = False Close #FNum Exit Function End If Get #FNum, , .Songname Get #FNum, , .artist Get #FNum, , .album Get #FNum, , .year Get #FNum, , .comment Get #FNum, , .genre Close #FNum GET_ID3V1TAG = True End With Exit Function ERRORS: GET_ID3V1TAG = False Close #FNum End Function Public Function PUT_ID3V1TAG(FilePath$, TAG As TagInfo) As Boolean Dim FNum%, TPos& On Error Goto ERRORS With TAG FNum = FreeFile Open FilePath For Binary As #FNum TPos = LOF(FNum) Get #FNum, TPos - 127, .TAG If .TAG = "TAG" Then TPos = TPos - 127 .TAG = "TAG" Put #FNum, TPos, TAG Close #FNum PUT_ID3V1TAG = True End With Exit Function ERRORS: PUT_ID3V1TAG = False End Function '----------- Ende Modul "mdlMP3" alias mdlMP3.bas ----------- '--------------- Ende Projektdatei MP3Tag.vbp ---------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Horst Brand am 05.05.2005 um 17:43
Hallo,
was muß ich im Code für ID3V2-Tags ändern?
Anscheinend operiert mein GFlash-MP3-Player mit ID3V2.
Schönen Gruß
Horst Brand
Kommentar von Kyrwalda am 01.05.2004 um 11:56
Leider funktioniert es nicht wie ich es mir vorstelle.
Das Problem ist, es wird nur der TAG beschrieben und nicht der Header (dieser wird für alle Player genutzt, um Titel und Interpret anzeigen zu lassen). Es funktioniert nur wenn der Header nicht beschrieben worden ist. Steht dort schon etwas drin, wird dieser nicht mehr überschrieben.
Hat da jemand vielleicht noch eine Idee?????
Kommentar von Junkx am 20.10.2002 um 21:58
hier wird das problem des tracks in verbindung mit dem comment nicht beachtet
wer probleme mit dem track hat beim id3v1.1 tag hat soll sich ma hier umschaun:
http://www.scram.de/musik/sonstige/hilfe/wasist/id3tag.htm
da steht das wenn ein track angegeben ist, im 29. byte des comment quasi eine vorwarnung steht und im 30. byte des comments dann statt dem comment die tracknummer steht...
mit dem genre hatte ich nie probleme, wenn eine passende liste vorhanden ist welcher ascii code welches genre verschlüsselt (hab mir das ausm winamp rausgesucht)... nur nr 032 (classical) funzt nit... :/
bai
Kommentar von Kyron am 14.06.2002 um 02:02
Funktioniert ganz gut was die leichten Sachen angeht, aber auch hier wieder das Problem mit dem "Genre"!!
Das auslesen des Genres funktioniert nicht, das schreiben ist auch fehlerhaft. z.B. Statt "Pop" wird dann "Folk" geschrieben.
Hat die mp3 einen ID3v1 und einen ID3v2 Tag funktioniert das schreiben der Tags überhaupt nicht.