Чтение информации mp3 тега в vb.net
Вопрос
Я делаю проект в VB.NET 2005, в котором я должен извлечь информацию о теге файлов MP3. Для этой цели я использовал код в этом страница. Анкет Но проблема в том, когда один из тегов пуста, он не вернул никаких значений.
Например, используя это, я могу получить информацию о альбоме, подобную этой,
Dim album As String = ""
album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album)
Но я не знал, как проверить переменную альбома пуста или нет, я проверил переменную альбома
If (album = "") Then
MsgBox("true")
ElseIf (album Is Nothing) Then
MsgBox("true")
ElseIf (album Is DBNull.Value) Then
MsgBox("true")
End If
Но нет успеха, может кто -нибудь мне помочь.
Решение 2
Я использовал регулярное выражение, чтобы решить эту проблему. Спасибо за вашу помощь...
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, "")
Если вы ищете больше профессионального редактора тегов, вот ссылка!
Другие советы
Тег ID3V1 хранится в последних 128 байтах файла. Первые три байта - это «тег», сообщающий, что файл хранит тег. Поэтому сначала проверьте, есть ли в файле тег, затем прочитайте его.
Я не знаю VB, но я думаю, что прежде чем читать кадр, вы должны сначала:
- Откройте файл
Dim objMP3V1 As New MP3ID3v1("file_path")
- Проверьте, если в файле есть тег ID3V1, тестируя, если
objMP3V1.TagExists
Флаг верен - Затем прочитайте поля/рамки.
РЕДАКТИРОВАТЬ
Код в ссылке говорит
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
Итак, если тег отсутствует, то он должен иметь ""
назначен как строка.
Поля ID3V1 имеют фиксированную длину, поэтому, если в строке нет строки в album
Поле, тогда он должен содержать num String, то есть первое местоположение поля будет содержать нулевый символ '\0'
, поэтому он вернет нулевую строку ""
. Анкет Я бы сказал вам проверить это в примере музыкального файла с тегами ID3V1. (Вы даже можете создать текстовый файл, отформатированный с ID3V1 и проверить его).