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
%>
相关文章