2011-06-12 88 views
1

我正在做一個項目,在VB.NET 2005中,我必須提取mp3文件的標籤信息。爲此,我使用page中的代碼。但問題是,當其中一個標籤爲空時,它沒有返回任何值。閱讀vb.net中的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 

但沒有成功,有人可以幫助我。

+0

+1,我也有同樣的問題 – Predator 2011-06-12 08:10:00

+0

鏈接的代碼相當笨拙。使用如果album.Trim()=「」然後 – 2011-06-12 18:33:09

回答

0

我用正則表達式來解決這個問題。感謝您的幫助...

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, "") 

如果你想找更專業的標籤編輯這裏的a link

3

ID3v1標籤存儲在文件的最後128個字節中。前三個字節是「TAG」,告訴文件存儲標籤。所以首先檢查文件是否有標籤,然後閱讀它們。

我不知道VB的,但我認爲閱讀框架之前,你應該先:

  1. 打開文件Dim objMP3V1 As New MP3ID3v1("file_path")
  2. 測試,如果文件中有一個的ID3v1標籤通過,如果objMP3V1.TagExists標誌測試是真的
  3. 然後閱讀字段/框架。

編輯

在鏈接的代碼表示

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串,即,該字段的第一位置將包含一個空字符'\0',因此它會返回一個空字符串""。 我會告訴你在帶有ID3v1標籤的示例音樂文件上檢查這一點。 (你甚至可以創建一個用ID3v1格式化的文本文件並測試它)。

+0

是的,我檢查了標記存在的方法,它分配值,如果存在。但其中一個信息不像「專輯」那樣可用,該變量沒有保存任何值。我檢查它是空的或不是,但它不空。所以我如何檢查它是否包含信息... – VKGS 2011-06-12 06:59:50

+1

ID3v1中的字段是固定長度的字段,如果它不存在,它應該包含一個空字符串,即第一個位置將包含'\ 0 '字符。我不知道VB,但檢查代碼,我認爲你應該檢查返回值是否是「」 – phoxis 2011-06-12 15:21:57