- 2022.7.31更新:
QQ音樂對(duì)獲取vkey的接口請(qǐng)求增加了簽名挑势,簽名方式未知淤齐,原接口拿到的vkey始終為空
https://u.y.qq.com/cgi-bin/musics.fcg?_=1659237053789&sign=zzbfbf757d5albjo4yed3do4flmzkuvq7db9c7ef
目前使用到其他音樂庫api
以下原文:
在移動(dòng)端上雖然QQ音樂沒有提供native sdk,但是可以通過http請(qǐng)求的方式使用QQ音樂的能力涣狗,封裝一下就能實(shí)現(xiàn)一個(gè)簡(jiǎn)單的音樂播放器谍婉。
一舒憾、音樂搜索接口
Method:
GET
URL:
https://c.y.qq.com/soso/fcgi-bin/client_search_cp?aggr=1&cr=1&flag_qc=0&p=1&n=30&w=簡(jiǎn)單愛
參數(shù):
- p:頁數(shù),從1開始
- n:每一頁顯示的條數(shù)
- w:搜索關(guān)鍵字
通過p和n參數(shù)穗熬,就可以實(shí)現(xiàn)分頁請(qǐng)求加載了镀迂。可以在瀏覽器中打開鏈接查看返回的數(shù)據(jù)格式唤蔗。
二探遵、其他接口
1. 最新音樂排行榜top100
- Method:GET
- URL:
https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?g_tk=5381&uin=0&format=json&inCharset=utf-8&outCharset=utf-8?ice=0&platform=h5&needNewCode=1&tpl=3&page=detail&type=top&topid=27&_=1519963122923
2. 隨機(jī)推薦
- Method:GET
- URL:
https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?g_tk=5381&uin=0&format=json&inCharset=utf-8&outCharset=utf-8?ice=0&platform=h5&needNewCode=1&tpl=3&page=detail&type=top&topid=36&_=1520777874472
三、數(shù)據(jù)格式
以搜索結(jié)果的數(shù)據(jù)格式為例妓柜,curPage即當(dāng)前頁數(shù)箱季,totalnum即總數(shù)。list中即本次請(qǐng)求的30條歌曲的數(shù)據(jù)棍掐,如果請(qǐng)求的位移超過了totalnum藏雏,list中返回0條。
然后主要看下list下的歌曲信息應(yīng)該如何使用作煌,一個(gè)簡(jiǎn)單的播放器顯示會(huì)有專輯名稱掘殴、封面、歌曲名稱最疆、歌手名稱等:
1. 歌曲名稱
songname
2. 歌手名稱
singer字段杯巨,列表結(jié)構(gòu),其中會(huì)多個(gè)歌手的信息
3. 專輯名稱
albumname
4. 專輯封面
封面圖片url要使用albumid字段拼接生成努酸,格式:
"http://imgcache.qq.com/music/photo/album_300/%i/300_albumpic_%i_0.jpg", albumid%100, albumid
比如albumid=8217服爷,封面地址就是http://imgcache.qq.com/music/photo/album_300/17/300_albumpic_8217_0.jpg,可以在瀏覽器中打開驗(yàn)證获诈。
5. 播放鏈接
播放鏈接并不是一個(gè)永久的地址仍源,每次需要?jiǎng)討B(tài)獲取一個(gè)token,然后再生成播放鏈接舔涎。這個(gè)token是用來驗(yàn)證鏈接的有效性的笼踩,會(huì)包含時(shí)效等信息。用過阿里云oss服務(wù)的同學(xué)應(yīng)該知道亡嫌,圖片鏈接會(huì)包含一個(gè)鑒權(quán)token嚎于,只可在有效時(shí)間內(nèi)使用,能防止盜鏈挟冠,這個(gè)也是類似的于购。
獲取token
Method:GET
URL:
https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?format=json205361747&platform=yqq&cid=205361747&songmid=003lghpv0jfFXG&filename=C400003lghpv0jfFXG.m4a&guid=126548448
songmid可以從歌曲信息中取到,filename根據(jù)songmid生成知染。比如肋僧,songmid是003lghpv0jfFXG,則filename就是前綴加上C400,后綴加上.m4a嫌吠,即C400003lghpv0jfFXG.m4a止潘。其他字段format、platform辫诅、cid凭戴、guid可以寫死,但都是必須的泥栖。請(qǐng)求到的結(jié)果中可以看到expiration為80400(秒)簇宽,表示有效時(shí)長(zhǎng)大約22.3小時(shí)。vkey字段就是我們接下來拼接播放地址要使用的吧享。
拼接播放地址
http://ws.stream.qqmusic.qq.com/C400003lghpv0jfFXG.m4a?fromtag=0&guid=126548448&vkey=D661E5DF19B8FEB2FBFC554276746AC608AE98B0F30595B3B3BAD5C1C89ECCDD7BE599E306F786621856D22D6BD6B96F5DD344CF3814DB71
url的path就是上文中用到的filename。參數(shù)中的幾個(gè)字段都是必須的:guid要和請(qǐng)求token時(shí)使用的guid保持一致譬嚣,vkey即token中的vkey字段钢颂,fromtag隨意指定一個(gè)整數(shù),可以寫死為0拜银。
可以將你拼接好的地址復(fù)制到瀏覽器中驗(yàn)證是否能正常播放殊鞭。
注意:
1.如果沒有fromtag字段,鏈接可以在瀏覽器中播放尼桶,但在移動(dòng)端上播放不了操灿。
2.這種方法大部分歌曲能獲取到播放鏈接,但少量歌曲獲取不到vkey泵督,如排行榜top100中的帶“純享版”歌曲趾盐,大家可以試一下。
四小腊、應(yīng)用
最后安利一個(gè)APP:小時(shí)光(AppStore搜索“小時(shí)光SmartTime”)救鲤,一款時(shí)光軸風(fēng)格的日記本,其中在日記中添加音樂使用了該功能秩冈,歡迎使用和關(guān)注~