python调用QQ音乐API

python调用QQ音乐API

1. 音乐搜索接口、其他接口
2. 获取token
3. 拼接播放地址

先上一份代码:

import requests
import pprint
import json
from selenium import webdriver

# 音乐搜索接口

p, n, w = 1, 5, '碰'
url_1 = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?aggr=1&cr=1&flag_qc=0&p={}&n={}&w={}'.format(p, n, w)
response1 = requests.get(url_1)
# 获取返回参数并且删除多余空格
text = response1.text.strip()                 
# 删除多余的字符使之符合json格式进行转换
j_datas = json.loads(text[9 : len(text) - 1])   
songmid = j_datas['data']['song']['list'][0]['songmid'] # 获取songmid
print('songmid:'+ songmid)

url_2 = 'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?format=json205361747&platform=yqq&cid=205361747&songmid={}&filename=C400{}.m4a&guid=126548448'.format(songmid, songmid)
response2 = requests.get(url_2)
#这个返回参数不会出错,可以直接转换json格式,并获取vkey
vkey = response2.json()['data']['items'][0]['vkey']        
print('vkey:' + vkey)

url_3 = 'http://ws.stream.qqmusic.qq.com/C400{}.m4a?fromtag=0&guid=126548448&vkey={}'.format(songmid, vkey)
borwser = webdriver.Chrome()
borwser.get(url_3)

解析

音乐搜索接口

url:

https://c.y.qq.com/soso/fcgi-bin/client_search_cp?aggr=1&cr=1&flag_qc=0&p=1&n=30&w=碰
  • p:页数,从1开始
  • n:每一页显示的条数
  • w:搜索关键字

通过p和n参数,可以实现分页请求加载。

链接可以放在浏览器上查看返回的数据格式,返回的数据需要进行处理,因为要转为json格式,所以要把callback(这段字符以及最后面的 “)” 这个字段删除,以符合json格式。

下面是返回的参数(不完整):

在这里插入图片描述在这里插入图片描述
参数:

  • curPage:当前页数
  • totalnum:总数
  • list:返回的30条歌曲的数据
    • songname:歌曲名称
    • singer:歌手名称,是个列表结构
    • albumname:专辑名称
    • songmid:歌曲标识
获取token
'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?format=json205361747&platform=yqq&cid=205361747&songmid=0014kBdU3LPmCA&filename=C4000014kBdU3LPmCA.m4a&guid=126548448'
参数:
  • songmid:在歌曲信息中找
  • filename:根据songmid生成C400 + songmid + .m4a
返回参数:

在这里插入图片描述

  • expiration:有效时长
  • vkey:播放歌曲密钥
拼接播放地址
http://ws.stream.qqmusic.qq.com/C4000014kBdU3LPmCA.m4a?fromtag=0&guid=126548448&vkey=286DB371BE286D676A4B0D7ACD2B49CD488389A3EF91B7728F80B52E2B4691CCD8028F5EAEFD4413F91E98D5D3CC7484B3C2C09EC61D131E

vkey:在token中的vkey字段

将播放地址放到浏览器中可以播放

附上代码链接:

https://github.com/SyJarvis/music_api

### 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、付费专栏及课程。

余额充值