QQ音乐的各种相关API

基本上论坛里做在线音乐的都在用百度的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  .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

这个仍然在测试中,希望对和我一样正在努力做在线音乐的童鞋有些帮助。
 
 
### QQ音乐API文档及相关资源 对于希望集成或使用QQ音乐API进行开发的人员来说,了解官方提供的开发者指南和使用教程至关重要。musicApi作为一个综合性的音乐接口服务平台,已经集成了包括QQ音乐在内的多个主流平台的接口,这使得开发者可以通过统一的方式访问不同平台上的音乐资源[^1]。 #### 获取官方文档和支持材料 为了更好地理解和运用QQ音乐API,建议直接查阅来自腾讯官方发布的最新版API文档。这些文档通常包含了详细的参数说明、请求方法以及响应格式等内容,帮助开发者快速掌握如何有效地调用API来实现所需的功能。此外,还可以关注腾讯开放平台上有关于Web Services API的信息,这里不仅有针对地图服务的具体指导[^2],也可能涵盖了更多关于音乐服务的内容。 #### 利用第三方聚合服务简化接入过程 考虑到实际操作中的复杂性和多变性,借助像musicApi这样的第三方聚合服务也是一种高效的选择。这类服务往往提供了更加友好易用的接口设计,并且会不断优化其产品以适应最新的市场需求和技术趋势。因此,在某些情况下,即使没有深入研究原生API细节也能够顺利完成项目的开发工作。 ```python import requests def get_music_info(api_key, song_name): url = f"https://api.music.com/search?apikey={api_key}&q={song_name}" response = requests.get(url) if response.status_code == 200: data = response.json() return data['result'] else: raise Exception("Failed to fetch music info") # Example usage of the function with a hypothetical API key and song name. try: result = get_music_info('your_api_key_here', 'Despacito') print(result) except Exception as e: print(e) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值