Neste código foi desenvolvido uma Classe chamada MP3ID3 que é responsável por fazer uma leitura das Tags ID3v1 e ID3v1.1 de um arquivo MP3 e armazenar os dados encontrados nas propriedades do objeto.
Desta forma basta passar o caminho completo do arquivo MP3 para o método readID3Tags que ele fará todo o trabalho. Depois de realizada a leitura basta utilizar as propriedades:
– Arquivo
– Titulo
– Artista
– Album
– Ano
– Comentario
– Trilha
– Genero
– TAG
<% '========================================================================================== ' 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 "" & objID3.Arquivo & "
" Response.Write "Artista: " & objID3.Artista & "
" Response.Write "Titulo: " & objID3.Titulo & "
" Response.Write "Tamanho: " & objID3.Tamanho & "
" Response.Write "TAG: " & objID3.TAG & "
" Response.Write "Genero: " & objID3.Genero & "
" Response.Write "Album: " & objID3.Album & "
" Response.Write "Ano: " & objID3.Ano & "
" Response.Write "Trilha: " & objID3.Trilha & "
" 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 "" & objID3.Arquivo & "
" Response.Write "Artista: " & objID3.Artista & "
" Response.Write "Titulo: " & objID3.Titulo & "
" Response.Write "Tamanho: " & objID3.Tamanho & "
" Response.Write "TAG: " & objID3.TAG & "
" Response.Write "Genero: " & objID3.Genero & "
" Response.Write "Album: " & objID3.Album & "
" Response.Write "Ano: " & objID3.Ano & "
" Response.Write "Trilha: " & objID3.Trilha & "
" Else Response.Write "Não foi possível ler o arquivo MP3." End If Set objID3 = Nothing %>