欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MusicGet 类

程序员文章站 2023-08-24 12:34:21
复制代码 代码如下:<% response.expires = 0   response.expiresabsolute&nb...
复制代码 代码如下:

<%
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 "保存成功:<font color=red>"&formatnumber(len(datas)/1024*2,2)&"</font>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 "保存失败:<font color=red>文件大小"&formatnumber(len(imgs)/1024*2,2)&"kb,小于1k</font>"
            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 "<a href="&strpath&">"&strpath&"</a>" &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 "<a href="&strpath&">"&strpath&"</a>" &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,"<font style=color:#e10900>","")
                musicgc=replace(musicgc,"</font>","")
                musicgc=getcontent(musicgc,"<p>","</p>",0)
                'response.write musicgc
            end if
            if musicgc="" then 
                lrcmusicgc="暂无"
            else
                lrcmusicgc=musicgc
            end if
    end function
end class
%>