酷狗音乐采集类

  1. php
  2. /**
  3. * 酷狗API类
  4. * @author Flc <2015-08-27 22:51:24>
  5. */
  6. $kugou =new kugou();
  7. $lists = $kugou->getList('儿歌');
  8. print_r($lists);
  9. $music = $kugou->getMusic('2dc67062d830de3b60b7e4b09820e062');
  10. print_r($music);
  11. print_r($music['url']);
  12. class kugou{
  13. const LIST_URL ='http://lib9.service.kugou.com/websearch/index.php?page={page}&keyword={keyword}&cmd=100&pagesize={pagesize}';
  14. const MUSIC_URL ='http://m.kugou.com/app/i/getSongInfo.php?hash={hash}&cmd=playInfo';
  15. protectedstatic $http =null;
  16. /**
  17. * 初始化
  18. */
  19. function __construct(){
  20. if(self::$http ==null)self::$http =new http();
  21. }
  22. /**
  23. * 获取列表
  24. * @param string $keyword 关键字
  25. * @param integer $page 当前页
  26. * @param integer $pagesize 每页获取数量
  27. * @return array|false
  28. */
  29. publicfunction getList($keyword, $page =1, $pagesize =10){
  30. $url = str_replace(array('{page}','{keyword}','{pagesize}'), array($page, $keyword, $pagesize),self::LIST_URL);
  31. $json =self::$http->http_gets($url);
  32. if(!$json)returnfalse;
  33. $resp = json_decode($json,true);
  34. return $resp;
  35. }
  36. /**
  37. * 获取音乐地址
  38. * @param string $hash 音乐hash码
  39. * @return string|false
  40. */
  41. publicfunction getMusic($hash){
  42. $url = str_replace(array('{hash}'), array($hash),self::MUSIC_URL);
  43. $json =self::$http->http_gets($url);
  44. if(!$json)returnfalse;
  45. $resp = json_decode($json,true);
  46. return $resp;
  47. }
  48. }
  49. /**
  50. * http请求类
  51. * @author Flc <2015-08-27 22:51:47>
  52. */
  53. class http{
  54. /**
  55. * 服务器通过get请求获得内容
  56. * @param string $baseURL 基础URL
  57. * @param array $keysArr 请求参数
  58. * @return string [description]
  59. */
  60. publicstaticfunction http_gets($baseURL, $keysArr = array()){
  61. $url =self::combineURL($baseURL, $keysArr);
  62. $ch = curl_init();
  63. if(stripos($url,"https://")!==FALSE){
  64. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  65. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  66. curl_setopt($ch, CURLOPT_SSLVERSION,1);//CURL_SSLVERSION_TLSv1
  67. }
  68. curl_setopt($ch, CURLOPT_URL, $url);
  69. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  70. $sContent = curl_exec($ch);
  71. $aStatus = curl_getinfo($ch);
  72. curl_close($ch);
  73. if(intval($aStatus["http_code"])==200){
  74. return $sContent;
  75. }else{
  76. returnfalse;
  77. }
  78. }
  79. /**
  80. * post方式请求资源
  81. * @param string $url 基于的baseUrl
  82. * @param array $keysArr 请求的参数列表
  83. * @return string 返回的资源内容
  84. */
  85. publicstaticfunction http_post($url, $keysArr = array()){
  86. $ch = curl_init();
  87. if(stripos($url,"https://")!==FALSE){
  88. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  89. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
  90. curl_setopt($ch, CURLOPT_SSLVERSION,1);//CURL_SSLVERSION_TLSv1
  91. }
  92. $aPOST = array();
  93. foreach($keysArr as $key=>$val){
  94. $aPOST[]= $key."=".urlencode($val);
  95. }
  96. $strPOST = implode("&", $aPOST);
  97. curl_setopt($ch, CURLOPT_URL, $url);
  98. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  99. curl_setopt($ch, CURLOPT_POST,true);
  100. curl_setopt($ch, CURLOPT_POSTFIELDS,$strPOST);
  101. $sContent = curl_exec($ch);
  102. $aStatus = curl_getinfo($ch);
  103. curl_close($ch);
  104. if(intval($aStatus["http_code"])==200){
  105. return $sContent;
  106. }else{
  107. returnfalse;
  108. }
  109. }
  110. /**
  111. * combineURL
  112. * 拼接url
  113. * @param string $baseURL 基于的url
  114. * @param array $keysArr 参数列表数组
  115. * @return string 返回拼接的url
  116. */
  117. publicstaticfunction combineURL($baseURL, $keysArr){
  118. if(empty($keysArr)||!is_array($keysArr))return $baseURL;
  119. $combined = $baseURL."?";
  120. $valueArr = array();
  121. foreach($keysArr as $key => $val){
  122. $valueArr[]="$key=".urlencode($val);
  123. }
  124. $keyStr = implode("&",$valueArr);
  125. $combined .=($keyStr);
  126. return $combined;
  127. }
  128. }