基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证,而且返回信息里面只有URL,没有一些相关的属性信息。所以就想方设法弄到了QQ音乐的API。
已经用xCode尝试过并且可行的API:
★搜索音乐(歌词)
http://shopcgi.qqmusic.qq.com/fcgi-bin/shopsearch.fcg?value=歌曲名&artist=歌手名&type=qry_song&out=json&page_no=页码&page_record_num=单页记录数量。
这个网上搜索不到的,自己用fiddler抓出来的,会返回一个json,注意的是返回的json的key没有用引号引起来而且需要对URL本身和返回的内容使用gb2312编(解)码,
看这样一个例子:
就会得到这样的不标准json,之后的步骤简单的就说下,截取searchCallBack()中间的内容,对key进行加引号,然后就可以用json解码框架来解码。
★下载歌词
搜索完成后,每首歌曲会对应一个price属性,如果这个属性对应的值是250就说明没有歌词,确认有歌词,就可以用下面的接口下载歌词。 http://music.qq.com/miniportal/static/lyric/歌曲id求余100/歌曲id.xml
如果正常会返回这样的xml(json的返回地址没抓到)
看这个例子:
前一个例子中返回的第三首歌有的price属性值为320,表示有歌词,如果下载这首歌的歌词,就用这个url:
http://music.qq.com/miniportal/static/lyric/32/1512932.xml
腾讯就会送回这样的xml
如果你用price为250的歌曲对应的id来搜索,比如第一个例子中的第一首歌,那么你使用的这个url:
http://music.qq.com/miniportal/static/lyric/11/16797.xml
那么就会送回404错误信息:
★获取专辑插图
如果需要获取专辑插图,就可以使用下面的接口
http://imgcache.qq.com/music/photo/album/专辑id求余100/albumpic_专辑id_0.jpg
看这个例子:
要获取第一个例子的中的第三个结果的专辑插图,就这么用:
http://imgcache.qq.com/music/photo/album/88/albumpic_121988_0
就会返回500*500的插图(QQ音乐的插图清晰度很高)
★获取排行榜(尚未经过xCode测试)
目前抓到两个排行榜的地址:
新歌榜: http://music.qq.com/musicbox/shop/v3/data/hit/hit_newsong.js
总榜: http://music.qq.com/musicbox/shop/v3/data/hit/hit_all.js
因为还没有进行进一步的尝试就不放例子了
★获取音乐地址
http://stream1歌曲信息中的location值.qqmusic.qq.com/3歌曲ID(7位数,不足在前面补0). mp3
例如之前搜索出来的第一首歌的地址应该是:
http://stream18.qqmusic.qq.com/31679711.
第二首歌的地址应该是
http://stream13.qqmusic.qq.com/31516144.
这个仍然在测试中,希望对和我一样正在努力做在线音乐的童鞋有些帮助。