晨风交流论坛_CMP_CChat_Flash_音乐_视频_播放器_live直播_聊天室

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3163|回复: 1

[问题] 怎么使用歌词自动搜索功能?

[复制链接]
发表于 2009-7-14 17:48:43 | 显示全部楼层 |阅读模式
官方QQ群:102348392 | 捐赠CMP
我用的是cmp3版本,将全部文件上传到了我的空间。
但是不会使用歌词自动搜索功能。
我按照之前那个大大所说的,在与cmp.swf同目录下建立了一个lrc.asp文件(我的空间支持php/asp)
将代码复制了进去,代码:
<%
Option Explicit
Dim SiteName,SiteUrl,SiteOpen,SiteCloseStr,i
Dim PageCode,PageCodes
dim Conn,Rs,Sqlstr
SiteName=""

SiteOpen=True
SiteCloseStr=""


If SiteOpen=False Then
        Response.Write(SiteCloseStr)
        Response.End()
End If
        
Function ReplaceTest(patrn,replStr,str)
    Dim regEx,str1
        str1=str
    Set regEx = New RegExp
    regEx.Pattern = patrn
    regEx.IgnoreCase = True
        regEx.Global = True
    ReplaceTest = regEx.Replace(str1,replStr)
End Function

Function RegExpTest(patrn, strng)
        Dim regEx, Matchs, Matches, RetStr
        Set regEx = New RegExp
        regEx.Pattern = patrn
        regEx.IgnoreCase = True
        regEx.Global = True
        Set Matches = regEx.Execute(strng)
        For Each Matchs in Matches
                RetStr = RetStr & Matchs.Value & "||"
        Next
        RegExpTest = RetStr
End Function


Function GetHttpPage(HttpUrl)
        If IsNull(HttpUrl)=True Then
                Response.Write("")
                Exit Function
        End If
        Dim Http
        Set Http=server.createobject("MSX"&"ML2.XML"&"HTTP")
        Http.open "GET",HttpUrl,False
        Http.Send()
        If Http.Readystate<>4 then
                Set Http=Nothing
                response.Write("")
                Exit function
        End if
        GetHttpPage=BytesToBSTR(Http.responseBody,"gb2312")
        Set Http=Nothing
        If Err.number<>0 then
                Err.Clear
                Response.Write(SiteCloseStr)
                Response.End()
        End If
End Function

'转换编码函数
Function BytesToBstr(Body,Cset)
        Dim Objstream
        Set Objstream = Server.CreateObject("adod"&"b.stream")
        Objstream.Type = 1
        Objstream.Mode =3
        Objstream.Open
        Objstream.Write body
        Objstream.Position = 0
        Objstream.Type = 2
        Objstream.Charset = Cset
        BytesToBstr = Objstream.ReadText
        Objstream.Close
        set Objstream = nothing
End Function

If Request.QueryString("Demo")<>"" Then
    PageCode=GetHttpPage(Request.QueryString("Demo"))
Else
    PageCode=GetHttpPage("http://lovecmp.com/cmplrc.php?sid="&Request.QueryString("w")&"&title="&Request.QueryString("m")

&"&artist="&Request.QueryString("s")&"")
End If
Response.Write(PageCode)
%>


这个是我加歌曲的格式:
<m src="http://210.46.96.22/jpresource/mp3/音乐风云榜/谢霆锋-无声仿有声.mp3" lrc="cmplrc.php?title=无声仿有声&artist=谢霆锋">无声仿有声</m>

请问我该怎么做?
 楼主| 发表于 2009-7-14 17:50:39 | 显示全部楼层
另外在与cmp.swf同目录下还有一个cmplrc.php文件。
代码:
<?

/*------注释--------
*Copyright By  "www.lovecmp.com"
*  添加方法 如下
*  随便找一首歌曲
*  cmplrc.php?title=歌名  最简单的方法
*  如果歌曲名称重复 最好注释上歌手
*    cmplrc.php?title=歌名&artist=歌手名
*  如果你不觉得麻烦可以选择歌词数据的线路
*    sid=1 sid=2  1是电信 2是网通  
*   cmplrc.php?sid=1&title=歌名&artist=歌手名
*   如果大家不是颓废音乐网的用户,或者没有php空间, 但是想使用 歌词,
*   http://lovecmp.com/cmplrc.php?sid=1&title=歌名
*   把歌名称换成 你音乐的歌曲名称就可以了
* Copyright By  "www.lovecmp.com"
------注释--------*/


$title = $_REQUEST[title];
$artist = $_REQUEST[artist];

$serverList = array("1"=>"http://ttlrcct.qianqian.com/dll/lyricsvr.dll", "2"=>"http://ttlrccnc.qianqian.com/dll/lyricsvr.dll");

$sid = $_REQUEST[sid];
if (empty($sid)) $sid = 1;

$server = $serverList[$sid];

$doc = new DOMDocument();
$doc->load($server."?sh?Artist=".qianqian_code($artist)."&Title=".qianqian_code($title)."&Flags=0");
   
$lrcNode = $doc->getElementsByTagName("lrc");
foreach($lrcNode as $lrc) {  
   $id=$lrc->getAttribute("id");
   $artist=iconv('UTF-8','GBK',$lrc->getAttribute("artist"));  
   $title=iconv('UTF-8','GBK',$lrc->getAttribute("title"));  
   $code=CodeFunc($id,$artist,$title);  
   $lrcstr=iconv('UTF-8','GBK',file_get_contents($server."?dl?Id=".$id."&Code=".$code));  
   echo $lrcstr;
   break;
}

function SingleDecToHex($dec){  
    $tmp="";  
    $dec=$dec%16;  
    if($dec<10) return $tmp.$dec;  
    $arr=array("A","B","C","D","E","F");  
    return $tmp.$arr[$dec-10];  
}  
function SetToHexString($str){  
    if(!$str) return false;  
    $tmp="";  
    for($i=0;$i<strlen($str);$i++)  
    {  
        $ord=ord($str[$i]);  
        $tmp.=SingleDecToHex(($ord-$ord%16)/16);  
        $tmp.=SingleDecToHex($ord%16);  
    }  
    return $tmp;  
}  
function qianqian_code($str){  
        $s=strtolower($str);
        $s=str_replace(" ","",$s);
        $s=str_replace("'","",$s);
        return SetToHexString(iconv('GBK','UTF-16LE',$s));
}  
function conv($num){  
    $tp = bcmod($num,4294967296);  

    if(bccomp($num,0)>=0 && bccomp($tp,2147483648)>0)  
        $tp=bcadd($tp,-4294967296);  
    if(bccomp($num,0)<0 && bccomp($tp,2147483648)<0)  
        $tp=bcadd($tp,4294967296);  

    return $tp;  
}  
function CodeFunc($Id,$artist,$title){  
    $Id=(int)$Id;  
    $utf8Str=SetToHexString(iconv('GBK','UTF-8',$artist.$title));  

    $length=strlen($utf8Str)/2;  
    for($i=0;$i<=$length-1;$i++)  
        eval('$song['.$i.'] = 0x'.substr($utf8Str,$i*2,2).';');  

    $tmp2=0;  
    $tmp3=0;  

        //右移8位后为0x0000015F  
    $tmp1 = ($Id & 0x0000FF00) >> 8;
        //tmp1 0x0000005F  
    if ( ($Id & 0x00FF0000) == 0 ) {  
        $tmp3 = 0x000000FF & ~$tmp1; //CL 0x000000E7  
    } else {  
        $tmp3 = 0x000000FF & (($Id & 0x00FF0000) >> 16); //右移16位后为0x00000001  
    }  
    $tmp3 = $tmp3 | ((0x000000FF & $Id) << 8); //tmp3 0x00001801  
    $tmp3 = $tmp3 << 8; //tmp3 0x00180100  
    $tmp3 = $tmp3 | (0x000000FF & $tmp1); //tmp3 0x0018015F  
    $tmp3 = $tmp3 << 8; //tmp3 0x18015F00  
    if ( ($Id & 0xFF000000) == 0 ) {  
        $tmp3 = $tmp3 | (0x000000FF & (~$Id)); //tmp3 0x18015FE7  
    } else {  
        $tmp3 = $tmp3 | (0x000000FF & ($Id >> 24)); //右移24位后为0x00000000  
    }  

    $i=$length-1;  
    while($i >= 0){  
        $char = $song[$i];  
        if($char >= 0x80) $char = $char - 0x100;  

        $tmp1 = ($char + $tmp2) & 0x00000000FFFFFFFF;  
        $tmp2 = ($tmp2 << ($i%2 + 4)) & 0x00000000FFFFFFFF;  
        $tmp2 = ($tmp1 + $tmp2) & 0x00000000FFFFFFFF;  
        $i -= 1;  
    }  

    $i=0;  
    $tmp1=0;  
    while($i<=$length-1){  
        $char = $song[$i];  
        if($char >= 128) $char = $char - 256;  
        $tmp7 = ($char + $tmp1) & 0x00000000FFFFFFFF;  
        $tmp1 = ($tmp1 << ($i%2 + 3)) & 0x00000000FFFFFFFF;  
        $tmp1 = ($tmp1 + $tmp7) & 0x00000000FFFFFFFF;  

        $i += 1;  
    }  

    $t = conv($tmp2 ^ $tmp3);  
    $t = conv(($t+($tmp1 | $Id)));  
    $t = conv(bcmul($t , ($tmp1 | $tmp3)));  
    $t = conv(bcmul($t , ($tmp2 ^ $Id)));  

    if(bccomp($t , 2147483648)>0)  
         $t = bcadd($t ,- 4294967296);  
    return $t;
}  
/*------注释--------
*Copyright www.lovecmp.com
*  添加方法 如下
*  随便找一首歌曲
*  cmplrc.php?title=歌名  最简单的方法
*  如果歌曲名称重复 最好注释上歌手
*    cmplrc.php?title=歌名&artist=歌手名
*  如果你不觉得麻烦可以选择歌词数据的线路
*    sid=1 sid=2  1是电信 2是网通  
*   cmplrc.php?sid=1&title=歌名&artist=歌手名
*   如果大家不是颓废音乐网的用户,或者没有php空间, 但是想使用 歌词,
*   http://lovecmp.com/cmplrc.php?sid=1&title=歌名
*   把歌名称换成 你音乐的歌曲名称就可以了
* Copyright www.lovecmp.com
------注释--------*/

?>

QQ|Archiver|手机版|小黑屋|晨风交流论坛 ( 粤ICP备05008793号 )

GMT+8, 2020-10-20 05:49 , Processed in 0.053044 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表