MP3 -Tag -Informationen in vb.net lesen
Frage
Ich mache ein Projekt in VB.NET 2005, in dem ich die Tag -Informationen von MP3 -Dateien extrahieren muss. Zu diesem Zweck habe ich darin Code verwendet Seite. Aber das Problem ist, wenn eines der Tags leer ist, gab es keine Werte zurück.
Zum Beispiel kann ich mit dieser Verwendung Albuminformationen wie diese abrufen.
Dim album As String = ""
album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album)
Aber ich wusste nicht, wie man die Albumvariable leer ist oder nicht. Ich habe die Albumvariable überprüft
If (album = "") Then
MsgBox("true")
ElseIf (album Is Nothing) Then
MsgBox("true")
ElseIf (album Is DBNull.Value) Then
MsgBox("true")
End If
Aber kein Erfolg, kann mir jemand helfen.
Lösung 2
Ich habe regelmäßigen Ausdruck verwendet, um dieses Problem zu lösen. Danke für deine Hilfe...
Imports System.Text.RegularExpressions
dim RegEx As New RegularExpressions.Regex("^[a-zA-Z0-9]+$")
dim Match As Match
dim film as string
film = song.Frame(MP3ID3v1.FrameTypes.Album)
Match = RegEx.Match(film)
film1 = IIf((Match.Success), film.ToString, "")
Wenn Sie nach mehr professionellem Tag Editior suchen eine Verbindung!
Andere Tipps
Das ID3V1 -Tag ist in den letzten 128 Bytes der Datei gespeichert. Die ersten drei Bytes sind "Tag", aus denen hervorgeht, dass die Datei das Tag speichert. Überprüfen Sie also zuerst, ob die Datei ein Tag hat, und lesen Sie sie dann.
Ich kenne VB nicht, aber ich denke, bevor Sie den Rahmen lesen, sollten Sie zuerst:
- Öffne die Datei
Dim objMP3V1 As New MP3ID3v1("file_path")
- Test, wenn die Datei ein ID3V1 -Tag enthält, indem Sie testen, ob
objMP3V1.TagExists
Flag ist wahr - Lesen Sie dann die Felder/Frames.
BEARBEITEN
Der Code im Link heißt
FileGet(intFile, strTag, lngLOF - 127, True)
If (strTag.ToUpper <> "TAG") Then
' No ID3v1 tag found
mblnTagExists = False
mobjFrame(0) = ""
mobjFrame(1) = ""
mobjFrame(2) = ""
mobjFrame(3) = ""
mobjFrame(4) = ""
mobjFrame(5) = ""
mobjFrame(6) = ""
Else
' ID3v1 tag found
mblnTagExists = True
' Read all frames from the file
FileGet(intFile, strTitle)
FileGet(intFile, strArtist)
FileGet(intFile, strAlbum)
FileGet(intFile, strYear)
FileGet(intFile, strComment)
FileGet(intFile, bytDummy)
FileGet(intFile, bytTrack)
FileGet(intFile, bytGenre)
' Assign the frame content to the properties
mobjFrame(0) = strTitle
mobjFrame(1) = strArtist
mobjFrame(2) = strAlbum
mobjFrame(3) = strYear
mobjFrame(4) = bytTrack
mobjFrame(5) = strComment
mobjFrame(6) = bytGenre
End If
End If
Also, wenn das Tag nicht vorhanden ist, sollte es haben ""
als Zeichenfolge zugewiesen.
ID3V1 -Felder sind von fester Länge. Wenn also keine Zeichenfolge in der vorhanden ist album
Feld dann sollte es eine Num -Zeichenfolge enthalten, dh der erste Ort des Feldes enthält ein Nullzeichen '\0'
, Daher wird es eine Null -Zeichenfolge zurückgeben ""
. Ich würde Ihnen sagen, dass Sie dies in einer Beispiel -Musikdatei mit ID3V1 -Tags überprüfen sollen. (Sie können sogar eine mit ID3V1 formatierte Textdatei erstellen und testen).