MusicGet 类
代码如下:
<%
response.expires = 0
response.expiresabsolute = now() - 1
response.addheader "pragma", "no-cache"
response.addheader "cache-control", "private"
response.cachecontrol = "no-cache"
response.buffer = true
response.clear
server.scripttimeout=999999999
'***************************************************************
'* 定义 musicget 类
'***************************************************************
class gethttp
private oxml,fso,ados
private sub class_initialize
set oxml = server.createobject("microsoft.xmlhttp")
set fso = server.createobject("scripting.filesystemobject")
set ados = server.createobject("adodb.stream")
end sub
private sub class_terminate
set oxml = nothing
set fso = nothing
set ados = nothing
end sub
public property get version
version="动感采集系统v3.0"
end property
'*****************************************************************
' function(私有)
' 作用 :利用流进行中文编码
' 参数 :vin(要进行编码的字符患)
'*****************************************************************
private function bytestobstr(body)
dim bdat
bdat=body
ados.type = 1
ados.mode =3
ados.open
ados.write bdat
ados.position = 0
ados.type = 2
ados.charset = "gb2312"
bytestobstr = ados.readtext
ados.close
end function
'*****************************************************************
' function(私有)
' 作用 :利用流保存文件
' 参数 :from(远程文件地址),tofile(保存文件位置)
'*****************************************************************
private function savefiles(byref from,byref tofile)
dim datas
datas=getdata(from,0)
response.write "保存成功:"&formatnumber(len(datas)/1024*2,2)&"kb"
response.flush
if formatnumber(len(datas)/1024*2,2)>1 then
ados.type = 1
ados.mode =3
ados.open
ados.write datas
ados.savetofile server.mappath(tofile),2
ados.close()
else
response.write "保存失败:文件大小"&formatnumber(len(imgs)/1024*2,2)&"kb,小于1k"
response.flush
end if
end function
'*****************************************************************
' function(私有)
' 作用 :利用fso检测文件是否存在,存在返回true,不存在返回false
' 参数 :filespes(文件位置)
'*****************************************************************
private function isexists(byref filespec)
if (fso.fileexists(server.mappath(filespec))) then
isexists = true
else
isexists = false
end if
end function
'*****************************************************************
' function(私有)
' 作用 :利用fso检测文件夹是否存在,存在返回true,不存在返回false
' 参数 :folder(文件夹位置)
'*****************************************************************
private function isfolder(byref folder)
if fso.folderexists(server.mappath(folder)) then
isfolder = true
else
isfolder = false
end if
end function
'*****************************************************************
' function(私有)
' 作用 :利用fso创建文件夹
' 参数 :fldr(文件夹位置)
'*****************************************************************
private function createfolder(byref fldr)
dim f
set f = fso.createfolder(server.mappath(fldr))
createfolder = f.path
set f=nothing
end function
'*****************************************************************
' function(公有)
' 作用 :保存文件,并自动创建多级文件夹
' 参数 :fromurl(远程文件地址),tofiles (保存位置)
'*****************************************************************
public function savedata(byref fromurl,byref tofiles)
tofiles=trim(replace(tofiles,"//","/"))
flname=tofiles
fldr=""
if isexists(flname)=false then
getnewsfold=split(flname,"/")
for i=0 to ubound(getnewsfold)-1
if fldr="" then
fldr=getnewsfold(i)
else
fldr=fldr&"\"&getnewsfold(i)
end if
if isfolder(fldr)=false then
createfolder fldr
end if
next
savefiles fromurl,flname
end if
end function
'*****************************************************************
' function(公有)
' 作用 :取得远程数据
' 参数 :url(远程文件地址),getmode (模式:0为二进制,1为中文编码)
'*****************************************************************
public function getdata(byref url,byref getmode)
'on error resume next
sourcecode = oxml.open ("get",url,false)
oxml.send()
if oxml.readystate<>4 then exit function
if getmode=0 then
getdata = oxml.responsebody
else
getdata = bytestobstr(oxml.responsebody)
end if
if err.number<>0 then err.clear
end function
'*****************************************************************
' function(公有)
' 作用 :格式化远程图片地址为本地位置
' 参数 :imgurl(远程图片地址),imgfolder (本地图片目录),fristname(加入的前缀名称)
'*****************************************************************
public function formatimgpath(byref imgurl,byref imgfolder,byref fristname,byref noimg)
strpath=""
imgurl=imgurl
if instr(imgurl,"nophoto") or lenb(getdata(imgurl,0))<=0 then
strpath=noimg
response.write ""&strpath&"" &vbcrlf
else
if instr(imgurl,".asp") then
strpath=fristname&"_"&mid(imgurl, instrrev(imgurl, "=")+1)&".jpg"
else
strpath=fristname&"_"&mid(imgurl, instrrev(imgurl, "/")+1)
end if
strpath = imgfolder&"/"&strpath
strpath = replace(strpath,"//","/")
if left(strpath,1)="/" then strpath=right(strpath,len(strpath)-1)
strpath = trim(strpath)
response.write ""&strpath&"" &vbcrlf
savedata imgurl,strpath
end if
formatimgpath = strpath
end function
'*****************************************************************
' function(公有)
' 作用 :格式化远程音乐文件地址为本地位置
' 参数 :musicurl(远程文件地址),oserverurl (原服务连接地址),musicfolder(本地音乐文件目录)
'*****************************************************************
public function formatmusicpath(byref musicurl,byref oserverurl,byref musicfolder)
strpath=""
strpath = replace(musicurl,oserverurl,"")
strpath = musicfolder&"/"&strpath
strpath = replace(strpath,"//","/")
if left(strpath,1)="/" then strpath=right(strpath,len(strpath)-1)
formatmusicpath=trim(strpath)
end function
'*****************************************************************
' function(公有)
' 作用 :格式化html
'*****************************************************************
public function formathtml(str,itype)
if itype=0 then
str=replace(str,chr(39),"'")
str=replace(str,chr(34),""")
str=replace(str,"<","<")
str=replace(str,">",">")
else
str=replace(str,"chr(39)","")
str=replace(str,"chr(34)","")
end if
formathtml=str
end function
'*****************************************************************
' function(公有)
' 作用 :截取字符
' 参数 :str要操作的对像,start开始字符,last结束字符,n模式
'*****************************************************************
public function getcontent(byref str,byref start,byref last,byref n)
if instr(lcase(str),lcase(start))>0 then
select case n
case 0 '左右都截取(都取前面)(去处关键字)
getcontent=right(str,len(str)-instr(lcase(str),lcase(start))-len(start)+1)
getcontent=left(getcontent,instr(lcase(getcontent),lcase(last))-1)
case 1 '左右都截取(都取前面)(保留关键字)
getcontent=right(str,len(str)-instr(lcase(str),lcase(start))+1)
getcontent=left(getcontent,instr(lcase(getcontent),lcase(last))+len(last)-1)
case 2 '只往右截取(取前面的)(去除关键字)
getcontent=right(str,len(str)-instr(lcase(str),lcase(start))-len(start)+1)
case 3 '只往右截取(取前面的)(包含关键字)
getcontent=right(str,len(str)-instr(lcase(str),lcase(start))+1)
case 4 '只往左截取(取后面的)(包含关键字)
getcontent=left(str,instrrev(lcase(str),lcase(start))+len(start)-1)
case 5 '只往左截取(取后面的)(去除关键字)
getcontent=left(str,instrrev(lcase(str),lcase(start))-1)
case 6 '只往左截取(取前面的)(包含关键字)
getcontent=left(str,instr(lcase(str),lcase(start))+len(start)-1)
case 7 '只往右截取(取后面的)(包含关键字)
getcontent=right(str,len(str)-instrrev(lcase(str),lcase(start))+1)
case 8 '只往左截取(取前面的)(去除关键字)
getcontent=left(str,instr(lcase(str),lcase(start))-1)
case 9 '只往右截取(取后面的)(包含关键字)
getcontent=right(str,len(str)-instrrev(lcase(str),lcase(start)))
end select
else
getcontent=""
end if
end function
'*****************************************************************
' function(公有)
' 作用 :取得字符的拼音
'*****************************************************************
public function getpychar(byref char)
tmp=65536+asc(char)
if(tmp>=45217 and tmp<=45252) or (tmp=65601) or (tmp=65633) or (tmp=37083) then
getpychar= "a"
elseif(tmp>=45253 and tmp<=45760) or (tmp=65602) or (tmp=65634) or (tmp=39658) then
getpychar= "b"
elseif(tmp>=45761 and tmp<=46317) or (tmp=65603) or (tmp=65635) or (tmp=33405) then
getpychar= "c"
elseif(tmp>=46318 and tmp<=46930) or (tmp>=61884 and tmp<=61884) or (tmp=65604) or (tmp>=36820 and tmp<=38524) or (tmp=65636) then
getpychar= "d"
elseif(tmp>=46931 and tmp<=47009) or (tmp=65605) or (tmp=65637) or (tmp=61513) then
getpychar= "e"
elseif(tmp>=47010 and tmp<=47296) or (tmp=65606) or (tmp=65638) or (tmp=61320) or (tmp=63568) or (tmp=36281) then
getpychar= "f"
elseif(tmp>=47297 and tmp<=47613) or (tmp=65607) or (tmp=65639) or (tmp=35949) or (tmp=36089) or (tmp=36694) or (tmp=34808) then
getpychar= "g"
elseif(tmp>=47614 and tmp<=48118) or (tmp>=59112 and tmp<=59112) or (tmp=65608) or (tmp=65640) then
getpychar= "h"
elseif(tmp=65641) or (tmp=65609) or (tmp=65641) then
getpychar="i"
elseif(tmp>=48119 and tmp<=49061 and tmp<>48739) or (tmp>=62430 and tmp<=62430) or (tmp=65610) or (tmp=65642) or (tmp=39048) then
getpychar= "j"
elseif(tmp>=49062 and tmp<=49323) or (tmp=65611) or (tmp=65643) then
getpychar= "k"
elseif(tmp>=49324 and tmp<=49895) or (tmp>=58838 and tmp<=58838) or (tmp=65612) or (tmp=65644) or (tmp=62418) or (tmp=48739) then
getpychar= "l"
elseif(tmp>=49896 and tmp<=50370) or (tmp=65613) or (tmp=65645) then
getpychar= "m"
elseif(tmp>=50371 and tmp<=50613) or (tmp=65614) or (tmp=65646) then
getpychar= "n"
elseif(tmp>=50614 and tmp<=50621) or (tmp=65615) or (tmp=65647) then
getpychar= "o"
elseif(tmp>=50622 and tmp<=50905) or (tmp=65616) or (tmp=65648) then
getpychar= "p"
elseif(tmp>=50906 and tmp<=51386) or (tmp>=62659 and tmp<=63172) or (tmp=65617) or (tmp=65649) then
getpychar= "q"
elseif(tmp>=51387 and tmp<=51445) or (tmp=65618) or (tmp=65650) then
getpychar= "r"
elseif(tmp>=51446 and tmp<=52217) or (tmp=65619) or (tmp=65651) or (tmp=34009) then
getpychar= "s"
elseif(tmp>=52218 and tmp<=52697) or (tmp=65620) or (tmp=65652) then
getpychar= "t"
elseif(tmp=65621) or (tmp=65653) then
getpychar="u"
elseif(tmp=65622) or (tmp=65654) then
getpychar="v"
elseif(tmp>=52698 and tmp<=52979) or (tmp=65623) or (tmp=65655) then
getpychar= "w"
elseif(tmp>=52980 and tmp<=53688) or (tmp=65624) or (tmp=65656) then
getpychar= "x"
elseif(tmp>=53689 and tmp<=54480) or (tmp=65625) or (tmp=65657) then
getpychar= "y"
elseif(tmp>=54481 and tmp<=62383 and tmp<>59112 and tmp<>58838) or (tmp=65626) or (tmp=65658) or (tmp=38395) or (tmp=39783) then
getpychar= "z"
elseif(tmp=65584) then
getpychar="0-9"
elseif(tmp=65585) then
getpychar="0-9"
elseif(tmp=65586) then
getpychar="0-9"
elseif(tmp=65587) then
getpychar="0-9"
elseif(tmp=65588) then
getpychar="0-9"
elseif(tmp=65589) then
getpychar="0-9"
elseif(tmp=65590) then
getpychar="0-9"
elseif(tmp=65591) then
getpychar="0-9"
elseif(tmp=65592) then
getpychar="0-9"
elseif(tmp=65593) then
getpychar="0-9"
else
getpychar="0-9"
end if
end function
'*****************************************************************
' function(公有)
' 作用 :循环取得字符串的拼音
'*****************************************************************
public function getpy(byref str)
for i=1 to len(str)
getpy=getpy&getpychar(mid(str,i,1))
next
end function
'*****************************************************************
' function(公有)
' 作用 :取得歌曲歌词
'*****************************************************************
public function lrcmusicgc(musicname,singer)
musicgc=getdata("http://mp3.baidu.com/m?tn=baidump3lyric&ct=150994944&word="&musicname&"%20"&singer,1)
if instr(musicgc,"建议您检查输入文字有无错误") then
musicgc= "暂无"
else
musicgc=formathtml(musicgc,0)
musicgc=getcontent(musicgc,"专辑:<a href="http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&word=","<p align=right>",0)
musicgc=replace(musicgc,"<","<")
musicgc=replace(musicgc,">",">")
musicgc=replace(musicgc," "," ")
musicgc=replace(musicgc,"","")
musicgc=replace(musicgc,"","")
musicgc=getcontent(musicgc,"
","
",0)'response.write musicgc
end if
if musicgc="" then
lrcmusicgc="暂无"
else
lrcmusicgc=musicgc
end if
end function
end class
%>