註釋寫代碼裏了,直接上代碼吧
function musicKuwo()
{
$musicName = input('musicName');
if(!$musicName)
return $this->redirect('/#Index/index');
$data = UtilsAll::getMusicInformation($musicName);//這是主要的
/* var_dump($data);
die;*/
/* var_dump(count($data));
die;*/
$DDL = UtilsAll::getMusicInformation($stri = '');//這是獲取歷史記錄要用到的
if (count($DDL))
{ //去除不必要的信息,僅保留下標1,2的歌名和歌曲鏈接
unset($DDL[0]);
unset($DDL[3]);
unset($DDL[4]);
unset($DDL[5]);
unset($DDL[6]);
unset($DDL[7]);
unset($DDL[8]);
unset($DDL[9]);
}
$DDL = array_values($DDL);//重新對數組排序 數組中排序爲:0 歌名 1鏈接 ..
if (count($data))
{
$data[0] = $DDL;
unset($data[2]);
unset($data[7]);
unset($data[8]);
unset($data[9]);
$data = array_values($data); //重排
return json($data);
}
$ipAddres = $_SERVER['REMOTE_ADDR'];//獲取訪問ip
$url = "http://sou.kuwo.cn/ws/NSearch?type=all&catalog=yueku20177&key=$musicName";
$kuwoweb = 'http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=MUSIC_';
$html = file_get_contents($url); //請求一個頁面
$strend = strstr($html,'<a href="http://www.kuwo.cn/yinyue/');//截取一個頁面所有a標籤
preg_match('/<a\s(href).*\/.*\/(\d+)/', $strend, $matches);
//網易歌詞接口無法獲取id,放棄!
/*$page163 = "https://music.163.com/#/search/m/?&s=$musicName&type=1";
$backPage = file_get_contents($page163);
preg_match('/<a\shref\S*\/song\?id=(.*)/',$backPage,$preg163);//href="/song?id=400162138
*/
//酷我歌詞接口司馬加密,放棄!
/*$kuwoUrl = "http://search.kuwo.cn/r.s?all=$musicName&ft=music&itemset=web_2013&client=kt&pn=0&rn=5&rformat=json&encoding=utf8";
$kuwoP = file_get_contents($kuwoUrl);
preg_match('/MUSIC_(\d+)/',$kuwoP,$kuwoId);
$kuwoInline = "http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=$kuwoId[0]";
$kuwoInlineP = file_get_contents($kuwoInline);
preg_match('/<lyric>(.*)<\/lyric>/',$kuwoInlineP,$lyricsPages);
$kuwoLyrics = "http://newlyric.kuwo.cn/newlyric.lrc?$lyricsPages[1]";
$backLyrics = file_get_contents($kuwoLyrics);*/
//百度貌似又死了,
//歌詞迷,新歌很多歌詞都沒有,只能勉強用了。
$gecimiAPI = "http://gecimi.com/api/lyric/$musicName";
$downloadLyrics = '';
try {//這裏如果獲取不到會爆異常,需要把他拋了
$backPage = file_get_contents($gecimiAPI);//http://s.gecimi.com/lrc/344/34435/3443588.lrc
preg_match('/lrc.*(http.*\/\/\S*\/\w+\/\d+\/\d+\/\d+\.lrc)/',$backPage,$backLyricsUrl);
$downloadLyrics = file_get_contents($backLyricsUrl[1]);
} catch (Exception $e)
{
$downloadLyrics = '歌詞??不存在的';
}
$kuwoSong = file_get_contents($kuwoweb . $matches[2]); //得到外鏈頁面
preg_match('/(\w\d)+?\/(\d+)\/(\d+)\/(\d+)\.?(mp3)/',$kuwoSong,$mp3);//提取mp3值
preg_match('/(other)\.(web)\.(.*)\.(\w+)?\.(.*)?(cn)/',$kuwoSong,$other);//提取other值
preg_match('/<a\shref.*\/yinyue\/\d+\/\S\s.*/',$strend,$nameArr);//提取姓名a標籤
preg_match('/<a\shref.*\/album\/\d+\/\S\s.*/',$strend,$albumArr);//提取專輯a標籤
preg_match('/<a\shref.*\/mingxing\/\S*.*/',$strend,$starArr);//提取明星a標籤
preg_match('/title=\S(\S*)\S/',$nameArr[0],$name);//提取title值
preg_match('/title=\S(\S*)\S/',$albumArr[0],$album);//提取專輯a標籤title值
preg_match('/title\S+(\S)*\S/',$starArr[0],$star);//提取明星title值
// $nameStr = mb_substr($star[0],8,9,'UTF-8');
$nameReplace = str_replace('title="','',$name[0]);//姓名檢驗
$albumReplace = str_replace('title="','',$album[0]);//專輯校驗
$starReplace = str_replace('title="','',$star[0]);//明星校驗
$data[0] = $DDL;
$data[1] = $musicName;//歌曲名
$data[2] = 'http://' . $other[0] . '/resource/' . $mp3[0];//播放連接
$data[3] = $nameReplace;//歌手名
$data[4] = $albumReplace;//專輯名
$data[5] = $starReplace;//明星名
$data[6] = $downloadLyrics;//歌詞
// $data[7] = $ipAddres;
UtilsAll::setSave($data);//調用保存方法保存到本地主機
$this->assign('data',$data); //模版賦值
return json($data); //返回json數組
}