QQ音樂api介面梳理

code_mcx發表於2017-12-18

宣告:以下介面僅限於學習使用,嚴禁用於商業用途

推薦歌單

url: https://u.y.qq.com/cgi-bin/musicu.fcg?callback=recom3477297233556247&
g_tk=1278911659&
jsonpCallback=recom3477297233556247&
loginUin=0&
hostUin=0&
format=jsonp&
inCharset=utf8&
outCharset=utf-8¬ice=0&
platform=yqq&
needNewCode=0&
data={"comm":{"ct":24
},"category":{"method":"get_hot_category","param":{"qq":""
},"module":"music.web_category_svr"
},"recomPlaylist":{"method":"get_hot_recommend","param":{"async":1,"cmd":2
},"module":"playlist.HotRecommendServer"
},"playlist":{"method":"get_playlist_by_category","param":{"id":8,"curPage":1,"size":40,"order":5,"titleid":8
},"module":"playlist.PlayListPlazaServer"
},"new_song":{"module":"QQMusic.MusichallServer","method":"GetNewSong","param":{"type":0
}
},"new_album":{"module":"QQMusic.MusichallServer","method":"GetNewAlbum","param":{"type":0,"category":"-1","genre":0,"year":1,"company":-1,"sort":1,"start":0,"end":39
}
},"toplist":{"module":"music.web_toplist_svr","method":"get_toplist_index","param":{
}
},"focus":{"module":"QQMusic.MusichallServer","method":"GetFocus","param":{
}
}
}

引數:

  • format: 資料格式
  • callback:jsonp回撥函式名

說明: 如不需要jsonp呼叫,將format引數值修改為json並且去掉callback引數

歌單詳情

url: https://c.y.qq.com/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&
json=1&
utf8=1&
onlysong=0&
disstid=3602407677&
format=jsonp&
g_tk=5381&
jsonpCallback=playlistinfoCallback&
loginUin=0&
hostUin=0&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0

引數:

  • disstid: 歌單id
  • format:資料格式
  • jsonpCallback:jsonp回撥函式名

說明: 該介面瀏覽器不能直接請求,需要攜帶請求頭referer,值為y.qq.com/n/yqq/playl…。對於ajax來說這個請求頭是不能設定的,需要後端代理繞過限制。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

移動web端推薦頁面介面

url: https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg?g_tk=701075963&
uin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf-8&
outCharset=utf-8&
notice=0&
platform=h5&
needNewCode=1&
_=1512548815061

引數:

  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 該介面從QQ音樂移動web端推薦頁面抓取的,最後一個**_**引數代表時間戳。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

最新專輯

url: https://c.y.qq.com/v8/fcg-bin/album_library?g_tk=1278911659&
hostUin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0&
cmd=firstpage&
page=0&
pagesize=20&
sort=1&
language=-1&
genre=0&
year=1&
pay=0&
type=-1&
company=-1

引數:

  • page: 當前頁
  • pagesize:每頁專輯數量
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

最新專輯(新)

url: https://u.y.qq.com/cgi-bin/musicu.fcg?g_tk=5381&
loginUin=0&
hostUin=0&
format=jsonp&
callback=calback&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0&
data={"albumlib":{"method":"get_album_by_tags","param":{"area":1,"company":-1,"genre":-1,"type":-1,"year":-1,"sort":2,"get_tags":1,"sin":0,"num":20,"click_albumid":0
},"module":"music.web_album_library"
}
}

引數:

  • sin: 當前頁
  • num:每頁專輯數量
  • format:資料格式
  • callback:jsonp回撥函式

說明: 如不需要jsonp呼叫,將format引數值修改為json並且去掉callback引數

專輯詳情

url: https://c.y.qq.com/v8/fcg-bin/fcg_v8_album_info_cp.fcg?albummid=001IskfD3Vncxo&
g_tk=1278911659&
hostUin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0

引數:

  • albummid:專輯id。可從專輯列表中獲取
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

歌手列表

url: https://c.y.qq.com/v8/fcg-bin/v8.fcg?channel=singer&
page=list&
key=all_all_all&
pagesize=100&
pagenum=1&
g_tk=5381&
jsonpCallback=callback&
loginUin=0&
hostUin=0&
format=jsonp&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0

引數:

  • pagenum:當前頁
  • pagesize:每頁數量
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

歌手詳情

url: https://c.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg?g_tk=5381&
jsonpCallback=callback&
loginUin=0&
hostUin=0&
format=jsonp&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0&
singermid=004aRKga0CXIPm&
order=listen&
begin=0&
num=30&
songstatus=1

引數:

  • singermid:歌手mid。可從歌手列表裡面獲取
  • begin:當前頁
  • num:每頁歌曲數量
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

排行榜

url: https://c.y.qq.com/v8/fcg-bin/fcg_myqq_toplist.fcg?g_tk=5381&
uin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf-8&
outCharset=utf-8&
notice=0&
platform=h5&
needNewCode=1&
_=1512554796112

引數:

  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 最後一個引數**_**表示時間戳。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

排行榜詳情

url: https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?g_tk=5381&
uin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf-8&
outCharset=utf-8&
notice=0&
platform=h5&
needNewCode=1&
tpl=3&
page=detail&
type=top&
topid=4&
_=1512563984096

引數:

  • topid:排行榜id。可從排行榜介面獲取
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 最後一個引數**_**表示時間戳。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

熱搜

url: https://c.y.qq.com/splcloud/fcgi-bin/gethotkey.fcg?g_tk=5381&
uin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf-8&
outCharset=utf-8&
notice=0&
platform=h5&
needNewCode=1&
_=1513317614040

引數:

  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 最後一個引數**_**表示時間戳。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

搜尋

url: https://c.y.qq.com/soso/fcgi-bin/search_for_qq_cp?g_tk=5381&
uin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf-8&
outCharset=utf-8&
notice=0&
platform=h5&
needNewCode=1&
w=%E6%AC%A7%E9%98%B3%E6%9C%B5&
zhidaqu=1&
catZhida=1&
t=0&
flag=1&
ie=utf-8&
sem=1&
aggr=0&
perpage=20&
n=20&
p=1&
remoteplace=txt.mqq.all&
_=1512564562121

引數:

  • w:搜尋關鍵字
  • p:當前頁
  • n:每頁歌曲數量
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 在返回資料中有一個zhida欄位裡面有一個type欄位,其中0表示歌曲、2表示歌手、3表示專輯,其它值靠你們自己去猜了(2333~~~)。最後一個引數**_**表示時間戳。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

該介面不支援跨域請求

搜尋(跨域)

url: https://c.y.qq.com/soso/fcgi-bin/client_search_cp?g_tk=5381&
p=1&
n=20&
w=%E6%AC%A7%E9%98%B3%E6%9C%B5&
format=jsonp&
jsonpCallback=callback&
loginUin=0&
hostUin=0&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0&
remoteplace=txt.yqq.song&
t=0&
aggr=1&
cr=1&
catZhida=1&
flag_qc=0

引數:

  • w:搜尋關鍵字
  • p:當前頁
  • n:每頁歌曲數量
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 在返回資料中有一個zhida欄位裡面有一個type欄位,其中1表示歌手、2表示專輯。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

獲取歌曲檔案

歌曲檔案的獲取相對來說比較的麻煩 (-_-)。先來兩個介面,稍後說明步驟

1、歌曲vkey

url: https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=1278911659&
hostUin=0&
format=jsonp&
callback=callback&
inCharset=utf8&
outCharset=utf-8&
notice=0&
platform=yqq&
needNewCode=0&
cid=205361747&
uin=0&
songmid=000OFXjz0Nljbh&
filename=C400000OFXjz0Nljbh.m4a&
guid=3655047200

引數:

  • songmid:歌曲mid。可從歌單、專輯、歌手、排行榜介面中獲取
  • filename:C400 + songmid + .m4a
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: filename引數值通過songmid拼接而成。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

2、歌曲檔案

url: http://dl.stream.qqmusic.qq.com/C400000OFXjz0Nljbh.m4a?vkey=33E6799DB60508E9561F3DDAA6ED69488988B51DE791617A2E34B02A3A48E9CCBD43595DC00D796EB6768D26134AAB1C3AD192C7044DE1A1&
guid=3655047200&
fromtag=66

引數:

  • vkey:通過歌曲vkey介面獲取

獲取歌曲播放地址步驟

  1. 先呼叫歌曲vkey介面,返回的資料如下
callback({ 
"code": 0, "cid": 205361747, "userip": "183.131.116.70", "data": {
"expiration": 80400, "items": [ {
"subcode": 0, "songmid": "000OFXjz0Nljbh", "filename": "C400000OFXjz0Nljbh.m4a", "vkey": "43DE397B07582DCF13E22045FEFFDE422FA830CFC3A1D894BBED28014EFF4A468D5F02040C87131221BE603CDA41DCBB4B016874ECA51A46"
} ]
}
})複製程式碼

filename欄位為歌曲檔名,vkey欄位就是獲取歌曲檔案需要的vkey了

  1. 使用歌曲檔案地址替換調後面的C400開頭的一截,替換調獲取的vkey

歌詞

url: https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric.fcg?g_tk=5381&
uin=0&
format=jsonp&
jsonpCallback=callback&
inCharset=utf-8&
outCharset=utf-8&
notice=0&
platform=h5&
needNewCode=1&
nobase64=1&
musicid=201773975&
songtype=0&
_=1513437581324

引數:

  • musicid:歌曲id
  • nobase64:不需要base64編碼的格式
  • format:資料格式
  • jsonpCallback:jsonp回撥函式

說明: 該介面不能直接呼叫存在請求限制,請使用後端呼叫。如不需要jsonp呼叫,將format引數值修改為json並且去掉jsonpCallback引數

總結

以上介面是最近通過QQ音樂移動web端和pc端抓取,QQ音樂官方可能會更換介面地址或者修改某些引數,不能保證其介面隨時的準確性

來源:https://juejin.im/post/5a35228e51882506a463b172

相關文章