<%
'================================================================================
=========
' I D 3 T A G R E A D E R (ID3v1 e ID3v1.1)
' Autor: Gabriel Fróes (www.codigofonte.com.br)
' Data: 17/07/2006
' Versão: 1.0
'================================================================================
=========
'*******************************************************
'CLASSE RESPONSÁVEL PELA LEITURA DAS TAGS ID3 NO MP3
'*******************************************************
Class MP3ID3
'-----------------------------------------------------
'ATRIBUTOS DA CLASSE
'-----------------------------------------------------
Private a_Tamanho
Private a_Arquivo
Private a_Titulo
Private a_Artista
Private a_Album
Private a_Ano
Private a_Comentario
Private a_Trilha
Private a_Genero
Private a_TAG
'Objetos
Private objFSO
Private objMP3
'Array com os Gêneros
Private arrGeneros
'-----------------------------------------------------
'PROPRIEDADES DA CLASSE
'-----------------------------------------------------
Public Property Get Tamanho
Tamanho = a_Tamanho
End Property
Public Property Get Arquivo
Arquivo = a_Arquivo
End Property
Public Property Get Titulo
Titulo = a_Titulo
End Property
Public Property Get Artista
Artista = a_Artista
End Property
Public Property Get Album
Album = a_Album
End Property
Public Property Get Ano
Ano = a_Ano
End Property
Public Property Get Comentario
Comentario = a_Comentario
End Property
Public Property Get Trilha
Trilha = a_Trilha
End Property
Public Property Get Genero
Genero = a_Genero
End Property
Public Property Get TAG
TAG = a_TAG
End Property
'-----------------------------------------------------
'Procedimentos de Inicialização de Destruição da Classe
'-----------------------------------------------------
Private Sub Class_Initialize()
'Criação dos Objetos
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objMP3 = Server.CreateObject("ADODB.Stream")
objMP3.Type = 1 'adTypeBinary
arrGeneros = Split("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,Altern 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,Top 40,Christian Rap,Pop/Funk,Jungle,Native American,Cabaret,New Wave,Psychadelic,Rave,Showtunes,Trailer,Lo-Fi,Tribal,Acid Punk,Acid Jazz,Polka,Retro,Musical,Rock & Roll,Hard Rock,Folk,Folk/Rock,National Folk,Swing,Bebob,Latin,Revival,Celtic,Bluegrass,Avantgarde,Gothic Rock,Progressive Rock,Psychedelic Rock,Symphonic Rock,Slow Rock,Big Band,Chorus,Easy Listening,Acoustic,Humor,Speech,Chanson,Opera,Chamber Music,Sonata,Symphony,Booty Bass,Primus,Porn Groove,Satire,Slow Jam,Club,Tango,Samba,Folclore", ",")
End Sub
Private Sub Class_Terminate()
'Destruição dos Objetos
Set objMP3 = Nothing
Set objFSO = Nothing
End Sub
'-----------------------------------------------------
'MÉTODOS DA CLASSE
'-----------------------------------------------------
'-----------------------------------------------------
'Funcao: readID3Tags(ByVal CaminhoMP3)
'Sinopse: Realizar a leitura do MP3 e extrai as TAGS ID3
' e preenche as propriedades
'Parametro:
' CaminhoMP3: Caminho Virtual do arquivo MP3
'Retorno: Booleano
'-----------------------------------------------------
Function readID3Tags(ByVal CaminhoMP3)
'Declaração
Dim Retorno
Dim GeneroID
Dim tmpComentario
'Inicialização
Retorno = False
a_Tamanho = ""
a_Arquivo = ""
a_Titulo = ""
a_Artista = ""
a_Album = ""
a_Ano = ""
a_Comentario= ""
a_Trilha = ""
a_Genero = ""
a_TAG = ""
'Abrindo o arquivo MP3
objMP3.Open
objMP3.LoadFromFile CaminhoMP3
objMP3.Position = objMP3.Size - 128
'Verificando se o arquivo possui TAG
If UCase(converteBinario(objMP3.Read(3))) = "TAG" Then
'TAMANHO
a_Tamanho = Round((objMP3.Size/1024)/1024,2) & " MB"
'ARQUIVO
a_Arquivo = objFSO.GetFileName(CaminhoMP3)
'TITULO
a_Titulo = converteBinario(objMP3.Read(30))
'ARTISTA
a_Artista = converteBinario(objMP3.Read(30))
'ALBUM
a_Album = converteBinario(objMP3.Read(30))
'ANO
a_Ano = converteBinario(objMP3.Read(4))
'COMENTARIO
tmpComentario = objMP3.Read(30)
'TAG
If AscB(MidB(tmpComentario, 29, 1)) = 0 And AscB(MidB(tmpComentario, 30, 1)) > 0 And AscB(MidB(tmpComentario, 30, 1)) < 256 Then
a_Tag = "ID3v1.1"
'COMENTARIO (v1.1)
a_Comentario = converteBinario(LeftB(a_Comentario, 28))
'TRILHA
a_Trilha = AscB(MidB(tmpComentario, 30, 1))
Else
a_Tag = "ID3v1"
a_Comentario = tmpComentario
End If
'GENERO
GeneroID = AscB(objMP3.Read(1))
If GeneroID <= 114 AND GeneroID >= 0 Then
a_Genero = arrGeneros(GeneroID)
End If
Retorno = True
End If
objMP3.Close
'Retornando a função
readID3Tags = Retorno
End Function
'-----------------------------------------------------
'Funcao: converteBinario(ByVal Bin)
'Sinopse: Converte o Valor Binário passado.
'Parametro:
' Bin: Valor em Binário
'Retorno: String
'-----------------------------------------------------
Private Function converteBinario(ByVal Bin)
Dim Aux
For Aux = 1 To LenB(Bin)
If AscB(MidB(Bin, Aux, 1)) <> 0 Then converteBinario = converteBinario & Chr(AscB(MidB(Bin, Aux, 1)))
Next
End Function
End Class
'EXEMPLO DE CHAMADA
Dim objID3
Set objID3 = New MP3ID3
If objID3.readID3Tags("D:GabrielMinhas músicasKiss From a Rose.mp3") = True Then
Response.Write "<h1>" & objID3.Arquivo & "</h1>"
Response.Write "Artista: " & objID3.Artista & "<br>"
Response.Write "Titulo: " & objID3.Titulo & "<br>"
Response.Write "Tamanho: " & objID3.Tamanho & "<br>"
Response.Write "TAG: " & objID3.TAG & "<br>"
Response.Write "Genero: " & objID3.Genero & "<br>"
Response.Write "Album: " & objID3.Album & "<br>"
Response.Write "Ano: " & objID3.Ano & "<br>"
Response.Write "Trilha: " & objID3.Trilha & "<br>"
Else
Response.Write "Não foi possível ler o arquivo MP3."
End If
If objID3.readID3Tags("D:GabrielMinhas músicasSeal - Kiss from a rose (unplugged & acoustic session).mp3") = True Then
Response.Write "<h1>" & objID3.Arquivo & "</h1>"
Response.Write "Artista: " & objID3.Artista & "<br>"
Response.Write "Titulo: " & objID3.Titulo & "<br>"
Response.Write "Tamanho: " & objID3.Tamanho & "<br>"
Response.Write "TAG: " & objID3.TAG & "<br>"
Response.Write "Genero: " & objID3.Genero & "<br>"
Response.Write "Album: " & objID3.Album & "<br>"
Response.Write "Ano: " & objID3.Ano & "<br>"
Response.Write "Trilha: " & objID3.Trilha & "<br>"
Else
Response.Write "Não foi possível ler o arquivo MP3."
End If
Set objID3 = Nothing
%>