用ASP实现对MP3曲目信息的操作
先简单说一下MP3的ID3标记,因为主要是操作这个玩意
MP3最开始的时候没有我们今天看到的那样,有歌手、年代,专集等等信息
只有一些简单的参数如yes/no来表示是不是privated或者copyrighted等信息,这样对MP3的相关工作带来了很多不便,1996年的时候有个老外提出来在每个MP3后面追加一段数据,用以存放上述的那些信息,后来就发展成为id3v1据我所知的现在已经到1.1了,具体的还是自己去查一下吧
还是老习惯,用metadata来引入DLL,我以前有文章贴过的,不知道的请自己去查
看代码
<!--METADATA TYPE="typelib"
UUID="00000205-0000-0010-8000-00AA006D2EA4"
NAME="ADODB Type Library"
-->
<%
Function ConvertBin(Binary)
'This function converts a binary byte into an ASCII byte.
for i=1to LenB(Binary)
strChar=chr(AscB(MidB(Binary,i,1)))
ConvertBin=ConvertBin&strChar
Next
End Function
dim objStream
dim strTag,strSongName,strArtist,strAlbum,strYear,_
strComment,strGenre,strFile
'Specify the folder to iterate through,displaying all the MP3s
Const folder="C:\mp3s\"
'Grab the folder information
Dim objFSO,objFolder,objFile
Set objFSO=Server.CreateObject("Scripting.FileSYstemObject")
Set objFolder=objFSO.GetFolder(folder)
'Create the Stream object
set objStream=Server.CreateObject("ADODB.Stream")
objStream.Type=adTypeBinary
'Loop through the files in the folder
For Each objFile in objFolder.Files
'Open the stream
objStream.Open
objStream.LoadFromFile objFile.Path
'Read the last128bytes
objStream.Position=objStream.size-128
'Read the ID3v1tag info
strTag=ConvertBin(objStream.Read(3))
if ucase(strTag)="TAG" then
strSongName=ConvertBin(objStream.Read(30))
strArtist=ConvertBin(objStream.Read(30))
strAlbum=ConvertBin(objStream.Read(30))
strYear=ConvertBin(objStream.Read(4))
strComment=ConvertBin(objStream.Read(30))
end if
'Display the results
response.write"<table><tr><td colspan=2><h3>"&_
"ID3Tag info for:</td></tr><tr>"&_
"<td colspan=2>"&objFile.Name&"</td></tr>"
response.write"<tr><td><b>Artist:</b></td>"&_
"<td>"&strArtist&"</td></tr>"
response.write"<tr><td><b>Track:</b></td>"&_
"<td>"&strSongName&"</td></tr>"
response.write"<tr><td><b>Album:</b></td>"&_
<td>"&strAlbum&"</td></tr>"
response.write"<tr><td><b>Year:</b></td>"&_
"<td>"&strYear&"</td></tr>"
response.write"<tr><td><b>Comment:</b>"&_
"</td><td>"&strComment&"</td></tr>"
response.write"</table>"
objStream.Close
Response.Write"<p><hr><p>"
Next
Set objStream=Nothing'Clean up...
%>
自己试试吧