282 字
1 分钟
通过歌曲名获取QQ音乐原文+翻译歌词
搜索api
这一步主要是通过歌曲名获取到歌曲的id以及标识符
搜索接口 https://u.y.qq.com/cgi-bin/musicu.fcg
请求头设置
Host: u.y.qq.comUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)请求参数 该接口接收JSON格式的POST数据,主要参数如下
{ "comm": { "ct": "19", "cv": "1873", "uin": "0" }, "music.search.SearchCgiService": { "method": "DoSearchForQQMusicDesktop", "module": "music.search.SearchCgiService", "param": { "grp": 1, "num_per_page": 40, "page_num": 1, "query": "歌手 - 歌曲名", "search_type": 0 } }}其中
music.search.SearchCgiService.param.query 填写歌曲名 推荐前面加上歌手以实现更精确的匹配
代码示例:
import requestsimport json
def search_song(keyword, page=1, page_size=40): url = "https://u.y.qq.com/cgi-bin/musicu.fcg"
# 请求头 headers = { "Host": "u.y.qq.com", "User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)", "Content-Type": "application/json" }
# POST 的 JSON 数据 payload = { "comm": { "ct": "19", "cv": "1873", "uin": "0" }, "music.search.SearchCgiService": { "method": "DoSearchForQQMusicDesktop", "module": "music.search.SearchCgiService", "param": { "grp": 1, "num_per_page": page_size, "page_num": page, "query": keyword, "search_type": 0 } } }
# 发送 POST 请求 response = requests.post( url, headers=headers, data=json.dumps(payload) )
# 返回 JSON 结果 return response.json()返回的格式如下
{ "music.search.SearchCgiService": { "data": { "body": { "song": { "list": [ { "name": "歌曲名", "mid": "歌曲MID", "id": "歌曲ID", "singer": [ { "name": "歌手名" } ], "album": { "name": "专辑名" } } ] } } } }}我们需要使用的是歌曲 MID 以及歌曲 ID
示例提取:
first_song = ( result["music.search.SearchCgiService"] ["data"] ["body"] ["song"] ["list"][0])
song_mid = first_song["mid"]song_id = first_song["id"]
print("歌曲 MID:", song_mid)print("歌曲 ID :", song_id)获取原文加歌词
我们需要使用上一步获取到的 MID 和 ID 来获取原文以及歌词
歌词接口 https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg
请求头设置
Origin: https://y.qq.comReferer: https://y.qq.com/n/ryqq/playerUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36该接口接收GET请求 参数如下
请求参数:
-
songmid: 歌曲的MID标识符 -
musicid: 歌曲ID -
format: 固定为json -
g_tk: 固定为5381
songmid填写上一步获取到的MID;musicid填写上一步获取到的歌曲ID
示例请求代码
def get_lyric(song_mid, song_id): url = "https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg"
# GET 请求参数 params = { "songmid": song_mid, "musicid": song_id, "format": "json", "g_tk": "5381" }
# 请求头 headers = { "Origin": "https://y.qq.com", "Referer": "https://y.qq.com/n/ryqq/player", "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/102.0.5005.63 Safari/537.36" ) }
response = requests.get(url, params=params, headers=headers) data = response.json()返回如以下格式
{ "lyric": "Base64编码的歌词内容", "trans": "Base64编码的翻译歌词内容(可能为空)"}该格式十分整洁 只需要获取lyric并解码Base64即可得到原文+时间戳 标准lrc格式
按需提取trans作为翻译+时间戳 同样是标准lrc格式
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
通过歌曲名获取QQ音乐原文+翻译歌词
https://www.showby.top/posts/2026-01-19-通过歌曲名获取qq音乐原文翻译歌词/ 部分信息可能已经过时
相关文章 智能推荐





