基本上论坛里做在线音乐的都在用百度的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属性值为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错误信息:
那么就会送回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 .jpg 就会返回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. mp3 第二首歌的地址应该是 http://stream13.qqmusic.qq.com/31516144. mp3
★获取排行榜(尚未经过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. mp3 第二首歌的地址应该是 http://stream13.qqmusic.qq.com/31516144. mp3