Lectura de la información de la etiqueta mp3 en vb.net
Pregunta
Estoy haciendo un proyecto en VB.NET 2005, en el que tengo que extraer la información de la etiqueta de los archivos MP3. Para ese propósito, he usado código en este página. Pero el problema es cuando una de las etiquetas está vacía, no devolvió ningún valor.
Por ejemplo, usando esto puedo recuperar la información del álbum como esta,
Dim album As String = ""
album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album)
Pero no sabía cómo comprobar la variable del álbum está vacía o no, revisé la variable del álbum
If (album = "") Then
MsgBox("true")
ElseIf (album Is Nothing) Then
MsgBox("true")
ElseIf (album Is DBNull.Value) Then
MsgBox("true")
End If
Pero no hay éxito, ¿alguien puede ayudarme?
Solución 2
He usado expresión regular para resolver este problema. Gracias por toda tu ayuda...
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, "")
Si busca más etiqueta profesional editora, aquí está un enlace!
Otros consejos
La etiqueta ID3V1 se almacena en los últimos 128 bytes del archivo. Los primeros tres bytes son "etiqueta" que dice que el archivo almacena la etiqueta. Por lo tanto, primero verifique si el archivo tiene una etiqueta, luego léalas.
No conozco VB, pero creo que antes de leer el marco, primero deberías:
- Abre el archivo
Dim objMP3V1 As New MP3ID3v1("file_path")
- Prueba, si el archivo tiene una etiqueta ID3V1 en él probando si
objMP3V1.TagExists
la bandera es verdad - Luego lea los campos/marcos.
EDITAR
El código en el enlace 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
Entonces, si la etiqueta no está presente, entonces debería tener ""
asignado como la cadena.
Los campos ID3V1 son de longitud fija, por lo que si no hay cadena en el album
campo entonces debe contener una cadena num, es decir, la primera ubicación del campo contendrá un carácter nulo '\0'
, por lo tanto, devolverá una cadena nula ""
. Le diría que revise esto en un archivo de música de muestra con etiquetas ID3V1. (Incluso puede crear un archivo de texto formateado con ID3V1 y probarlo).