怎么使用QQ音乐api搭建个人音乐站点
最近经常有人在oschina上追问怎么用QQ音乐接口的问题。
闲得无聊,重新折腾了一下网页版QQ音乐压缩版源码,整理了一个完整音乐站点搭建的过程。
话不多说,主要分三步,直接上菜。
1.搜索音乐结果。
2.解析结果,拿到f,解析f
3.获取音乐权限vkey
1⃣️. 首先想去拿音乐,以搜索音乐结果为例。qq音乐api接口是:http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0&n={你的pageSize}&aggr=1&cr=1&loginUin={QQ号码}&format=json &inCharset=GB2312&outCharset=utf-8 ¬ice=0 &platform=jqmi niframe.json&needNewCode= 0&p={当前页码}&catZhida=0 &remoteplace=sizer.newclient.next_song&w={搜索关键字}
例:直接get请求
http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0&n=3&aggr=1&cr=1&loginUin=123456&format=json&inCharset=GB2312&outCharset=utf-8¬ice=0&platform=jqminiframe.json&needNewCode=0&p=1&catZhida=0&remoteplace=sizer.newclient.next_song&w=刚好遇见你
response: res.data.song.list 就是返回的音乐列表。
**(这里qq音乐的这个接口需要通过服务器端请求,直接浏览器去拿会跨域问题。或者用爬虫)
以其中一个对象为例:
获取 f 属性
“5002383|声音|131|费玉清;李代沫|435987|声音|2102982|223|7|1|0|8959705|3584855|320000|0|0|0|4909876|5329730|0|000wbmA44e4VEM|0040MELG3TS8OW|000yT4Tj0zs7VP|0|4009“
2⃣️.解析结果:先把f属性拆分成一个数组方便取数据。
var data = f.split("|");
var img =data[22];//000yT4Tj0zs7VP
//获取音乐ID··
var musicId = data[20];//000wbmA44e4VEM,下一步会用到
//获取音乐封面```
var musicIcon = 'http://imgcache.qq.com/music/photo/mid_album_90/'+ img.charAt(img. length-2)+'/'+img.charAt(img.length-1)+'/'+img+'.jpg';
3⃣️.获取音乐权限vkey:
利用ajax jsonp方式请求:
http://c.y.qq.com/base/fcgi-bin/fcg_musicexpress.fcg?json=3&guid=123456
这里guid和获取musicId时候的传的loginUin={QQ号码} 保持一致
var musicId = {上一步中的获得的musicId}
$.ajax({
type:"get",
url:"http://c.y.qq.com/base/fcgi-bin/fcg_musicexpress.fcg?json=3&guid=123456",
dataType:"jsonp",
jsonpCallback:"jsonCallback"
}).done(function(rs){
var key =rs.key //成功获取到vkey;
var musicURI = 'http://ws.stream.qqmusic.qq.com/C200'+musicId+' .m4a?vkey='+res.key+'&guid=123456&fromtag=30';
$("body").append('<audio class="hide" id="sound" src="'+musicURI+'" controls="controls"></audio>');
document.getElementById("sound").play();//到此完成
});
详情见代码。
tips:请不要用于商业途径获利,仅供参考与技术交流分享
练手demo地址:http://www.cqudingx.xyz/jade/chat