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?

¿Fue útil?

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:

  1. Abre el archivo Dim objMP3V1 As New MP3ID3v1("file_path")
  2. Prueba, si el archivo tiene una etiqueta ID3V1 en él probando si objMP3V1.TagExists la bandera es verdad
  3. 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).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top