Not a Member Yet,
Click here to Register

ID: 399
Viewed: 3368
Added: Aug 19, 2002
Version:
Snippet uploaded by: snippet
Written By: Unknown
Demo: Sorry, no demo



User Rated at: 0 Stars
Rate This:

Thank you for your vote. Please wait...

It appears you already voted for this snippet

It appears your vote value was empty

gets the information from the mp3

Highlight all by clicking in box
<!---Declaration--->
none

Highlight All
<!---Code--->
' cMP3Info Class 

Private mvarFilename As String

Private Type Info
sTitle As String
sArtist As String
sAlbum As String
sComment As String
sYear As String
sGenre As String
End Type

Private MP3Info As Info

Public Property Get Filename() As String


Filename = mvarFilename

End Property

Private Function IsValidFile(ByVal sFilename) As Boolean

Dim bOk As Boolean
' make sure file exists
bOk = CBool(Dir(sFilename, vbHidden) <> "")
Dim aExtensions, ext
aExtensions = Array(".mp3", ".mp2", ".mp1")
Dim bOkayExtension As Boolean
bOkayExtension = False


If bOk Then


For Each ext In aExtensions


If InStr(1, sFilename, ext, vbTextCompare) > 0 Then
bOkayExtension = True
End If

Next 'ext

End If

IsValidFile = bOk And bOkayExtension

End Function

Public Property Let Filename(ByVal sPassFilename As String)

Dim iFreefile As Integer
Dim lFilePos As Long
Dim sData As String * 128
Dim sGenre() As String
' Genre
Const sGenreMatrix As String = "Blues|Classic Rock|Country|Dance|Disco|Funk|Grunge|" + _
"Hip-Hop|Jazz|Metal|New Age|Oldies|Other|Pop|R&B|Rap|Reggae|Rock|Techno|" + _
"Industrial|Alternative|Ska|Death Metal|Pranks|Soundtrack|Euro-Techno|" + _
"Ambient|Trip Hop|Vocal|Jazz+Funk|Fusion|Trance|Classical|Instrumental|Acid|" + _
"House|Game|Sound Clip|Gospel|Noise|Alt. Rock|Bass|Soul|Punk|Space|Meditative|" + _
"Instrumental Pop|Instrumental Rock|Ethnic|Gothic|Darkwave|Techno-Industrial|Electronic|" + _
"Pop-Folk|Eurodance|Dream|Southern Rock|Comedy|Cult|Gangsta Rap|Top 40|Christian Rap|" + _
"Pop/Punk|Jungle|Native American|Cabaret|New Wave|Phychedelic|Rave|Showtunes|Trailer|" + _
"Lo-Fi|Tribal|Acid Punk|Acid Jazz|Polka|Retro|Musical|Rock & Roll|Hard Rock|Folk|" + _
"Folk/Rock|National Folk|Swing|Fast-Fusion|Bebob|Latin|Revival|Celtic|Blue Grass|" + _
"Avantegarde|Gothic Rock|Progressive Rock|Psychedelic Rock|Symphonic Rock|Slow Rock|" + _
"Big Band|Chorus|Easy Listening|Acoustic|Humour|Speech|Chanson|Opera|Chamber Music|" + _
"Sonata|Symphony|Booty Bass|Primus|Porn Groove|Satire|Slow Jam|Club|Tango|Samba|Folklore|" + _
"Ballad|power Ballad|Rhythmic Soul|Freestyle|Duet|Punk Rock|Drum Solo|A Capella|Euro-House|" + _
"Dance Hall|Goa|Drum & Bass|Club-House|Hardcore|Terror|indie|Brit Pop|Negerpunk|Polsk Punk|" + _
"Beat|Christian Gangsta Rap|Heavy Metal|Black Metal|Crossover|Comteporary Christian|" + _
"Christian Rock|Merengue|Salsa|Trash Metal|Anime|JPop|Synth Pop"
' Build the Genre array (VB6+ only)
sGenre = Split(sGenreMatrix, "|")
' Store the filename (for "Get Filename"
' property)
mvarFilename = sPassFilename
' Clear the info variables


If Not IsValidFile(sPassFilename) Then ' bug fix
Exit Property
End If

MP3Info.sTitle = ""
MP3Info.sArtist = ""
MP3Info.sAlbum = ""
MP3Info.sYear = ""
MP3Info.sComment = ""
' Ensure the MP3 file exists
' Retrieve the info data from the MP3
iFreefile = FreeFile
lFilePos = FileLen(mvarFilename) - 127


If lFilePos > 0 Then ' bug fix
Open mvarFilename For Binary As #iFreefile
Get #iFreefile, lFilePos, sData
Close #iFreefile
End If

' Populate the info variables


If Left(sData, 3) = "TAG" Then
MP3Info.sTitle = Mid(sData, 4, 30)
MP3Info.sArtist = Mid(sData, 34, 30)
MP3Info.sAlbum = Mid(sData, 64, 30)
MP3Info.sYear = Mid(sData, 94, 4)
MP3Info.sComment = Mid(sData, 98, 30)
Dim lGenre
lGenre = Asc(Mid(sData, 128, 1))


If lGenre <= UBound(sGenre) Then
MP3Info.sGenre = sGenre(lGenre)
Else
MP3Info.sGenre = ""
End If

Else
MP3Info = GetInfo(mvarFilename)
End If

End Property

Private Function GetInfo(ByVal sFilename) As Info

Dim i As Info
GetInfo = i
Dim s
s = sFilename


If InStrRev(s, ") > 0 Then 'it's a full path
s = Mid(s, InStrRev(s, ") + 1)
End If

'drop extension
s = Left(s, InStrRev(s, ".", , vbTextCompare) - 1)
s = Replace(Trim(s), " ", " ")
s = Trim(s)


If CountItems(s, " ") < 1 Then
i.sTitle = Replace(s, "_", " ")
GetInfo = i
Exit Function
End If

s = Trim(Replace(s, "_", " "))


If Left(s, 1) = "(" And CountItems(s, "-") < 3 Then
i.sArtist = Mid(s, 2, InStr(s, ")") - 2)
s = Trim(Mid(s, InStr(s, ")") + 1))


If Left(s, 1) = "-" Then 'grab title
i.sTitle = Trim(Mid(s, 2))
Else 'grab title anyway


If InStr(s, "-") > 0 Then
i.sAlbum = Mid(s, InStr(s, "-") + 1)
i.sTitle = Left(s, InStr(s, "-") - 1)
Else
i.sTitle = Trim(s)
End If

End If

Else
Dim aThings
Dim l
aThings = Split(s, "- ")


For l = 0 To UBound(aThings)


If Not IsNumeric(aThings(l)) Then


If i.sArtist = "" Then
i.sArtist = aThings(l)
Else


If IsNumeric(aThings(l - 1)) Then ' title


If i.sTitle = "" Then
i.sTitle = aThings(l)
End If

ElseIf i.sAlbum = "" Then
i.sAlbum = aThings(l)
End If

End If

End If

Next ' i

End If

i.sArtist = Replace(Replace(i.sArtist, "(", ""), ")", "")


If Left(s, 1) <> "(" And i.sTitle = "" And (InStr(sFilename, ") <> InStrRev(sFilename, ")) Then
' recurse
GetInfo = GetInfo(FixDir(sFilename))
Else
GetInfo = i
End If

End Function

Private Function CountItems(s, sToCount)

Dim a
a = Split(s, sToCount)


If UBound(a) = -1 Then
CountItems = 0
Else
CountItems = UBound(a) - LBound(a)
End If

End Function

Private Function FixDir(sFullpath)

Dim s1, s2
s1 = Trim(Left(sFullpath, InStrRev(sFullpath, ") - 1))
s2 = Trim(Mid(sFullpath, InStrRev(sFullpath, ") + 1))
FixDir = s1 & " - " & s2

End Function



Public Property Get Title() As String

Title = Trim(MP3Info.sTitle)

End Property



Public Property Get Artist() As String

Artist = Trim(MP3Info.sArtist)

End Property

Public Property Get Genre() As String

Genre = Trim(MP3Info.sGenre)

End Property

Public Property Get Album() As String

Album = Trim(MP3Info.sAlbum)

End Property

Public Property Get Year() As String

Year = Trim(MP3Info.sYear)

End Property

Public Property Get Comment() As String

Comment = Trim(MP3Info.sComment)

End Property
;


No Comments to show

Please completely fill out the form below if you want to review this snippet. All reviews are subject to validation.


Replying to a Comment...


Adding your comment. Please wait...

Thanks for adding your comment!. After further review it will be added.

There was a problem adding your comment. Please try again.

Please complete all the fields in the form before sending.

© 2002 - 2024 snippetlibrary.com All Rights Reserved. Conditions
Do NOT follow this link or you will be banned from the site!