前言
使用Node.js调用QQ音乐网页端的Api接口,不太稳定,企鹅爸爸随时可能会改,不过因为本站用到因此会持续维护更新。
这几个接口本意是用于个人学习,获取推荐自己的歌单,所以开放出来,请勿商用!
1、根据QQ号获取歌单
地址:https://api.timelessq.com/music/tencent/cdList
1.1、请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
uid
|
query
|
integer
|
是
|
示例值:804093032
QQ号码
|
1.2、示例代码
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.timelessq.com/music/tencent/cdList',
params: {
uid: 804093032
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
1.3、响应示例
{
"errno": 0,
"errmsg": "",
"data": {
"uid": 804093032, // QQ号码
"nickname": "Timeless", // 昵称
"avatar": "//q1.qlogo.cn/g?b=qq&s=100&nk=804093032", // 头像
"total": 6, // 歌单总数
"lists": [
{
"tid": 5238528691, // 歌单tid
"name": "纯音乐", // 歌单名称
"cover": "http://y.gtimg.cn/music/photo_new/T002R300x300M000000Ry6aJ0BrLMn.jpg?n=1", // 歌单封面
"songCount": 19, // 歌曲总数
"playCount": 9 // 播放总数
},
{
"tid": 3602491623,
"name": "英文",
"cover": "http://y.gtimg.cn/music/photo_new/T002R300x300M0000025nt8m42OADw.jpg?n=1",
"songCount": 83,
"playCount": 4
},
{
"tid": 3602478816,
"name": "06年至今华语",
"cover": "http://qpic.y.qq.com/music_cover/cKfAKDC7zjXlIAOgY5fBLVxWsqBb6LomWAqDTHY3iaUxHx903p9xuCw/300?n=1",
"songCount": 235,
"playCount": 1392
},
{
"tid": 3602478179,
"name": "动漫",
"cover": "http://qpic.y.qq.com/music_cover/cKfAKDC7zjXlIAOgY5fBLXAfuAHTGMCWiaaAwInrxJLd54Mq7iaR7auw/300?n=1",
"songCount": 63,
"playCount": 257
},
{
"tid": 1207922987,
"name": "国风古风",
"cover": "http://qpic.y.qq.com/music_cover/cKfAKDC7zjXlIAOgY5fBLaUibb5YKBlwkqQvcA6vPzwPiaJtkIlN1FeQ/300?n=1",
"songCount": 120,
"playCount": 4921
},
{
"tid": 1207922986,
"name": "我喜欢"
}
]
}
}
2、根据QQ号获取歌单
地址:https://api.timelessq.com/music/tencent/songList
2.1、请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
disstid
|
query
|
integer
|
是
|
示例值:1207922987
歌单tid
|
2.2、示例代码
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.timelessq.com/music/tencent/songList',
params: {
disstid: 1207922987
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
2.3、响应示例
{
"errno": 0,
"errmsg": "",
"data": {
"disstid": "1207922987", // 歌单tid
"dissname": "国风古风", // 歌单名称
"nickname": "Timeless",
"cover": "http://qpic.y.qq.com/music_cover/cKfAKDC7zjXlIAOgY5fBLaUibb5YKBlwkqQvcA6vPzwPiaJtkIlN1FeQ/300?n=1", // 歌单封面
"desc": "书籍和音乐难以分享", // 歌单描述
"tags": [ // 标签
"中国风",
"UP主",
"国语"
],
"playCount": 4921, // 播放次数
"songCount": 120, // 歌曲数量
"songlist": [ // 歌曲列表
{
"songmid": "003KNS1k4GFVFF", // 歌曲mid
"songname": "《凡人》段奥娟:任我 跌跌宕宕,浮浮沉沉 过一生", // 歌曲名称
"interval": 258, // 歌曲时长 (秒)
"singer": [ // 歌手
{
"id": 9140055,
"mid": "004aME4e1QA4Wy",
"name": "宝藏挖掘机"
}
],
"albumcover": "", // 专辑封面
"albumname": "", // 专辑名称
"albumdesc": "", // 专辑描述
"free": true // 是否免费播放
},
{
"songmid": "000wwOOX2dQqj1",
"songname": "海底",
"interval": 252,
"singer": [
{
"id": 5396406,
"mid": "000cCDsH288knt",
"name": "阿萨Aza"
},
{
"id": 4591514,
"mid": "002xLuvw29QiEf",
"name": "艾因Eine"
}
],
"albumcover": "",
"albumname": "",
"albumdesc": "",
"free": true
},
{
"songmid": "003bBhOx11Y8Qv",
"songname": "归期",
"interval": 279,
"singer": [
{
"id": 2363307,
"mid": "002uRtrh0zTUHw",
"name": "钱润玉"
}
],
"albumcover": "https://y.gtimg.cn/music/photo_new/T002R300x300M000001PNKDm2Tqe06.jpg?max_age=2592000",
"albumname": "凡人修仙传 第二季 动画原声带",
"albumdesc": "《凡人修仙传》插曲",
"free": true
}
]
}
}
3、根据歌曲id获取歌曲文件地址
地址:https://api.timelessq.com/music/tencent/songUrl
3.1、请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
songmid
|
query
|
string
|
是
|
示例值:000wwOOX2dQqj1
歌曲mid
|
3.2、示例代码
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.timelessq.com/music/tencent/songUrl',
params: {
songmid: '000wwOOX2dQqj1'
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
3.3、响应示例
{
"errno": 0,
"errmsg": "",
"data": [
{
"songmid": "000wwOOX2dQqj1", // 歌曲mid
"url": "http://ws.stream.qqmusic.qq.com/C400003OUqxv3cUnAd.m4a?guid=5768351945&vkey=AD5BE6DF2A734F2B6C5EE68560E99F5F497991D4732234C3825A6E749E09CE4248942C8B3150387E225A0F1A0BDD8BE512BF4C2C94D9B5F1&uin=&fromtag=120032" // 歌曲地址
}
]
}
4、根据歌曲id获取歌词
地址:https://api.timelessq.com/music/tencent/lyric
4.1、请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
songmid
|
query
|
string
|
是
|
示例值:000wwOOX2dQqj1
歌曲mid
|
4.2、示例代码
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.timelessq.com/music/tencent/lyric',
params: {
songmid: '000wwOOX2dQqj1'
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
4.3、响应示例
{
"errno": 0,
"errmsg": "",
"data": {
"lyric": "[ti:海底]\n[ar:阿萨Aza/艾因Eine/艾因Eine]\n[al:]\n[by:]\n[offset:0]\n[00:00.00]海底 - 阿萨Aza/艾因Eine\n[00:23.06]一个猎人她走上海岸\n[00:30.15]\n[00:30.85]潮涌潮枯\n[00:34.14]\n[00:34.80]故乡总在呼唤\n[00:38.38]她的路在身前\n[00:40.63]背负所有苦难\n[00:45.14]\n[00:45.94]她的路还长远\n[00:48.44]有浓雾弥漫\n[00:52.42]\n[00:53.25]她其实看不清\n[00:57.07]未来要往何处去\n[01:01.52]循着咸腥海风\n[01:03.84]踏入一座遗迹\n[01:08.71]\n[01:09.26]这是座死气沉沉的城市\n[01:11.62]街道都一个样子\n[01:13.64]衔着红花的小鸟转身躲进巷子\n[01:16.84]到处是行尸走肉的人\n[01:19.48]甘愿苟且偷生\n[01:21.42]可是人性犹在\n[01:22.82]\n[01:24.64]她说她不敢在大地上流血\n[01:28.46]招致不幸摧毁珍视的一切\n[01:32.32]永远孑然一身\n[01:34.68]与孤独为伴\n[01:38.51]\n[01:41.05]大海的歌谣\n[01:42.77]总在夜里\n[01:43.75]轻轻哼起\n[01:44.86]那熟悉的旋律\n[01:46.67]有什么被唤醒\n[01:48.50]于是她抱起拉琴\n[01:50.51]浪花为她指路\n[01:52.36]身着一袭红裙\n[01:54.14]她不为谁止步\n[01:55.89]\n[01:56.41]人们都说她古怪\n[01:58.08]总是捉摸不定\n[01:59.75]\n[02:00.32]却不知腐败\n[02:01.90]伊比利亚仍然一意孤行\n[02:04.20]危险不断在接近\n[02:05.69]将审判的剑握紧不容任何犹豫\n[02:08.11]贯彻你所认可的正义\n[02:10.06]去看清去怀疑\n[02:11.75]\n[02:15.42]一个歌者她回到海岸\n[02:22.69]\n[02:23.25]路在身前\n[02:26.25]\n[02:26.92]无需哀叹\n[02:30.71]周身鱼群游弋\n[02:32.88]血亲在呼唤\n[02:36.59]\n[02:38.11]歌声漫过天际\n[02:40.61]她在将谁找寻\n[02:45.77]到处是苟延残喘的生灵\n[02:48.35]偷换写好的命运\n[02:50.45]衔着红花的小鸟还困在囚笼里\n[02:53.58]击溃道貌岸然的庄严\n[02:56.13]时机恰好相见\n[02:58.15]深海猎人血脉相连\n[03:00.70]\n[03:01.54]祈祷时群星落寞不敢睁眼\n[03:04.66]\n[03:05.21]落泪时夜晚为她展露笑颜\n[03:08.50]\n[03:09.18]当她不在悲叹\n[03:11.39]故友在眼前\n[03:14.94]\n[03:20.22]潮涌起潮退去\n[03:24.12]抹去深浅足迹\n[03:28.06]潮退去又涌起\n[03:31.92]静谧笼罩废墟\n[03:35.74]潮涌起潮退去\n[03:38.86]\n[03:39.50]困不住搁浅的鲸\n[03:42.91]\n[03:43.42]我就站在这里\n[03:46.70]\n[03:47.28]与命运并驾齐驱", // 歌词
"tlyric": "" // 歌词翻译
}
}
5、歌曲搜索
地址:https://api.timelessq.com/music/tencent/search
5.1、请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
keyword
|
query
|
string
|
是
|
示例值:上里与手抄卷
歌曲名关键字
|
page
|
query
|
integer
|
否
|
分页
|
pageSize
|
query
|
integer
|
否
|
每页个数
|
5.2、示例代码
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.timelessq.com/music/tencent/search?keyword=上里与手抄卷&page=1&pageSize=10',
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
5.3、响应示例
{
"errno": 0,
"errmsg": "",
"data": {
"total": 156, // 总数
"list": [
{
"songmid": "000tTYcw1k3e9n", // 歌曲mid
"songname": "上里与手抄卷", // 歌曲名称
"interval": 318, // 歌曲时长
"singer": [ // 歌手
{
"id": 1011983,
"name": "双笙 (陈元汐)"
},
{
"id": 166322,
"name": "闫东炜"
}
],
"albumcover": "https://y.gtimg.cn/music/photo_new/T002R300x300M0000036CpxM3QalIa.jpg?max_age=2592000", // 专辑图片
"albumname": "上里与手抄卷", // 专辑名称
"albumdesc": "", // 专辑描述
"free": true // 是否免费
}
]
}
}
对咱歌单感兴趣的小伙伴可以到这看看 https://www.timelessq.com/tool/music
侵权请联系删除
还没有评论,快来抢第一吧