首頁 > php教程 > php手册 > 從千千靜聽伺服器取得的lrc歌詞

從千千靜聽伺服器取得的lrc歌詞

WBOY
發布: 2016-08-04 08:54:59
原創
2033 人瀏覽過

從千千靜聽伺服器取得的lrc歌詞的PHP程式碼被動碼與示範: 原始碼出處示範出處?phperror_reporting(0);function ConvertUrlEncode($text){$textUrl = htmlspecialchars(urlencode($text));return $ textUrl;}$Type=substr($name,-4);$name1=str_replace($Type,"

從千千靜聽伺服器取得的lrc歌詞的PHP程式碼

源碼與示範:源碼出處 示範出處

<?php
error_reporting(0);
function ConvertUrlEncode($text)
{
$textUrl = htmlspecialchars(urlencode($text));
return $textUrl;
}
$Type=substr($name,-4);
$name1=str_replace($Type,"",$name);
$name2=str_replace("-","",$name1);
$uk=ConvertUrlEncode($name2);
$str=file_get_contents('http://music.baidu.com/search/lrc?key='.$uk);
  preg_match_all('/<p id="lyricCont-0">(.*?)<\/p>/is',$str, $arr);
  foreach ($arr[1] as $k => $v){
       }
if($v){
echo $v;
      }else{
echo '很抱歉,百度都没找到'.$name.'的歌词,这歌曲也太给力了吧~!';
      }
?>
登入後複製
從千千靜聽伺服器取得的lrc歌詞
<?
//转载请注明出处 uenucom
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; 

$tmp1 = ($Id & 0x0000FF00) >> 8; //右移8位后为0x0000015F 
//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;} 

$artist="央金兰泽"; 
$title="遇上你是我的缘"; 
$doc = new DOMDocument(); 
$doc->load("http://lrccnc.ttplayer.com/dll/lyricsvr.dll?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("http://lrccnc.ttplayer.com/dll/lyricsvr.dll?dl?Id=".$id."&Code=".$code)); 
echo $lrcstr; 
break; 
} 

?>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板