Lettura mp3 informazioni dei tag in vb.net
Domanda
Sto facendo un progetto in VB.NET 2005, in cui devo estrarre le informazioni dei tag dei file mp3. A tal fine ho codice utilizzato in questo pagina . Ma il problema è quando uno dei tag è vuoto, non ha restituito alcun valore.
Ad esempio, utilizzando questo posso recuperare informazioni album come questo,
Dim album As String = ""
album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album)
Ma non sapevo come controllare la variabile album è vuoto o no, ho controllato variabile album
If (album = "") Then
MsgBox("true")
ElseIf (album Is Nothing) Then
MsgBox("true")
ElseIf (album Is DBNull.Value) Then
MsgBox("true")
End If
, ma senza successo, Qualcuno può aiutarmi.
Soluzione 2
Ho usato espressioni regolari per risolvere questo problema. Grazie per tutto il vostro aiuto ...
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, "")
Se si cerca di tag più professionale editior Ecco un link !
Altri suggerimenti
L'ID3v1 viene memorizzato negli ultimi 128 byte del file. I primi tre byte sta dicendo "TAG" che i negozi di file il tag. Quindi, prima verifica se il file ha un tag, poi leggerli.
Non so VB ma penso che prima di leggere il telaio, si deve prima:
- Apri il file
Dim objMP3V1 As New MP3ID3v1("file_path")
- Prova, se il file ha un tag ID3v1 in esso testando se
objMP3V1.TagExists
flag è vero - Poi leggi i campi / fotogrammi.
Modifica
Il codice nel link dice
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
Quindi, se il tag non è presente allora dovrebbe avere ""
assegnato come stringa.
campi ID3v1 sono di lunghezza fissa, quindi se c'è alcuna stringa nel campo album
allora dovrebbe contenere una stringa num, cioè la prima posizione del campo conterrà un '\0'
carattere nullo, pertanto verrà restituito un nullo stringa di ""
.
Io vi direi di controllare il questo su un file musicale campione con tag ID3v1. (È anche possibile creare un file di testo formattato con ID3v1 e testarlo).