Giter Club home page Giter Club logo

musicinterface's Introduction

吃着火锅, 写着代码, 听着歌...一不小心某音乐就上市了. 趁着兴头扒了一套 api (极简, 可用, 从获取排行榜到歌曲播放 url, 歌词, 封面等信息). 现共享一下接口文档. 大家玩儿的开心. 😄

2018-12-24-22-58-59

诚邀共同维护者

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

2019-01-06-16-05-29

本项目地址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 返回参数

字段 字段类型 字段说明
announce string 声明文案
errno int 0: 表示没有问题, 其他表示有问题. 详情参考 msg
msg string 接口返回状态描述
data object 接口返回数据主体
  slider array 轮播图信息(子条目为 string)
  radioList array 电台列表数据(始终返回两条)
    picUrl string 电台logo
    title string 电台标题
    id ing 电台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 返回参数

字段 字段类型 字段说明
announce string 声明文案
errno int 0: 表示没有问题, 其他表示有问题. 详情参考 msg
msg string 接口返回状态描述
data array 接口返回数据主体
  id int 歌单id
  title string 歌单标题
  listenCount int 歌单播放次数
  picUrl string 歌单 logo url
  songList array 歌单中排行榜前三的曲目
    singerName string 歌手名称
    songName string 歌曲名称
    number int 排行

2.6 错误状态码

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

3. 获取歌曲列表

3.1 功能描述

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

3.2 请求说明

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

3.3 请求参数

字段 字段类型 字段说明
songListId string 歌单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 返回参数

字段 字段类型 字段说明
announce string 声明文案
errno int 0: 表示没有问题, 其他表示有问题. 详情参考 msg
msg string 接口返回状态描述
data object 接口返回数据主体
  updateTime string 更新时间
  totalSongNum int 歌单中歌曲数目
  topInfo object 歌单信息
    picAlbum string 歌单封面logo
    listName string 歌单名称
  songList array 歌曲列表
    songMid string 歌曲id
    singer array 歌手信息
      singerName string 歌手名称
      singerMid string 歌手媒体 id, 用户获取歌手头像
    songName string 歌曲名称
    songId string 歌曲 id, 用于获取歌词
    albumMid string 专辑媒体 id, 用于获取专辑封面 url

3.6 错误状态码

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

4. 获取歌曲播放 url

4.1 功能描述

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

4.2 请求说明

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

4.3 请求参数

字段 字段类型 字段说明
songIdList stringArray 歌曲 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 返回参数

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

4.6 错误状态码

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

5. 搜索

5.1 功能描述

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

5.2 请求说明

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

5.3 请求参数

字段 字段类型 字段说明
key string 搜索关键词
page int (非必须, 默认值为 1)当前页码
page int (非必须, 默认值为 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 返回参数

字段 字段类型 字段说明
errno int 0: 表示没有问题, 其他表示有问题. 详情参考 msg
announce string 声明文案
msg string 接口返回状态描述
data object 返回数据
  page object 分页信息
    currentNumber int 当前返回的条目数
    currentPage int 当前页码
    totalNumber int 总条目数
  songList array 歌曲列表
    songMid string 歌曲id
    singer array 歌手信息
      singerName string 歌手名称
      singerMid string 歌手媒体 id, 用户获取歌手头像
    songName string 歌曲名称
    songId string 歌曲 id, 用于获取歌词
    albumMid string 专辑媒体 id, 用于获取专辑封面 url

5.6 错误状态码

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

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

6.1 功能描述

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

6.2 请求说明

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

6.3 请求参数

字段 字段类型 字段说明
id string 歌曲 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 返回参数

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

6.6 错误状态码

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

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

7.1 功能描述

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

7.2 请求说明

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

7.3 请求参数

字段 字段类型 字段说明
albummid string 歌曲所属的专辑的媒体 id
singerMid string 歌手的媒体 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 返回参数

字段 字段类型 字段说明
errno int 0: 表示没有问题, 其他表示有问题. 详情参考 msg
announce string 声明文案
msg string 接口返回状态描述
data object 返回数据
  albumImgUrl string 歌曲所属的专辑封面 url
  singerAvatarUrl string 歌手头像 url

7.6 错误状态码

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

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

本接口仅用作学习交流之用, 请不要用在不正当手段. 测试服务没有做任何处理, 扛不住 ddos 等等各种攻击, 希望大佬手下留情

musicinterface's People

Contributors

luoquanquan avatar

Stargazers

Michael Barley avatar かげ avatar Rem avatar  avatar WanQuanXie avatar  avatar  avatar liuminghui avatar  avatar Saya avatar Masaki avatar Darc Z. avatar femaimi avatar Prof Syd Xu avatar  avatar xiaojw avatar huyaoi avatar  avatar  avatar Flywith24 avatar  avatar aojiaoqiang avatar stark avatar KunMinX avatar l.jx avatar  avatar  avatar 若谷 avatar wenlys avatar Darryl Yem avatar kozhnpc avatar Sadhu avatar 超高校级Mario avatar  avatar Vini avatar  avatar GaMa avatar  avatar tyc1998 avatar  avatar  avatar 文康 avatar Benhui avatar  avatar YZG avatar  avatar StevenHe avatar lililili avatar zenghao1203 avatar  avatar  avatar xiaoForest avatar  avatar Gaoqiang avatar daxiang avatar Garlen avatar  avatar  avatar  avatar Ming avatar Leechael avatar CV键坏了诶 avatar 码达 avatar  avatar 牧瀬くりす avatar MengranHao avatar Kada Liao avatar  avatar 大西瓜 avatar  avatar qingshui avatar  avatar yuequan avatar ZelusZheng avatar  avatar 麦兜 avatar Shiqi Qiu avatar Flandre Scarlet avatar zengjieyi avatar Mingxin.Zheng avatar  avatar TangShengda avatar nikey avatar liux avatar  avatar Warren avatar 周洋 avatar 王阿哥 avatar pluto avatar wen66_seabed avatar Cloudyan avatar liushilang avatar Eric avatar  avatar  avatar  avatar Boshen avatar Jianqiang Qiu avatar Deepblue avatar 封宇 avatar

Watchers

James Cloos avatar julytian avatar  avatar Sadhu avatar

musicinterface's Issues

歌单搜索

您好,想问一下歌单搜索功能实现了吗,我看您的介绍里搜索功能只提到了歌曲搜索

音乐地址获取不到了啊

{
"announce": "本接口所有数据均来自 QQ 音乐, 仅供学习交流之用,请不要用于商业用途. 如果喜欢请下载 QQ 音乐 APP 畅听.如有侵权请联系微信(QQ): 1363693666, 我会第一时间删除~",
"errno": 0,
"msg": "success",
"data": []
}
data内容是空的啊

comment

老哥感谢啦,正好原来的 url 失效了,先拿来用着哈哈,有空再研究下你的代码,咋拿到的那个 vkey 哦。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.