php/** * 酷狗API类 * @author Flc <2015-08-27 22:51:24> */$kugou =new kugou();$lists = $kugou->getList('儿歌');print_r($lists);$music = $kugou->getMusic('2dc67062d830de3b60b7e4b09820e062');print_r($music);print_r($music['url']);class kugou{const LIST_URL ='http://lib9.service.kugou.com/websearch/index.php?page={page}&keyword={keyword}&cmd=100&pagesize={pagesize}';const MUSIC_URL ='http://m.kugou.com/app/i/getSongInfo.php?hash={hash}&cmd=playInfo';protectedstatic $http =null;/** * 初始化 */function __construct(){if(self::$http ==null)self::$http =new http();}/** * 获取列表 * @param string $keyword 关键字 * @param integer $page 当前页 * @param integer $pagesize 每页获取数量 * @return array|false */publicfunction getList($keyword, $page =1, $pagesize =10){ $url = str_replace(array('{page}','{keyword}','{pagesize}'), array($page, $keyword, $pagesize),self::LIST_URL); $json =self::$http->http_gets($url);if(!$json)returnfalse; $resp = json_decode($json,true);return $resp;}/** * 获取音乐地址 * @param string $hash 音乐hash码 * @return string|false */publicfunction getMusic($hash){ $url = str_replace(array('{hash}'), array($hash),self::MUSIC_URL); $json =self::$http->http_gets($url);if(!$json)returnfalse; $resp = json_decode($json,true);return $resp;}}/** * http请求类 * @author Flc <2015-08-27 22:51:47> */class http{/** * 服务器通过get请求获得内容 * @param string $baseURL 基础URL * @param array $keysArr 请求参数 * @return string [description] */publicstaticfunction http_gets($baseURL, $keysArr = array()){ $url =self::combineURL($baseURL, $keysArr); $ch = curl_init();if(stripos($url,"https://")!==FALSE){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSLVERSION,1);//CURL_SSLVERSION_TLSv1} curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $sContent = curl_exec($ch); $aStatus = curl_getinfo($ch); curl_close($ch);if(intval($aStatus["http_code"])==200){return $sContent;}else{returnfalse;}}/** * post方式请求资源 * @param string $url 基于的baseUrl * @param array $keysArr 请求的参数列表 * @return string 返回的资源内容 */publicstaticfunction http_post($url, $keysArr = array()){ $ch = curl_init();if(stripos($url,"https://")!==FALSE){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch, CURLOPT_SSLVERSION,1);//CURL_SSLVERSION_TLSv1} $aPOST = array();foreach($keysArr as $key=>$val){ $aPOST[]= $key."=".urlencode($val);} $strPOST = implode("&", $aPOST); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST,true); curl_setopt($ch, CURLOPT_POSTFIELDS,$strPOST); $sContent = curl_exec($ch); $aStatus = curl_getinfo($ch); curl_close($ch);if(intval($aStatus["http_code"])==200){return $sContent;}else{returnfalse;}}/** * combineURL * 拼接url * @param string $baseURL 基于的url * @param array $keysArr 参数列表数组 * @return string 返回拼接的url */publicstaticfunction combineURL($baseURL, $keysArr){if(empty($keysArr)||!is_array($keysArr))return $baseURL; $combined = $baseURL."?"; $valueArr = array();foreach($keysArr as $key => $val){ $valueArr[]="$key=".urlencode($val);} $keyStr = implode("&",$valueArr); $combined .=($keyStr);return $combined;}}