服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - ASP教程 - asp实现的7xi音乐网的采集源代码

asp实现的7xi音乐网的采集源代码

2019-10-16 10:01asp代码网 ASP教程

asp实现的7xi音乐网的采集源代码

共5个文件: 
2个是配置文件: 
配置文件: 
cfg.txt '---保存检测ID信息的,第一次采集时设为1,从小到大检测 
cfg.asp '---ASP的配置信息,内容如下: 

复制代码代码如下:


<%  
'''  
'''╔=======================================╗  
'''┆                                       ┆  
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆  
'''┆ @模块: 配置文件                       ┆  
'''┆ @创建: 2006/07/24                     ┆  
'''┆ @作者: D.S.Fang                       ┆  
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆  
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆  
'''┆        放心使用!!!尊重作者劳动成果,请 ┆  
'''┆        保留此信息!                    ┆  
'''┆                                       ┆  
'''╚=======================================╝  
'''  
'  
dim picc_FolderPath,mp3_FolderPath  
dim v_7xijs_url,v_7xipicc_url,v_7xiplay_url,v_7xialbum_url,v_7ximp3_url,cfg_name,cfg_line  
dim httpobj,str,str0,str1,str2,str3,str4,str5,str6,str7,str8,str9  
dim is_getrm  

'---音乐文件是否保存到本地,true-保存;false-不保存  
is_getrm = false  

'---保存路径  
picc_FolderPath = "H:\mp3data\images\"  
mp3_FolderPath = "H:\mp3data\rm\"   

'---7xi相关页面  
v_7xijs_url = "http://7xi.net/player/Js.js"  
v_7xipicc_url = "http://ww.7xi.net/picc/"  
v_7xiplay_url = "http://7xi.net/playsong/"  
v_7xialbum_url = "http://ww.7xi.net/Vo2/"  
v_7ximp3_url = "" '---实时读取  

'---检测ID  
cfg_name = "cfg.txt"   
cfg_line = 1   

'---读取播放js文件,获得rm文件路径  
set httpobj = server.createobject("paopao.http")  
str = httpobj.get(v_7xijs_url)  
str0 = split(str,"theurl2="&chr(34))  
str1 = split(str0(1),chr(34))  
v_7ximp3_url = str1(0)  
set httpobj = nothing  
str = ""  

'---数据库连接  
set Conn = Server.CreateObject("ADODB.Connection")   
Conn.Open "driver={SQL server};server=localhost;uid=mp3;pwd=mp3;database=mp3db"   

'---拼SQL语句execute时需要过滤一下  
Function IndbStr(str)  
        if isNull(str) or str = "" then  
                IndbStr = str  
        else  
                IndbStr = replace(replace(trim(str),"'","''"),"%","")  
        end if  
End Function  

'---关闭数据库连接  
Function CloseConn()  
        conn.close  
        set conn=nothing  
End Function  

'---取得远程文件并保存到本地  
Function GetRemoteFiles(RemotePath, LocalPath, FileName)  
  Dim strBody  
  Dim FilePath  
  On Error Resume Next  
  '---取得流  
  strBody = GetBody(RemotePath)  
  '---取得保存的文件名  
  if Right(LocalPath, 1) <> "\" then LocalPath = LocalPath & "\"  
  if not CheckDir(bkfolder) then MakeNewsDir bkfolder  
  FilePath = LocalPath & GetFileName(RemotePath, FileName)  
  '---保存文件  
  if SaveToFile(strBody, FilePath) = true and err.Number = 0 then  
   GetRemoteFiles = true  
  else  
    GetRemoteFiles = false  
  end if  
End Function  

'---远程获取内容  
Function GetBody(url)   
  Dim Retrieval  
  '---建立XMLHTTP对象  
  Set Retrieval = CreateObject("Microsoft.XMLHTTP")   
  With Retrieval   
  .Open "Get", url, False, "", ""   
  .Send   
  GetBody = .ResponseBody  
  End With   
  Set Retrieval = Nothing   
End Function  

'---重组文件名  
Function GetFileName(RemotePath, FileName)  
  Dim arrTmp  
  Dim strFileExt  
  arrTmp = Split(RemotePath, ".")  
  strFileExt = arrTmp(UBound(arrTmp))  
  GetFileName = FileName & "." & strFileExt  
End Function  

'---将流内容保存为文件  
Function SaveToFile(Stream, FilePath)  
  Dim objStream  
  On Error Resume Next  
  '---建立ADODB.Stream对象,必须要ADO 2.5以上版本  
  Set objStream = Server.CreateObject("ADODB.Stream")  
  objStream.Type = 1 '以二进制模式打开  
  objStream.Open  
  objstream.write Stream  
  objstream.SaveToFile FilePath, 2  
  objstream.Close()  
  '---关闭对象,释放资源  
  Set objstream = Nothing  
  if err.Number <> 0 then  
    SaveToFile = false  
  else  
    SaveToFile = true  
  end if  
End Function  

'---读取文本文件  
Function FSOlinedit(filename,lineNum)  
  if linenum < 1 then exit function  
  dim fso,f,temparray,tempcnt  
  set fso = server.CreateObject("scripting.filesystemobject")  
  if not fso.fileExists(server.mappath(filename)) then exit function  
  set f = fso.opentextfile(server.mappath(filename),1)  
  if not f.AtEndofStream then  
    tempcnt = f.readall  
    f.close  
    set f = nothing  
    temparray = split(tempcnt,chr(13)&chr(10))  
    if lineNum>ubound(temparray)+1 then  
      exit function  
    else  
      FSOlinedit = temparray(lineNum-1)  
    end if  
  end if  
End function  

'---检查绝对路径是否存在  
Function CheckFolder(FolderPath)  
  dim fso1  
  Set fso1 = CreateObject("Scripting.FileSystemObject")  
  If fso1.FolderExists(FolderPath) then  
     '存在  
     CheckFolder = True  
  Else  
     '不存在  
     CheckFolder = False  
  End if  
  Set fso1 = nothing  
End Function  

'---根据指定名称生成目录  
Function MakeNewsDir(foldername)  
  dim fso1,f  
  Set fso1 = CreateObject("Scripting.FileSystemObject")  
  Set f = fso1.CreateFolder(foldername)  
  MakeNewsDir = True  
  Set fso1 = nothing  
End Function  

''''''''编码(日文字符)''''''''  
Function Jencode(byVal iStr)  
        if isnull(iStr) or isEmpty(iStr) then  
                Jencode=""  
                Exit function  
        end if  
        dim F,i,E  
        E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;")  
        F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_  
        chr(-23118),chr(-23114),chr(-23112),chr(-23110),_  
        chr(-23099),chr(-23097),chr(-23095),chr(-23075),_  
        chr(-23079),chr(-23081),chr(-23085),chr(-23087),_  
        chr(-23052),chr(-23076),chr(-23078),chr(-23082),_  
        chr(-23084),chr(-23088),chr(-23102),chr(-23104),_  
        chr(-23106),chr(-23108))  
        Jencode=iStr  
        for i=0 to 25  
                Jencode=replace(Jencode,F(i),E(i))  
        next  
End Function  

''''''''解码(日文字符)''''''''  
Function Juncode(byVal iStr)  
        if isnull(iStr) or isEmpty(iStr) then  
                Juncode=""  
                Exit function  
        end if  
        dim F,i,E  
        E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;")  
        F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_  
        chr(-23118),chr(-23114),chr(-23112),chr(-23110),_  
        chr(-23099),chr(-23097),chr(-23095),chr(-23075),_  
        chr(-23079),chr(-23081),chr(-23085),chr(-23087),_  
        chr(-23052),chr(-23076),chr(-23078),chr(-23082),_  
        chr(-23084),chr(-23088),chr(-23102),chr(-23104),_  
        chr(-23106),chr(-23108))  
        Juncode=iStr  
        for i=0 to 25  
                Juncode=replace(Juncode,E(i),F(i))'□  
        next  
End Function  
%>  


1个是手动添加歌手:  
addsinger.asp '---手动添加歌手,内容如下:  

 程序代码  
<%  
'''  
'''╔=======================================╗  
'''┆                                       ┆  
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆  
'''┆ @模块: 手动添加歌手                   ┆  
'''┆ @创建: 2006/07/24                     ┆  
'''┆ @作者: D.S.Fang                       ┆  
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆  
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆  
'''┆        放心使用!!!尊重作者劳动成果,请 ┆  
'''┆        保留此信息!                    ┆  
'''┆                                       ┆  
'''╚=======================================╝  
'''  
'%>  
<!--#include file="cfg.asp" -->  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<meta http-equiv="Content-Language" content="gb2312" />  
<title>添加歌手分类_7xi音乐采集更新系统</title>  
</head>  
<body>  
<br>7xi音乐采集更新系统<br><br>  
<%  
dim sql  
dim singer_name,singer_first_name,singer_sort  

singer_name = IndbStr(request("singer_name"))  
singer_first_name = Ucase(IndbStr(request("singer_first_name")))  
singer_sort = request("singer_sort")  

response.write "<br>歌手信息<br><br>姓名:"&singer_name&"<br>字母:"&singer_first_name&"<br>性质:"&singer_sort  

sql = "insert into d_singer (singer_name,singer_first_name,singer_sort,is_down) values ('"&singer_name&"','"&singer_first_name&"','"&singer_sort&"',0)"  
response.write "<br><br>"&sql  
conn.execute(sql)  
CloseConn()  

'---歌手添加完成后转入信息采集重新检测  
response.write "<br><br>歌手信息检查添加完成,正在准备检查获取更新...<br>"  
response.write "<meta http-equiv=refresh content=""1 ; url=get.asp"">"  
%>  
</body>  
</html>  


2个是采集程序:  
get.asp '---采集歌手专辑歌曲信息,内容如下  

 程序代码  
<%  
'''  
'''╔=======================================╗  
'''┆                                       ┆  
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆  
'''┆ @模块: 歌手、专辑、歌曲信息采集       ┆  
'''┆ @创建: 2006/07/24                     ┆  
'''┆ @作者: D.S.Fang                       ┆  
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆  
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆  
'''┆        放心使用!!!尊重作者劳动成果,请 ┆  
'''┆        保留此信息!                    ┆  
'''┆                                       ┆  
'''╚=======================================╝  
'''  
'%>  
<!--#include file="cfg.asp" -->  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<meta http-equiv="Content-Language" content="gb2312" />  
<title>歌手专辑歌曲信息采集_7xi音乐采集更新系统</title>  
</head>  
<body>  
<br>7xi音乐采集更新系统<br><br>  
<%  
dim t7xiid,url,FolderPath,fso,fout  
dim songid(100),songname(100)  
dim strsinger,strlang,stralbum,strtime,strcorp,strcontent,strpicc,singerid,albumid  
dim rssort,rssinger,rsalbum,rssong,i,m,sql,okimg  

t7xiid = FSOlinedit(cfg_name,cfg_line)  

url = v_7xialbum_url&"v_"&t7xiid&".htm"  

set httpobj=server.createobject("paopao.http")  

Err.Clear  
'on error resume next  

str = ""  
str = httpobj.get(url)  

if str = "" then  
        CloseConn()  
  if t7xiid < 3198 then '---没有检测到时是否递增ID,继续检测  
    str = t7xiid + 1  
    FolderPath = Server.MapPath(".\")  
    Set fso = Server.CreateObject("Scripting.FileSystemObject")  
    Set fout = fso.CreateTextFile(FolderPath & "\cfg.txt")   
    fout.WriteLine str  
    fout.close   
    response.write "<br>当前ID号不存在,正在检查下一ID号 ...<br>"  
    response.write "<meta http-equiv=refresh content=""0 ; url=get.asp"">"  
  else  '---不需要递增ID检测时,转到歌曲信息采集  
    response.write "<br>歌手专辑信息检查完毕,正在准备检查获取歌曲信息 ...<br>"  
    response.write "<meta http-equiv=refresh content=""0 ; url=getrm.asp"">"  
    response.end  
  end if  
else  
  str0 = split(str,"歌 手 : ")  
  str1 = split(str0(1),"</td>")  
  strsinger = IndbStr(str1(0))  
  response.write "<br>歌手:"&strsinger  

  str0 = split(str,"语 种 : ")  
  str1 = split(str0(1),"</td>")  
  strlang = str1(0)  
  response.write "<br>语种:"&strlang  

  str0 = split(str,"专 辑 : ")  
  str1 = split(str0(1),"</a>")  
  str2 = split(str1(0),""">")  
  stralbum = IndbStr(str2(1))  
  response.write "<br>专辑:"&stralbum  

  str0 = split(str,"时 间 : ")  
  str1 = split(str0(1),"</td>")  
  strtime = str1(0)  
  response.write "<br>时间:"&strtime  

  str0 = split(str,"公 司 : ")  
  str1 = split(str0(1),"</td>")  
  strcorp = str1(0)  
  response.write "<br>公司:"&strcorp  

  str0 = split(str,"<tr valign=""top""><td colspan=""2"">")  
  str1 = split(str0(1),"</td>")  
  strcontent = replace(replace(IndbStr(str1(0)),"<br>",chr(13))," "," ")  
  response.write "<br>简介:"&strcontent  

  str0 = split(str,"<img src=""../picc/")  
  str1 = split(str0(1),"""")  
  strpicc = str1(0)  
  response.write "<br>图片:"&strpicc  
  response.write "<br><img src="&v_7xipicc_url&strpicc&" border=0>"  

  set rssinger = conn.execute("select * from d_singer where singer_name='"&strsinger&"'")  
  '---歌手信息不存在时需要手动添加歌手  
  if rssinger.eof then  
    response.write "<br>select * from d_singer where singer_name='"&strsinger&"'"  
    response.write "<br><br>歌手不存在,需要手动操作添加。<br><br>请按以下要求添加歌手:<br><br>"  
%>  
<form action="addsinger.asp">  
<input type="text" size="20" name="singer_name" value="<%=strsinger%>">  
<input type="text" size="6" name="singer_first_name" value="姓" maxlength="3">  
<select name="singer_sort" size="1"><%'%>  
<%  
    set rssort = conn.execute("select * from s_sort ")  
    do while not rssort.eof and i < 10  
%>  
<option value="<%=rssort("id")%>"><%=rssort("sort_name")%></option><%'%>  
<%  
      rssort.movenext  
    loop  
    rssort.close  
    set rssort = nothing  
%></select>  
<input type="submit" value="添加">  
</form>  
<%   
    CloseConn()  
    response.end  
  else  '---歌手信息已存在,检查专辑信息是否需要入库  
    singerid = rssinger("id")  
    conn.execute("update d_singer set is_down=0 where id="&singerid)  
    response.write "<br><br>歌手信息正确,正在检查获取专辑信息 ...<br>"  
    set rsalbum = conn.execute("select * from d_album where album_singer="&singerid&" and album_name='"&stralbum&"'")  
    if rsalbum.eof then  
      str1 = split(strpicc,".")  
      str2 = str1(0)  
      sql="insert into d_album (album_singer,file_img,album_name,album_lang,album_corp,album_time,album_intro,add_time,is_down,album_7xi) values ('"&singerid&"','"&strpicc&"','"&stralbum&"','"&strlang&"','"&strcorp&"','"&strtime&"','"&strcontent&"','"&now&"',0,"&t7xiid&")"  
      conn.execute(sql)  
      '---采集保存专辑缩略图  
      okimg = GetRemoteFiles(v_7xipicc_url&strpicc,picc_FolderPath,str2)                  
      response.write "<br>专辑信息检查添加完成,正在检查获取歌曲信息 ..."&"<br>SQL语句:"&sql  
    else  
      response.write "<br><br>专辑信息正确,正在准备检查获取歌曲信息 ..."  
    end if      
    rsalbum.close  
    set rsalbum = nothing  
  end if  
  rssinger.close  
  set rssinger = nothing  

  set rsalbum = conn.execute("select * from d_album where album_singer="&singerid&" and album_name='"&stralbum&"'")  
  albumid = rsalbum("id")  
  rsalbum.close  
  set rsalbum = nothing  

  response.write "<br><br>专辑歌曲信息<br>"  

  '----歌曲ID  
  i = 1  
  str0 = split(str,"<input type="&chr(34)&"checkbox"&chr(34)&" name="&chr(34)&"checked"&chr(34)&" value="&chr(34))  
  response.write "<br>歌曲ID:"  
  do while i <= Ubound(str0)  
    str1 = split(str0(i),chr(34))  
    songid(i-1) = str1(0)  
    response.write songid(i-1)&" - "  
    i = i + 1  
  loop  
  response.write "共"&i&"首。"  

  '---歌曲名称  
  m = 1  
  str0 = split(str,"<a href=""../IVR.asp?id=")  
  response.write "<br><br>歌曲:"  
  do while m <= Ubound(str0)  
    str1 = split(str0(m),""" target=""_blank""><img src=""../images/mmsring1.gif"" alt=""免费点歌")  
    songname(m-1) = Jencode(replace(str1(0),"'","''"))  
    response.write Juncode(songname(m-1))&" - "  
    m = m + 1  
  loop  
  response.write "共"&i&"首。"  

  '---歌曲ID数目和歌曲名数目不一致时需要检查是否有误  
  if i <> m then  
    response.write "<br><br><font color=red><b>错误:</b>歌曲ID数目与歌曲名数目不一致,请检查目标页面:"& url &"</font>"  
    response.end  
  end if  

  '---检查歌曲是否需要入库  
  do while i > 1  
    set rssong = conn.execute("select * from d_mp3 where mp3_album="&albumid&" and mp3_singer="&singerid&" and mp3_name='"&songname(i-2)&"'")  
    if rssong.eof then  
      sql = "insert into d_mp3 (mp3_7xi,mp3_singer,mp3_album,mp3_name) values ('"&songid(i-2)&"','"&singerid&"','"&albumid&"','"&songname(i-2)&"')"  
      conn.execute(sql)  
      response.write "<br><font color=red>添加:"&songname(i-2)&"</font>"  
      response.write sql  
    else  
      response.write "<br>跳过:"&songname(i-2)  
    end if  
    rssong.close  
    set rssong = nothing  
    i = i-1  
  loop  

  CloseConn()  

  '---记录下一检测ID号  
  str = t7xiid + 1  
  FolderPath = Server.MapPath(".\")  
  Set fso = Server.CreateObject("Scripting.FileSystemObject")  
  Set fout = fso.CreateTextFile(FolderPath & "\cfg.txt")   
  fout.WriteLine str  
  fout.close  

  '---继续检测下一ID  
  response.write "<br>正在检测下一ID信息 ..."  
  response.write "<meta http-equiv=refresh content=""0 ; url=get.asp"">"  
end if  
%>  
</body>  
</html>  


getrm.asp '---采集RM文件更新歌曲信息,内容如下:  

 程序代码  
<%  
'''  
'''╔=======================================╗  
'''┆                                       ┆  
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆  
'''┆ @模块: 歌曲文件、歌词等信息采集       ┆  
'''┆ @创建: 2006/07/24                     ┆  
'''┆ @作者: D.S.Fang                       ┆  
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆  
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆  
'''┆        放心使用!!!尊重作者劳动成果,请 ┆  
'''┆        保留此信息!                    ┆  
'''┆                                       ┆  
'''╚=======================================╝  
'''  
'%>  
<!--#include file="cfg.asp" -->  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<meta http-equiv="Content-Language" content="gb2312" />  
<title>歌曲文件歌词等信息采集_7xi音乐采集更新系统</title>  
</head>  
<body>  
<br>7xi音乐采集更新系统<br><br>  
<%  
dim getcount,rssong,id,t7xiid,url,filerm,tmpurl,i,tmpfolder,okrm,singer,song,tmp_url,lyric,rs  

'---每次处理歌曲数量  
getcount = 5  
set rssong = conn.execute("select top " & getcount & " a.*,b.singer_name from d_mp3 a,d_singer b where a.mp3_singer=b.id and a.file_rm is null order by a.id desc")  

if rssong.eof then  '---歌曲信息处理完成  
  rssong.close  
  set rssong = nothing  
  CloseConn()  
        response.write "<br>歌曲文件信息检查采集完成!"  
        response.write "<br><br>采集完了,可以做垃圾站了!"  
        response.end  
else  
  do while not rssong.eof  
    id = rssong("id")  
    t7xiid = rssong("mp3_7xi")  
    singer = replace(rssong("singer_name")," ","%20")  
    song = replace(rssong("mp3_name")," ","%20")  
    response.write "<br><br>歌曲名 - "& singer & "-" &song  
    '---目标页面  
    url = v_7xiplay_url&t7xiid&".htm"  
    set httpobj = server.createobject("paopao.http")  
    Err.Clear  
    on error resume next  
    response.write "<br>"&url  
    str = httpobj.get(url)  
    if Err = 0 then '---读取目标页面正常时的处理  
      '----歌曲文件名及文件夹  
      str0 = split(str,"<param name='src' value='"&chr(34)&"+s_list+"&chr(34))  
      str1 = split(str0(1),"'>")  
      filerm = str1(0)  
      response.write "<br>文件名 - "& filerm   
      tmpurl = v_7ximp3_url & filerm  
      response.write "<br>目标源 - "& tmpurl  
      '---需要保存音乐文件到本地时,采集保存音乐文件  
      if is_getrm then  
        str0 = split(filerm,"/")  
        i = 0  
        do while i < Ubound(str0)  
          tmpfolder = mp3_FolderPath & str0(i)  
          if not CheckFolder(tmpfolder) then MakeNewsDir tmpfolder  
          i = i + 1  
        loop  
        response.write "<br>保存为 - "& tmpfolder & "\" & str0(Ubound(str0))  
        okrm = GetRemoteFiles(tmpurl,tmpfolder,replace(str0(Ubound(str0)),".rm",""))  
      else  
        response.write "<br><font color=red>请注意 - </font>RM文件配置为不保存!!!!!!!!!!"  
      end if  

      '---歌词采集  
      tmp_url = "http://www.7xi.net/showword.asp?id=" & t7xiid  
      response.write "<br>"&tmp_url  
      set httpobj = server.createobject("paopao.http")  
      str0 = httpobj.get(tmp_url)  
      Err.Clear  
      on error resume next  
      str1 = split(str0,"<td width=""92%"">"&chr(13))  
      str2 = split(str1(1),"                </td>")  
      lyric = str2(0)  
      lyric = replace(lyric,"<br>",chr(13))  
      lyric = replace(lyric," "," ")  
      lyric = replace(replace(lyric,"<p>",""),"</p>","")  
      lyric = IndbStr(trim(lyric))  
      if Instr(lyric,"mp3.baidu.com") then lyric = "暂时还没歌词"          

      if len(lyric) < 20 or Err <> 0 then  
        lyric = "暂时还没歌词"  
        response.write "<br>7xi自带歌词不完整,将采集baidu歌词"  
      end if  

      if lyric = "暂时还没歌词" then  
        Err.Clear  
        tmp_url = "http://mp3.baidu.com/m?f=ms&rn=10&tn=baidump3lyric&ct=150994944&word="&singer&"+"&song  
        response.write "<br>"&tmp_url  
        str0 = httpobj.get(tmp_url)  
        str1 = split(str0,"<B><font style=color:#e10900>"&song&"</font></B>")  
        if Ubound(str1) >= 1 then  
          str2 = split(str0,"<div style=""padding-left:10px;line-height:20px;padding-top:1px"">")  
          str3 = split(str2(1),"</div>")  
          lyric = str3(0)  
          lyric = replace(lyric,"<br>",chr(13))  
          lyric = replace(lyric," "," ")  
          lyric = replace(lyric,"<font style=color:#e10900>","")  
          lyric = replace(lyric,"</font>","")  
        else  
          lyric = "暂时还没歌词"  
        end if  
      end if  

      response.write "<br>歌词 - "&lyric  

      '---将采集到的信息更新到数据库  
      if is_getrm then  
        conn.execute("update d_mp3 set file_rm='"&filerm&"',mp3_lyric='"&lyric&"',is_down='1' where id="&id)  
      else  
        conn.execute("update d_mp3 set file_rm='"&filerm&"',mp3_lyric='"&lyric&"',is_down='0' where id="&id)  
      end if  
    else  '---读取目标页面出错时的处理  
      conn.execute("update d_mp3_t set file_rm='nourl',is_down='1' where id="&id)  
      response.write "<br><br><font color=red><b>错误:</b>获取目标页面错误,请检查:"& url &"</font>"  
      response.end  
    end if  
    rssong.movenext  
  loop  
  rssong.close  
  set rssong = nothing  
  CloseConn()  

  '---继续检测采集下一批歌曲信息  
  response.write "<br>正在检测下一批歌曲信息 ...<br><br>"  
  response.write "<meta http-equiv=refresh content=""0 ; url=getrm.asp"">"  
end if  
%>  
</body>  
</html>  


数据库表的SQL脚本:  
数据库表  

 程序代码  
s_sort ----歌手分类表  

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[s_sort]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)  
drop table [dbo].[s_sort]  
GO  

Create TABLE [dbo].[s_sort] (  
        [ID] [int] IDENTITY (1, 1) NOT NULL ,  
        [sort_name] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL   
) ON [PRIMARY]  
GO  

Alter TABLE [dbo].[s_sort] WITH NOCHECK ADD   
        CONSTRAINT [PK_s_sort] PRIMARY KEY  CLUSTERED   
        (  
                [ID]  
        )  ON [PRIMARY]   
GO  




d_singer ----歌手信息表  

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[d_singer]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)  
drop table [dbo].[d_singer]  
GO  

Create TABLE [dbo].[d_singer] (  
        [ID] [int] IDENTITY (1, 1) NOT NULL ,  
        [singer_name] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,  
        [singer_first_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,  
        [singer_sort] [int] NULL ,  
        [mp3_num] [int] NULL ,  
        [is_putup] [bit] NULL ,  
        [view_count] [int] NULL ,  
        [is_down] [bit] NULL   
) ON [PRIMARY]  
GO  

Alter TABLE [dbo].[d_singer] WITH NOCHECK ADD   
        CONSTRAINT [PK_d_singer] PRIMARY KEY  CLUSTERED   
        (  
                [ID]  
        )  ON [PRIMARY]   
GO  



d_album ----专辑信息表  

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[d_album]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)  
drop table [dbo].[d_album]  
GO  

Create TABLE [dbo].[d_album] (  
        [ID] [int] IDENTITY (1, 1) NOT NULL ,  
        [album_singer] [int] NULL ,  
        [file_img] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  
        [album_name] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  
        [album_lang] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  
        [album_corp] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  
        [album_time] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  
        [album_intro] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,  
        [is_singer_album] [bit] NULL ,  
        [view_count] [int] NULL ,  
        [is_putup] [bit] NULL ,  
        [add_time] [datetime] NULL ,  
        [album_7xi] [int] NULL ,  
        [is_down] [bit] NULL   
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
GO  

Alter TABLE [dbo].[d_album] WITH NOCHECK ADD   
        CONSTRAINT [PK_d_album] PRIMARY KEY  CLUSTERED   
        (  
                [ID]  
        )  ON [PRIMARY]   
GO  




d_mp3 ----歌曲信息表  

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[d_mp3]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)  
drop table [dbo].[d_mp3]  
GO  

Create TABLE [dbo].[d_mp3] (  
        [ID] [int] IDENTITY (1, 1) NOT NULL ,  
        [mp3_name] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,  
        [mp3_album] [int] NULL ,  
        [mp3_singer] [int] NULL ,  
        [file_rm] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  
        [file_size] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,  
        [is_putup] [bit] NULL ,  
        [mp3_lyric] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL ,  
        [view_count] [int] NULL ,  
        [down_count] [int] NULL ,  
        [is_my] [bit] NULL ,  
        [mp3_7xi] [int] NULL ,  
        [is_down] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL   
) ON [PRIMARY]  
GO  

Alter TABLE [dbo].[d_mp3] WITH NOCHECK ADD   
        CONSTRAINT [PK_d_mp3] PRIMARY KEY  CLUSTERED   
        (  
                [ID]  
        )  ON [PRIMARY]   
GO

延伸 · 阅读

精彩推荐