洛雪音乐API
lx-music-desktop API 文档
本文档详细记录了 lx-music-desktop 项目使用的所有音乐平台 API。
概述
项目代码位置:src/renderer/utils/musicSdk/
每个音乐源都有独立的目录,包含以下模块:
musicSearch.js- 音乐搜索hotSearch.js- 热门搜索songList.js- 歌单相关leaderboard.js- 排行榜comment.js- 评论lyric.js- 歌词pic.js- 封面图片index.js- 模块入口
酷狗音乐 (kg)
代码目录:src/renderer/utils/musicSdk/kg/
1. 音乐搜索 API
接口地址:
GET https://songsearch.kugou.com/song_search_v2
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| keyword | string | 搜索关键词 |
| page | number | 页码 |
| pagesize | number | 每页数量 |
| userid | number | 用户ID (默认0) |
| platform | string | 平台 (WebFilter) |
| filter | number | 过滤条件 (2) |
| iscorrection | number | 是否纠错 (1) |
| privilege_filter | number | 权限过滤 (0) |
| area_code | number | 地区代码 (1) |
示例:
const url = `https://songsearch.kugou.com/song_search_v2?keyword=${encodeURIComponent(keyword)}&page=${page}&pagesize=${limit}&userid=0&platform=WebFilter&filter=2&iscorrection=1&privilege_filter=0&area_code=1`
响应字段:
{
"error_code": 0,
"data": {
"total": 1000,
"lists": [
{
"SongName": "歌曲名",
"Singers": [{"name": "歌手"}],
"AlbumName": "专辑名",
"AlbumID": "12345",
"Audioid": "音频ID",
"Duration": 240,
"FileHash": "哈希值",
"FileSize": 3500000,
"HQFileHash": "高品质哈希",
"HQFileSize": 8000000,
"SQFileHash": "无损哈希",
"SQFileSize": 25000000
}
]
}
}
2. 热门搜索 API
接口地址:
GET http://gateway.kugou.com/api/v3/search/hot_tab
请求头:
{
'dfid': '1ssiv93oVqMp27cirf2CvoF1',
'mid': '156798703528610303473757548878786007104',
'clienttime': 1584257267,
'x-router': 'msearch.kugou.com',
'user-agent': 'Android9-AndroidPhone-10020-130-0-searchrecommendprotocol-wifi',
'kg-rc': 1,
}
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| signature | string | 签名 |
| appid | number | 应用ID (1005) |
| clientver | number | 客户端版本 |
| plat | number | 平台 (0) |
响应字段:
{
"errcode": 0,
"data": {
"list": [
{
"keywords": [
{"keyword": "热搜词1"},
{"keyword": "热搜词2"}
]
}
]
}
}
3. 排行榜 API
排行榜列表:
GET http://mobilecdnbj.kugou.com/api/v5/rank/list
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| version | number | 版本号 (9108) |
| plat | number | 平台 (0) |
| showtype | number | 显示类型 (2) |
| parentid | number | 父级ID (0) |
| apiver | number | API版本 (6) |
| area_code | number | 地区代码 (1) |
| withsong | number | 是否带歌曲 (1) |
排行榜详情:
GET http://mobilecdnbj.kugou.com/api/v3/rank/song
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| version | number | 版本号 |
| ranktype | number | 排行类型 (1) |
| plat | number | 平台 |
| pagesize | number | 每页数量 |
| area_code | number | 地区代码 |
| page | number | 页码 |
| rankid | number | 排行榜ID |
常用排行榜ID:
| ID | 名称 |
|---|---|
| 8888 | TOP500 |
| 6666 | 飙升榜 |
| 59703 | 蜂鸟流行音乐榜 |
| 52144 | 抖音热歌榜 |
| 52767 | 快手热歌榜 |
| 24971 | DJ热歌榜 |
| 23784 | 网络红歌榜 |
4. 歌单 API
歌单分类/列表:
GET http://www2.kugou.kugou.com/yueku/v9/special/getSpecial
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| is_ajax | number | 是否AJAX请求 (1) |
| cdn | string | CDN |
| t | string | 排序ID |
| c | string | 分类ID |
| p | number | 页码 |
排序类型:
| ID | 名称 |
|---|---|
| 5 | 推荐 |
| 6 | 最热 |
| 7 | 最新 |
| 3 | 热藏 |
| 8 | 飙升 |
推荐歌单:
POST http://everydayrec.service.kugou.com/guess_special_recommend
请求体:
{
"appid": 1001,
"clienttime": 1566798337219,
"clientver": 8275,
"key": "f1f93580115bb106680d2375f8032d96",
"mid": "21511157a05844bd085308bc76ef3343",
"platform": "pc",
"userid": "262643156",
"return_min": 6,
"return_max": 15
}
歌单详情:
GET http://www2.kugou.kugou.com/yueku/v9/special/single/{specialId}-5-9999.html
5. 评论 API
5.1 最新评论
接口地址:
GET http://m.comment.service.kugou.com/r/v1/rank/newest
5.2 热门评论
接口地址:
GET http://m.comment.service.kugou.com/r/v1/rank/topliked
请求参数:
| 参数 | 类型 | 必填 | 说明 | 参数来源 |
|---|---|---|---|---|
| dfid | string | 是 | 设备ID (可固定0) | 固定值 |
| mid | string | 是 | 用户ID | 固定值 |
| clienttime | number | 是 | 客户端时间戳 | Date.now() |
| uuid | string | 是 | UUID (可固定0) | 固定值 |
| extdata | string | 是 | 歌曲文件hash | songInfo.hash ← 搜索结果的 FileHash |
| appid | number | 是 | 应用ID (固定1005) | 固定值 |
| code | string | 是 | 验证码 | 固定值 fc4be23b4e972707f36b8a828a93ba8a |
| schash | string | 是 | 歌曲文件hash | songInfo.hash ← 搜索结果的 FileHash |
| clientver | number | 是 | 客户端版本 | 固定值 11409 |
| p | number | 是 | 页码 | 用户传入参数 |
| pagesize | number | 是 | 每页数量 | 用户传入参数 |
| ver | number | 是 | 版本 (固定10) | 固定值 |
| kugouid | string | 是 | 酷狗用户ID (可固定0) | 固定值 |
| signature | string | 是 | 签名 | signatureParams(params) 计算 |
5.3 回复评论
接口地址:
GET http://comment.service.kugou.com/index.php?r=commentsv2/getReplyWithLike
请求参数:
| 参数 | 类型 | 说明 | 参数来源 |
|---|---|---|---|
| childrenid | string | 歌曲ID | songInfo.songmid ← 搜索结果的 Audioid |
| tid | string | 评论ID | 评论列表响应的 item.id |
| p | number | 页码 | 用户传入参数 |
| pagesize | number | 每页数量 | 用户传入参数 |
6. 歌词 API
酷狗歌词获取需要两步:先搜索歌词获取歌词ID和accessKey,然后下载歌词内容。
6.1 歌词搜索
接口地址:
GET http://lyrics.kugou.com/search
请求参数:
| 参数 | 类型 | 必填 | 说明 | 参数来源 |
|---|---|---|---|---|
| ver | number | 是 | 版本号 (固定值: 1) | 固定值 |
| man | string | 是 | 是否手动搜索 (固定值: yes) | 固定值 |
| client | string | 是 | 客户端类型 (固定值: pc) | 固定值 |
| keyword | string | 是 | 歌曲名称 (需URL编码) | songInfo.name ← 搜索结果的 SongName |
| hash | string | 是 | 歌曲文件哈希值 | songInfo.hash ← 搜索结果的 FileHash |
| timelength | number | 是 | 歌曲时长 (单位: 秒) | songInfo._interval ← 搜索结果的 Duration |
| lrctxt | number | 否 | 是否返回歌词文本 (1=是) | 固定值 |
请求头:
{
'KG-RC': 1,
'KG-THash': 'expand_search_manager.cpp:852736169:451',
'User-Agent': 'KuGou2012-9020-ExpandSearchManager',
}
完整示例:
// 假设从搜索结果获取到的歌曲信息
const songInfo = {
name: '晴天', // 来自搜索API响应的 SongName
hash: 'abc123def456', // 来自搜索API响应的 FileHash
_interval: 269, // 来自搜索API响应的 Duration (秒)
}
// 构建歌词搜索URL
const url = `http://lyrics.kugou.com/search?ver=1&man=yes&client=pc&keyword=${encodeURIComponent(songInfo.name)}&hash=${songInfo.hash}&timelength=${songInfo._interval}&lrctxt=1`
响应字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| candidates | array | 歌词候选列表 |
| candidates[].id | string | 歌词ID (用于下载) |
| candidates[].accesskey | string | 访问密钥 (用于下载) |
| candidates[].krctype | number | 歌词类型 (1=krc逐字歌词) |
| candidates[].contenttype | number | 内容类型 |
歌词格式判断逻辑:
// 如果 krctype == 1 且 contenttype != 1,使用 krc 格式,否则使用 lrc 格式
const fmt = (info.krctype == 1 && info.contenttype != 1) ? 'krc' : 'lrc'
6.2 歌词下载
接口地址:
GET http://lyrics.kugou.com/download
请求参数:
| 参数 | 类型 | 必填 | 说明 | 参数来源 |
|---|---|---|---|---|
| ver | number | 是 | 版本号 (固定值: 1) | 固定值 |
| client | string | 是 | 客户端类型 (固定值: pc) | 固定值 |
| id | string | 是 | 歌词ID | 歌词搜索响应的 candidates[0].id |
| accesskey | string | 是 | 访问密钥 | 歌词搜索响应的 candidates[0].accesskey |
| fmt | string | 是 | 歌词格式 (lrc/krc) | 根据 krctype 和 contenttype 判断 |
| charset | string | 是 | 字符集 (固定值: utf8) | 固定值 |
请求头: (同歌词搜索)
歌词解码逻辑:
// lrc格式: 直接Base64解码
if (body.fmt === 'lrc') {
const lyric = Buffer.from(body.content, 'base64').toString('utf-8')
}
// krc格式: 需要额外解密处理 (decodeKrc函数位于 src/common/utils/lyricUtils/kg.js)
6.3 完整调用流程
音乐搜索API → 获取 songInfo (name, hash, _interval)
↓
歌词搜索API → 参数: keyword=name, hash=hash, timelength=_interval
↓ 返回: id, accesskey, krctype, contenttype
歌词下载API → 参数: id, accesskey, fmt
↓ 返回: Base64编码的歌词内容
解码歌词 → lrc: Base64解码 / krc: Base64解码+decodeKrc()
songInfo 对象结构 (来自音乐搜索API):
const songInfo = {
name: '晴天', // SongName - 用于歌词搜索keyword
hash: 'abc123def456789...', // FileHash - 用于歌词搜索hash
_interval: 269, // Duration - 用于歌词搜索timelength (秒)
interval: '04:29', // 格式化后的时长
singer: '周杰伦',
albumId: '12345',
songmid: '67890',
source: 'kg',
}
酷我音乐 (kw)
代码目录:src/renderer/utils/musicSdk/kw/
1. 音乐搜索 API
接口地址:
GET http://search.kuwo.cn/r.s
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| client | string | 客户端 (kt) |
| all | string | 搜索关键词 |
| pn | number | 页码 (从0开始) |
| rn | number | 每页数量 |
| uid | string | 用户ID |
| ver | string | 版本 (kwplayer_ar_9.2.2.1) |
| vipver | number | VIP版本 (1) |
| show_copyright_off | number | 显示无版权 (1) |
| newver | number | 新版本 (1) |
| ft | string | 类型 (music) |
| cluster | number | 聚合 (0) |
| strategy | number | 策略 (2012) |
| encoding | string | 编码 (utf8) |
| rformat | string | 返回格式 (json) |
| vermerge | number | 版本合并 (1) |
| mobi | number | 移动端 (1) |
| issubtitle | number | 是否有字幕 (1) |
示例:
const url = `http://search.kuwo.cn/r.s?client=kt&all=${encodeURIComponent(keyword)}&pn=${page - 1}&rn=${limit}&uid=794762570&ver=kwplayer_ar_9.2.2.1&vipver=1&show_copyright_off=1&newver=1&ft=music&cluster=0&strategy=2012&encoding=utf8&rformat=json&vermerge=1&mobi=1&issubtitle=1`
响应字段:
{
"TOTAL": "1000",
"SHOW": "30",
"abslist": [
{
"SONGNAME": "歌曲名",
"ARTIST": "歌手",
"ALBUM": "专辑名",
"ALBUMID": "专辑ID",
"MUSICRID": "MUSIC_12345",
"DURATION": 240,
"N_MINFO": "level:ff,bitrate:2000,format:flac,size:25.5M;..."
}
]
}
2. 歌曲信息 API
接口地址:
GET http://www.kuwo.cn/api/www/music/musicInfo
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| mid | string | 歌曲ID |
响应:
{
"code": 200,
"data": {
"name": "歌曲名",
"artist": "歌手",
"album": "专辑",
"pic": "封面URL"
}
}
3. 热门搜索 API
接口地址:
GET http://www.kuwo.cn/api/www/search/searchKey
4. 歌词 API
酷我歌词使用特殊的加密请求格式。
接口地址:
GET http://newlyric.kuwo.cn/newlyric.lrc?{加密参数}
加密参数构建:
// songmid 来自搜索结果的 MUSICRID (需去掉 "MUSIC_" 前缀)
const params = `user=12345,web,web,web&requester=localhost&req=1&rid=MUSIC_${songInfo.songmid}&lrcx=1`
// 使用 yeelion 密钥进行异或加密后Base64编码
参数来源:
| 参数 | 来源 |
|---|---|
| rid | songInfo.songmid ← 搜索结果的 MUSICRID 去掉 MUSIC_ 前缀 |
响应处理:
- 响应内容需要先Base64解码
- 然后使用
decodeLyric()函数解密 (位于kw/util.js)
5. 评论 API
接口地址(最新评论):
GET http://ncomment.kuwo.cn/com.s?type=get_comment
接口地址(热门评论):
GET http://ncomment.kuwo.cn/com.s?type=get_rec_comment
请求参数:
| 参数 | 类型 | 说明 | 参数来源 |
|---|---|---|---|
| f | string | 固定web | 固定值 |
| type | string | 请求类型 | get_comment 或 get_rec_comment |
| sid | string | 歌曲ID | songInfo.songmid ← 搜索结果 MUSICRID 去掉前缀 |
| start | number | 起始位置 | limit * (page - 1) |
| count | number | 数量 | 用户传入参数 |
腾讯音乐/QQ音乐 (tx)
代码目录:src/renderer/utils/musicSdk/tx/
1. 音乐搜索 API
接口地址:
POST https://u.y.qq.com/cgi-bin/musicu.fcg
请求头:
{
'User-Agent': 'QQMusic 14090508(android 12)'
}
请求体:
{
"comm": {
"ct": "11",
"cv": "14090508",
"v": "14090508",
"tmeAppID": "qqmusic",
"phonetype": "EBG-AN10",
"os_ver": "12"
},
"req": {
"module": "music.search.SearchCgiService",
"method": "DoSearchForQQMusicMobile",
"param": {
"search_type": 0,
"query": "搜索关键词",
"page_num": 1,
"num_per_page": 30,
"highlight": 0,
"nqc_flag": 0,
"multi_zhida": 0,
"cat": 2,
"grp": 1
}
}
}
响应字段:
{
"code": 0,
"req": {
"code": 0,
"data": {
"body": {
"item_song": [
{
"name": "歌曲名",
"singer": [{"name": "歌手", "mid": "xxx"}],
"album": {"name": "专辑", "mid": "xxx"},
"interval": 240,
"id": 12345,
"mid": "xxx",
"file": {
"media_mid": "xxx",
"size_128mp3": 3500000,
"size_320mp3": 8000000,
"size_flac": 25000000
}
}
]
},
"meta": {
"estimate_sum": 1000
}
}
}
}
2. 热门搜索 API
接口地址:
GET https://c.y.qq.com/splcloud/fcgi-bin/gethotkey.fcg
3. 排行榜 API
接口地址:
POST https://u.y.qq.com/cgi-bin/musicu.fcg
请求体(获取排行榜列表):
{
"req": {
"module": "musicToplist.ToplistInfoServer",
"method": "GetAll",
"param": {}
}
}
4. 歌词 API
腾讯音乐歌词需要使用 songId(数字ID),如果只有 songmid 需要先调用 getMusicInfo 获取。
接口地址:
POST https://u.y.qq.com/cgi-bin/musicu.fcg
请求体:
{
comm: { ct: '19', cv: '1859', uin: '0' },
req: {
method: 'GetPlayLyricInfo',
module: 'music.musichallSong.PlayLyricInfo',
param: {
format: 'json',
crypt: 1,
songID: songId, // 来自搜索结果的 id 或 getMusicInfo(songmid)
qrc: 1,
trans: 1,
roma: 1,
}
}
}
参数来源:
| 参数 | 来源 |
|---|---|
| songID | songInfo.songId ← 搜索结果的 id;如无此字段需调用 getMusicInfo(songmid) 获取 |
响应字段:
| 字段 | 说明 |
|---|---|
| req.data.lyric | 歌词内容 (需解密) |
| req.data.trans | 翻译歌词 |
| req.data.roma | 罗马音歌词 |
5. 评论 API
接口地址(普通评论):
POST http://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg
接口地址(热门评论):
POST https://u.y.qq.com/cgi-bin/musicu.fcg
请求参数(普通评论):
| 参数 | 类型 | 说明 | 参数来源 |
|---|---|---|---|
| topid | string | 歌曲ID(数字) | songInfo.songId ← 搜索结果 id 或 getMusicInfo(songmid) |
| biztype | number | 业务类型 (固定1) | 固定值 |
| cmd | number | 命令类型 (8=普通,9=热门) | 固定值 |
| pagenum | number | 页码 (从0开始) | page - 1 |
| pagesize | number | 每页数量 | 用户传入参数 |
请求参数(热门评论):
{
req: {
module: 'music.globalComment.CommentRead',
method: 'GetHotCommentList',
param: {
BizType: 1,
BizId: String(songId), // 来自搜索结果或getMusicInfo
PageSize: limit,
PageNum: page - 1,
}
}
}
6. 封面图片
专辑封面:
https://y.gtimg.cn/music/photo_new/T002R500x500M000{albumMid}.jpg
albumMid← 搜索结果的album.mid
歌手封面:
https://y.gtimg.cn/music/photo_new/T001R500x500M000{singerMid}.jpg
singerMid← 搜索结果的singer[0].mid
网易云音乐 (wy)
代码目录:src/renderer/utils/musicSdk/wy/
注意: 网易云音乐 API 使用 weapi/eapi 加密,需要特殊处理。加密工具位于
utils/crypto.js
1. 音乐搜索 API
接口地址:
POST /api/cloudsearch/pc (通过 eapiRequest 加密)
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| s | string | 搜索关键词 |
| type | number | 搜索类型 (1=单曲) |
| limit | number | 每页数量 |
| total | boolean | 是否返回总数 |
| offset | number | 偏移量 |
搜索类型:
| type | 说明 |
|---|---|
| 1 | 单曲 |
| 10 | 专辑 |
| 100 | 歌手 |
| 1000 | 歌单 |
| 1002 | 用户 |
| 1004 | MV |
| 1006 | 歌词 |
| 1009 | 电台 |
| 1014 | 视频 |
2. 热门搜索 API
接口地址:
POST https://music.163.com/weapi/search/hot
需要 weapi 加密。
3. 排行榜 API
排行榜详情:
POST https://music.163.com/weapi/toplist/detail
4. 歌单 API
歌单列表:
POST https://music.163.com/weapi/playlist/list
歌单详情:
POST https://music.163.com/weapi/v6/playlist/detail
5. 评论 API
最新评论:
POST https://music.163.com/weapi/comment/resource/comments/get
请求参数(加密前):
{
cursor: 时间戳,
offset: 0,
orderType: 1,
pageNo: 1,
pageSize: 20,
rid: `R_SO_4_${songmid}`, // songmid 来自搜索结果的 id
threadId: `R_SO_4_${songmid}` // 同上
}
参数来源:
| 参数 | 来源 |
|---|---|
| songmid | songInfo.songmid ← 搜索结果的 id (网易云歌曲ID是纯数字) |
热门评论:
POST https://music.163.com/weapi/v1/resource/hotcomments/R_SO_4_{songmid}
请求参数(加密前):
{
rid: `R_SO_4_${songmid}`, // songmid ← 搜索结果的 id
limit: 100,
offset: 0,
beforeTime: Date.now()
}
6. 歌词 API
接口地址(新版,带逐字歌词):
POST https://interface3.music.163.com/eapi/song/lyric/v1
请求参数(eapi加密):
| 参数 | 类型 | 说明 | 参数来源 |
|---|---|---|---|
| id | number | 歌曲ID | songInfo.songmid ← 搜索结果的 id |
| cp | boolean | 固定false | 固定值 |
| tv | number | 翻译版本 (0) | 固定值 |
| lv | number | 歌词版本 (0) | 固定值 |
| rv | number | 罗马音版本 (0) | 固定值 |
| kv | number | 卡拉OK版本 (0) | 固定值 |
| yv | number | 逐字歌词版本 (0) | 固定值 |
| ytv/yrv | number | 逐字翻译/罗马音 (0) | 固定值 |
响应字段:
| 字段 | 说明 |
|---|---|
| lrc.lyric | 普通歌词 |
| tlyric.lyric | 翻译歌词 |
| romalrc.lyric | 罗马音歌词 |
| yrc.lyric | 逐字歌词 |
7. 歌曲详情 API
接口地址:
GET https://music.163.com/api/v3/song/detail
请求参数:
| 参数 | 类型 | 说明 | 参数来源 |
|---|---|---|---|
| c | string | JSON数组 | [{"id":songmid}],songmid ← 搜索结果 id |
咪咕音乐 (mg)
代码目录:src/renderer/utils/musicSdk/mg/
1. 音乐搜索 API
接口地址:
GET https://jadeite.migu.cn/music_search/v3/search/searchAll
请求头:
{
'uiVersion': 'A_music_3.6.1',
'deviceId': deviceId,
'timestamp': timestamp,
'sign': sign,
'channel': '0146921',
'User-Agent': 'Mozilla/5.0 (Linux; U; Android 11.0.0; zh-cn; MI 11 Build/OPR1.170623.032) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
}
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| isCorrect | number | 是否纠错 (0) |
| isCopyright | number | 是否有版权 (1) |
| searchSwitch | string | 搜索开关 (JSON编码) |
| pageSize | number | 每页数量 |
| text | string | 搜索关键词 |
| pageNo | number | 页码 |
| sort | number | 排序 (0) |
| sid | string | 会话ID |
签名算法:
const createSignature = (time, str) => {
const deviceId = '963B7AA0D21511ED807EE5846EC87D20'
const signatureMd5 = '6cdc72a439cef99a3418d2a78aa28c73'
const sign = toMD5(`${str}${signatureMd5}yyapp2d16148780a1dcc7408e06336b98cfd50${deviceId}${time}`)
return { sign, deviceId }
}
响应字段:
{
"code": "000000",
"songResultData": {
"totalCount": 1000,
"resultList": [
[
{
"songId": "xxx",
"copyrightId": "xxx",
"name": "歌曲名",
"singerList": [{"name": "歌手"}],
"album": "专辑名",
"albumId": "xxx",
"duration": 240,
"img1": "封面1",
"img2": "封面2",
"img3": "封面3",
"lrcUrl": "歌词URL",
"audioFormats": [
{"formatType": "PQ", "asize": 3500000},
{"formatType": "HQ", "asize": 8000000},
{"formatType": "SQ", "asize": 25000000},
{"formatType": "ZQ24", "asize": 50000000}
]
}
]
]
}
}
2. 热门搜索 API
接口地址:
GET https://app.c.nf.migu.cn/MIGUM2.0/v1.0/content/hotword.do?ua=Android
3. 歌词 API
咪咕歌词有两种格式:mrc(加密逐字歌词)和lrc(普通歌词),URL直接从搜索结果中获取。
歌词获取流程:
- 从搜索结果获取
mrcUrl、lrcUrl、trcUrl - 优先使用
mrcUrl(需解密),否则使用lrcUrl
参数来源:
| 参数 | 来源 |
|---|---|
| mrcUrl | songInfo.mrcUrl ← 搜索结果的 mrcUrl (加密逐字歌词URL) |
| lrcUrl | songInfo.lrcUrl ← 搜索结果的 lrcUrl (普通歌词URL) |
| trcUrl | songInfo.trcUrl ← 搜索结果的 trcUrl (翻译歌词URL) |
| copyrightId | songInfo.copyrightId ← 搜索结果的 copyrightId (用于获取歌曲详情) |
如果搜索结果没有URL,需要先获取歌曲详情:
GET https://c.musicapp.migu.cn/MIGUM2.0/v1.0/content/resourceinfo.do
请求参数:
| 参数 | 类型 | 说明 | 参数来源 |
|---|---|---|---|
| copyrightId | string | 版权ID | songInfo.copyrightId ← 搜索结果 copyrightId |
4. 封面图片
基础URL:
http://d.musicapp.migu.cn{imgPath}
参数来源:
| 参数 | 来源 |
|---|---|
| imgPath | songInfo.img3 或 img2 或 img1 ← 搜索结果的图片路径 |
公共接口说明
每个音乐源暴露的统一接口
| 方法 | 说明 | 参数 |
|---|---|---|
musicSearch.search(keyword, page, limit) |
音乐搜索 | 关键词、页码、数量 |
hotSearch.getList() |
获取热门搜索词 | 无 |
songList.getList(sortId, tagId, page) |
获取歌单列表 | 排序、标签、页码 |
songList.getListDetail(id, page) |
获取歌单详情 | 歌单ID、页码 |
leaderboard.getBoards() |
获取排行榜列表 | 无 |
leaderboard.getList(bangid, page) |
获取排行榜详情 | 榜单ID、页码 |
comment.getComment(songInfo, page, limit) |
获取评论 | 歌曲信息、页码、数量 |
comment.getHotComment(songInfo, page, limit) |
获取热门评论 | 歌曲信息、页码、数量 |
getLyric(songInfo) |
获取歌词 | 歌曲信息 |
getPic(songInfo) |
获取封面图片 | 歌曲信息 |
getMusicUrl(songInfo, type) |
获取音乐播放链接 | 歌曲信息、品质类型 |
getMusicDetailPageUrl(songInfo) |
获取音乐详情页URL | 歌曲信息 |
音质类型
| 类型 | 说明 |
|---|---|
| 128k | 标准音质 (128kbps MP3) |
| 320k | 高品质 (320kbps MP3) |
| flac | 无损音质 (FLAC) |
| flac24bit | Hi-Res高解析度 (24bit FLAC) |
注意事项
签名/加密: 部分API需要签名或加密处理
- 酷狗:
signatureParams()函数 - 网易云:
weapi()/eapiRequest()加密 - 咪咕:MD5签名
- 酷狗:
请求头: 大部分API需要特定的 User-Agent 和其他请求头
频率限制: 请注意API调用频率,避免被封禁
版权说明: 本文档仅用于学习研究,请勿用于商业用途
更新日志
- 2025-12-27: 初始版本,整理5个音乐源的所有API