10086您好
10086您好
12天前 · 5 人阅读

之前分享了一套某音乐的 api. 有小伙伴提了搜索需求, 就加上了. 嗯

求共同维护

由于个人的力量毕竟有限, 加之 🐧 厂的兄弟们一直致力于升级 api 上. 所以维护过程中出现心有余力不足的情况, 这里盛情邀请有精力且愿意折腾一下的小伙伴们和我一起来维护这个项目, 有兴趣的小伙伴请不吝提出 issue 和 PR.

本项目地址github

接口域名

music.niubishanshan.top

basePath

/api/v2/music

1. 获取首页推荐信息

1.1 功能描述

获取网站首页的推荐信息, 包含顶部轮播和广播

1.2 请求说明

请求说明:
请求方式 GET
请求URL :/recommend

1.3 请求参数

字段字段类型字段说明

1.4 返回结果

{
    "announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
    "errno": 0,
    "msg": "success",
    "data": {
        "slider": [
            "http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1121987.jpg",
            "http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1122653.jpg",
            "http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1121479.jpg",
            "http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1120772.jpg",
            "http://y.gtimg.cn/music/common/upload/MUSIC_FOCUS/1123020.jpg"
        ],
        "radioList": [
            {
                "picUrl": "http://y.gtimg.cn/music/photo/radio/track_radio_199_13_1.jpg",
                "title": "热歌",
                "id": 199
            },
            {
                "picUrl": "http://y.gtimg.cn/music/photo/radio/track_radio_307_13_1.jpg",
                "title": "一人一首招牌歌",
                "id": 307
            }
        ]
    }
}
复制代码

1.5 返回参数

字段字段类型字段说明
announcestring声明文案
errnoint0: 表示没有问题, 其他表示有问题. 详情参考 msg
msgstring接口返回状态描述
dataobject接口返回数据主体
  sliderarray轮播图信息(子条目为 string)
  radioListarray电台列表数据(始终返回两条)
    picUrlstring电台logo
    titlestring电台标题
    iding电台id

1.6 错误状态码

代码健壮的像一头牛, 不会报错~

2. 获取排行榜信息

2.1 功能描述

获取排行榜数据, 获取到的是从各种维度获取的排行版歌单(比如周榜, 月榜...)

2.2 请求说明

请求说明:
请求方式 GET
请求URL :/toplist

2.3 请求参数

字段字段类型字段说明

2.4 返回结果

{
    "announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
    "errno": 0,
    "msg": "success",
    "data": [
        {
            "id": 4,
            "title": "巅峰榜·流行指数",
            "listenCount": 19800000,
            "picUrl": "http://y.gtimg.cn/music/photo_new/T003R300x300M000004DDmku3TdWR9.jpg",
            "songList": [
                {
                    "singerName": "林俊杰",
                    "songName": "不为谁而作的歌",
                    "number": 1
                },
                {
                    "singerName": "林俊杰",
                    "songName": "圣所",
                    "number": 2
                },
                {
                    "singerName": "GAI",
                    "songName": "永不独行",
                    "number": 3
                }
            ]
        },
        ...各种数据...
    ]
}
复制代码

2.5 返回参数

字段字段类型字段说明
announcestring声明文案
errnoint0: 表示没有问题, 其他表示有问题. 详情参考 msg
msgstring接口返回状态描述
dataarray接口返回数据主体
  idint歌单id
  titlestring歌单标题
  listenCountint歌单播放次数
  picUrlstring歌单 logo url
  songListarray歌单中排行榜前三的曲目
    singernamestring歌手名称
    songnamestring歌曲名称
    numberint排行

2.6 错误状态码

代码健壮的像一头牛, 不会报错~

3. 获取歌曲列表

3.1 功能描述

获取指定歌单中的曲目列表

3.2 请求说明

请求说明:
请求方式 GET
请求URL :/songList/{:songListId}

3.3 请求参数

字段字段类型字段说明
songListIdstring歌单id, 就是排行榜中获取的歌单条目的id字段. 用于指定用户选择的歌单

3.4 返回结果

{
    "announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
    "errno": 0,
    "msg": "success",
    "data": {
        "updateTime": "2019-01-10",
        "totalSongNum": 100,
        "topInfo": {
            "picAlbum": "http://imgcache.qq.com/music/photo_new/T002R300x300M000003nbc0602Tgfx.jpg",
            "listName": "巅峰榜·流行指数"
        },
        "songList": [
            {
                "songMid": "002K4xqW4A7m7q",
                "singer": {
                    "singerName": "林俊杰",
                    "singerMid": "001BLpXF2DyJe2"
                },
                "songName": "不为谁而作的歌",
                "songId": 105095766,
                "albumMid": "003nbc0602Tgfx"
            }
            ...各种数据...
        ]
    }
}
复制代码

3.5 返回参数

字段字段类型字段说明
announcestring声明文案
errnoint0: 表示没有问题, 其他表示有问题. 详情参考 msg
msgstring接口返回状态描述
dataobject接口返回数据主体
  updateTimestring更新时间
  totalSongNumint歌单中歌曲数目
  topInfoobject歌单信息
    picAlbumstring歌单封面logo
    listNamestring歌单名称
  songListarray歌曲列表
    songMidstring歌曲id
    singerstring歌手名称
      singerNamestring歌手名称
      singerMidstring歌手媒体 id, 用户获取歌手头像
    songNamestring歌曲名称
    songIdstring歌曲 id, 用于获取歌词
    albumMidstring专辑媒体 id, 用于获取专辑封面 url

3.6 错误状态码

代码健壮的像一头牛, 不会报错~

4. 获取歌曲播放 url

4.1 功能描述

根据歌曲id, 获取播放 url(目前可用)

4.2 请求说明

请求说明:
请求方式 GET
请求URL :/songUrllist/{:songIdList}

4.3 请求参数

字段字段类型字段说明
songIdListstringArray歌曲 id 列表, 需要拼接成 id1,id2,id3,id4 的形式

4.4 返回结果

{
  "announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
  "errno": 0,
  "msg": "success",
  "data": [
      "http://isure.stream.qqmusic.qq.com//C400000Qepff3UyUWO.m4a?guid=5579254314&vkey=70D5522DDF8F35B36B133AA0F85A9C2FA608F2FA85BCBB4EC31CC6A0047CEAB873E9E2B947A6D893C219C65781B9EFE1F00C583518290F4E&uin=0&fromtag=38",
      "http://isure.stream.qqmusic.qq.com//C400001KxFBr3ZrMIk.m4a?guid=5579254314&vkey=7DC202D78758D601A1EF4B15F5597A805C740CFCE9210870073D05247716E83D4146EE3907962645D2F7BE99071BFC0B01E73F09AFA5114D&uin=0&fromtag=38"
  ]
}
复制代码

4.5 返回参数

字段字段类型字段说明
announcestring声明文案
errnoint0: 表示没有问题, 其他表示有问题. 详情参考 msg
msgstring接口返回状态描述
dataarrayitem 为对应音乐的播放 url, 直接放到 audio 标签就可以播放

4.6 错误状态码

代码健壮的像一头牛, 不会报错~

5. 搜索

5.1 功能描述

音乐搜索功能, 可以根据音乐信息搜索出匹配的歌曲列表

5.2 请求说明

请求说明:
请求方式 GET
请求URL :/music/search/唐人/1/10

5.3 请求参数

字段字段类型字段说明
keystring搜索关键词
pageint(非必须, 默认值为 1)当前页码
pageint(非必须, 默认值为 20)每页条数

5.4 返回结果

{
    "announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
    "errno": 0,
    "msg": "success",
    "data": {
        "page": {
            "currentNumber": 10,
            "currentPage": 1,
            "totalNumber": 397
        },
        "songList": [
            {
                "songMid": "003ALEZa186Qlq",
                "singer": {
                    "singerName": "孙子涵",
                    "singerMid": "001oXbjs29oPul"
                },
                "songName": "唐人",
                "songId": 4823575,
                "albumMid": "002CWEnV2g4m3p"
            }
            ...各种数据...
        ]
    }
}
复制代码

5.5 返回参数

字段字段类型字段说明
errnoint0: 表示没有问题, 其他表示有问题. 详情参考 msg
announcestring声明文案
msgstring接口返回状态描述
dataobject返回数据
  pageobject分页信息
    currentNumberint当前返回的条目数
    currentPageint当前页码
    totalNumberint总条目数
  songListarray歌曲列表
    songMidstring歌曲id
    singerstring歌手名称
      singerNamestring歌手名称
      singerMidstring歌手媒体 id, 用户获取歌手头像
    songNamestring歌曲名称
    songIdstring歌曲 id, 用于获取歌词
    albumMidstring专辑媒体 id, 用于获取专辑封面 url

5.6 错误状态码

代码健壮的像一头牛, 不会报错~

6. 获取歌词(基于歌曲 songid)

6.1 功能描述

获取歌词, 这个没啥可以描述的啦~

6.2 请求说明

请求说明:
请求方式 GET
请求URL :/music/lrc/:id

6.3 请求参数

字段字段类型字段说明
idstring歌曲 id

6.4 返回结果

{
    "announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
    "errno": 0,
    "msg": "success",
    "data": {
        "lyric": "[ti:唐人][换行][ar:孙子涵][换行][al:唐朝好男人 电视剧原声带][换行][by:][换行][offset:0][换行][00:00.00]唐人 (《唐朝好男人》电视剧主题曲) - 孙子涵 (Niko Sun)[换行][00:09.66]词:孙子涵[换行][00:19.32]曲:孙子涵[换行][00:28.99]一如昨日烛火 伴扁舟相随[换行][00:32.46][换行][00:33.22]哪有唐人不懂得陶醉[换行][00:36.73]我孤舟 你窈窕 岸上有隐晦[换行][00:40.54][换行][00:41.24]一踏万里与谁相随[换行][00:43.91][换行][00:44.62]你穿错了嫁妆怎能有快乐[换行][00:48.50][换行][00:49.19]再上一层胭脂也不美[换行][00:52.77]一声戛然而止庭前的鞭炮[换行][00:57.10]妄想同你华发的心作废[换行][01:00.27][换行][01:00.84]你说不要自作自受自己创造伤悲[换行][01:04.77]谁都可以彻底忘记谁[换行][01:08.02][换行][01:08.71]你说过往不及回首 别后悔了才会[换行][01:12.90]想方设法的把你追回[换行][01:16.13][换行][01:16.69]你说孤独是诗人应该具有的体会[换行][01:20.81]写歌的人就该有伤悲[换行][01:24.17][换行][01:24.74]我点一丝烛火 一时泛滥了思念[换行][01:28.75]写首小调名字叫后悔[换行][01:32.32][换行][01:33.66]一如昨日烛火 伴着扁舟相随[换行][01:36.91][换行][01:37.53]哪有唐人不懂得陶醉[换行][01:40.67][换行][01:41.48]你穿错了嫁妆怎可能有快乐[换行][01:44.99][换行][01:45.54]再上一层胭脂也不美[换行][01:47.94][换行][01:48.91]你穿错了嫁妆怎能有快乐[换行][01:52.65][换行][01:53.16]再上一层胭脂也不美[换行][01:56.71]一声戛然而止庭前的鞭炮[换行][02:00.45][换行][02:01.03]妄想同你华发的心作废[换行][02:04.27][换行][02:04.88]你说不要自作自受自己创造伤悲[换行][02:08.73]谁都可以彻底忘记谁[换行][02:12.07][换行][02:12.69]你说过往不及回首 别后悔了才会[换行][02:16.90]想方设法的把你追回[换行][02:20.11][换行][02:20.68]你说孤独是诗人应该具有的体会[换行][02:24.90]写歌的人就该有伤悲[换行][02:28.75]我点一丝烛火 一时泛滥了思念[换行][02:32.74]写首小调名字叫后悔[换行][02:36.73][换行][02:40.74]你说不要自作自受自己创造伤悲[换行][02:44.85]谁都可以彻底忘记谁[换行][02:48.62]你说过往不及回首 别后悔了才会[换行][02:52.80]想方设法的把你追回[换行][02:56.10][换行][02:56.63]你说孤独是诗人应该具有的体会[换行][03:00.80]写歌的人就该有伤悲[换行][03:04.64]我点一丝烛火 一时泛滥了思念[换行][03:08.77]写首小调名字叫后悔[换行][03:12.45][换行][03:13.38]一如昨日烛火 伴着扁舟相随[换行][03:17.51]哪有唐人不懂得陶醉[换行][03:20.69][换行][03:21.48]你穿错了嫁妆怎可能有快乐[换行][03:25.56]再上一层胭脂也不美[换行][03:28.19][换行][03:29.39]一如昨日烛火 伴着扁舟相随[换行][03:32.86][换行][03:33.47]哪有唐人不懂得陶醉[换行][03:36.65][换行][03:37.48]你穿错了嫁妆怎可能有快乐[换行][03:41.46]再上一层胭脂也不美"
    }
}
复制代码

6.5 返回参数

字段字段类型字段说明
announcestring声明文案
errnoint0: 表示没有问题, 其他表示有问题. 详情参考 msg
msgstring接口返回状态描述
dataobject返回数据
  lyricstring歌词信息, 由于 JSON 不能添加换行, 所以直接在 lrc 文件本该换行的位置插入了换行标记[换行] 前端代码中直接 lyric.replace(/\[换行\]/g, '\n') 即可还原 lrc 文件.

6.6 错误状态码

代码健壮的像一头牛, 不会报错~

7. 获取歌曲封面图片和歌手头像图片

7.1 功能描述

获取歌曲封面和歌手的头像图片, 就是播放器用来转圈的那个~

7.2 请求说明

请求说明:
请求方式 GET
请求URL :/music/imgs/{:albummid}/{:singerMid}

7.3 请求参数

字段字段类型字段说明
albummidstring歌曲所属的专辑的媒体 id
singerMidstring歌手的媒体 id

7.4 返回结果

{
    "announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
    "errno": 0,
    "msg": "success",
    "data": {
        "albumImgUrl": "https://y.gtimg.cn/music/photo_new/T002R300x300M000002CWEnV2g4m3p.jpg",
        "singerAvatarUrl": "https://y.gtimg.cn/music/photo_new/T001R150x150M000001oXbjs29oPul.jpg"
    }
}
复制代码

7.5 返回参数

字段字段类型字段说明
errnoint0: 表示没有问题, 其他表示有问题. 详情参考 msg
announcestring声明文案
msgstring接口返回状态描述
dataobject返回数据
  albumImgUrlstring歌曲所属的专辑封面 url
  singerAvatarUrlstring歌手头像 url

7.6 错误状态码

代码健壮的像一头牛, 不会报错~

最后我也立个 flag: 如果这篇文章点赞超过 666, 我写文章分享爬取数据的过程和实现的方式. 感谢大家的支持...

本接口仅用作学习交流之用, 请不要用在不正当手段. 测试服务没有做任何处理, 扛不住 ddos 等等各种攻击, 希望大佬手下留情, 同时这个项目不会再升级添加新功能了, 希望大家有闲暇时间的话一起维护.

收藏 0
node.js
评论 ( 0 )