做音乐网站要实现展示歌手歌曲的功能,看了许多api,感觉就酷狗的简单,好用,这是原作者的方法,原文大概如下:
酷狗MP3链接需要两个接口获取:
hash获取接口: http://songsearch.kugou.com/song_search_v2
MP3获取接口: http://www.kugou.com/yy/index.php
1.获取hash的接口
拿杰伦来说:
http://songsearch.kugou.com/song_search_v2?callback=jQuery19107655316341116605_1497970603262&keyword=周杰伦&page=1&pagesize=1&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0;
注释:
callback=jQuery19107655316341116605_1497970603262 可以删掉,方便;
keyword=%E5%91%A8%E6%9D%B0%E4%BC%A6 歌手或者歌曲名字,例如:keyword=周杰伦;
clientver=&platform=WebFilter 必须存在不知道什么意思;
page=1 页数;
pagesize=1,每页显示一条数据,可自行定义。
其余参数未测试或未发现实际意义自行测试,可有可无
结果如下:
在这里插入图片描述
得到了json数据,然后我用jQuery的ajax请求数据,结果报错,错误如下:Uncaught ReferenceError: jQuery19107655316341116605_1497970603262 is not defined,大概意思是url参数回掉函数callback未定义,按照原作者的提示删掉callback,结果出现跨域问题。
后来想了想,应该是要自定义callback函数,果然解决了问题,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body style="margin-left:200px">
<div style="text-align:center">
<canvas id="c"></canvas>
</div>
<script>
function showData(data){
console.log("测试成功!");
var result = JSON.stringify(data);
console.log(result);
}
$(document).ready(function(){
var author="许嵩";
var url="http://songsearch.kugou.com/song_search_v2?callback=showData&keyword="+author+"&page=1&pagesize=10&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0";
$.ajax({
url:url,
type:"get",
dataType:'jsonp',
jsonp: "showData", //自定义回调函数
scriptCharset: 'GBK',//解决中文乱码
});
});
</script>
</body>
</html>
结果如下:
在这里插入图片描述
2.获取MP3链接的接口
周杰伦的告白气球:http://www.kugou.com/yy/index.php?r=play/getdata&hash=3C3D93A5615FB42486CAB22024945264&album_id=1645030&_=1497972864535
注释:
&hash=3C3D93A5615FB42486CAB22024945264 上面拿出来的hash;
&album_id=1645030 上一步拿出来的AlbumID ;
会返回json
网友评论