mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
282 字
1 分钟
通过歌曲名获取QQ音乐原文+翻译歌词
2026-01-19
无标签

搜索api#

这一步主要是通过歌曲名获取到歌曲的id以及标识符

搜索接口 https://u.y.qq.com/cgi-bin/musicu.fcg

请求头设置

Host: u.y.qq.com
User-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 requests
import 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.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

该接口接收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音乐原文翻译歌词/
作者
小白
发布于
2026-01-19
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录