2020最新封装QQ音乐api(持续更新,仅免费歌曲)

说明

github 项目地址 欢迎star

2020/6/03

  1. 接口已恢复。感谢蒟蒻…的帮助, 才能这么快解决这个问题。有兴趣可以查看他的关于sign获取的文章
  2. 之前分出了ts的分支,主要开始维护ts分支,master可能会更新的晚一点,如果需要自己启服务的话可以下载ts分支,有问题也可以回复,我可以协助一下。

2020/5/27

  1. 发现获取vkey的接口现在获取不到了,应该是官方换了请求方式,目前播放地址受到了影响,无法播放,修复时间待定。

2020/5/7

  1. 之前要使用api的话只能通过服务端请求,嗯嗯…想了想,现在支持跨域了。还是仅测试使用,服务器太渣渣。。经不起造。

2020/2/25

  1. 最近在做新的项目,叫小鱼干APP,可以在百度,vivo,小米,apple store 中下载,暂时没有时间来搞这个音乐api的东西了,不过服务没有停,如果想用来测试或者玩玩的还是可以用的。

2019/12/26 更新

  1. 获取歌曲播放地址接口 增加 lyric参数代表是否获取歌词。
  2. 增加获取歌词接口

2019/12/24 更新

  1. 所有音乐接口更改,增加一层music/ ,获取地址改为 music/song
  2. 增加福利图片接口
  3. 示例接口更改为https

接口仅供交流学习使用

github 项目地址 希望大家给个star 以支撑我初期坚持不懈的动力。

因为之前使用网络上别人封装的音乐api现在无法使用,或者一些需要付费使用,当然这也无可厚非。

但对我而言,只需要简单的一些音乐api做一些东西。 感觉给钱有点亏。 就自己搞一个简单的符合我的需求的吧。

文档

所支持的Api

  1. 音乐搜索
  2. 音乐top100列表
  3. 音乐播放地址
  4. 福利图片 (新增 2019/12/24).
  5. 音乐歌词 (新增 2019/12/26).

很简单的三个基本的功能。

所有方法都是GET

本项目所支持的Api

一、音乐 music

1、音乐列表

list

GET

参数 类型 描述
p string 页码
n string 数目
w string 关键词

返回参数

上级 参数 类型 描述
curpage int 页码
curnum int 数目
list array [ object ] 音乐列表
list > {} songname string 歌曲名
list > {} songname string 歌曲名
list > {} albumname string 专辑名
list > {} songmid string 歌曲id,用来请求播放地址
list > {} albumimg string 封面图
list > {} singer object 歌手信息
list > {} > singer id int 歌手id
list > {} > singer name string 歌手名称

eg:

    https://api.zsfmyz.top/music/list?p=1&n=30&w=蔡徐坤

返回参数举例

    {
    "code": "0",
    "data": {
        "curnum": 30,
        "curpage": 1,
        "list": [
            {
                "songname": "情人",
                "singer": {
                    "id": 1016794,
                    "mid": "002nXp292LIOGV",
                    "name": "蔡徐坤",
                    "name_hilight": "蔡徐坤"
                },
                "albumname": "情人",
                "songmid": "000aWBBQ2fMyBJ",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/88/300_albumpic_12583588_0.jpg"
            },
            {
                "songname": "YOUNG",
                "singer": {
                    "id": 1016794,
                    "mid": "002nXp292LIOGV",
                    "name": "蔡徐坤",
                    "name_hilight": "蔡徐坤"
                },
                "albumname": "YOUNG",
                "songmid": "004BxrBT3coQnC",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/78/300_albumpic_7156278_0.jpg"
            },
            {
                "songname": "Wait Wait Wait",
                "singer": {
                    "id": 1016794,
                    "mid": "002nXp292LIOGV",
                    "name": "蔡徐坤",
                    "name_hilight": "蔡徐坤"
                },
                "albumname": "Wait Wait Wait",
                "songmid": "002kRCBE4dfcU2",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/19/300_albumpic_4359819_0.jpg"
            },
        //  .....
        ]
    }
}

2、音乐top100列表

top

GET

参数

返回参数

上级 参数 类型 描述
date string 日期
curpage int 页码
curnum int 数目
list 音乐列表
list array [ object ] 音乐列表
list > {} songname string 歌曲名
list > {} songname string 歌曲名
list > {} albumname string 专辑名
list > {} songmid string 歌曲id,用来请求播放地址
list > {} albumimg string 封面图
list > {} singer object 歌手信息
list > {} > singer id int 歌手id
list > {} > singer name string 歌手名称
topinfo 音乐top100信息

list中歌曲信息比普通列表多了排名: cur_count

eg:

    https://api.zsfmyz.top/music/top

返回参数举例

    {
    "code": "0",
    "data": {
        "code": 0,
        "date": "2019-12-05",
        "curnum": 100,
        "curpage": 1,
        "list": [
            {
                "cur_count": "1",
                "songname": "像极了",
                "singer": {
                    "id": 1441799,
                    "mid": "0023dQD40to8NP",
                    "name": "永彬Ryan.B"
                },
                "albumname": "像极了",
                "songmid": "000V8En93R3Dvd",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/36300_albumpic_9218636_0.jpg"
            },
            {
                "cur_count": "2",
                "songname": "拱手相让",
                "singer": {
                    "id": 22529,
                    "mid": "001z6uGh1j5qBh",
                    "name": "胜屿"
                },
                "albumname": "拱手相让",
                "songmid": "002DIlMZ48qB1F",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/66300_albumpic_9414066_0.jpg"
            },
            {
                "cur_count": "3",
                "songname": "余年",
                "singer": {
                    "id": 1060985,
                    "mid": "0022eAG537I1bg",
                    "name": "肖战"
                },
                "albumname": "余年",
                "songmid": "000bFWrY2VrdVp",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/92300_albumpic_9423892_0.jpg"
            },
            {
                "cur_count": "4",
                "songname": "触不可及",
                "singer": {
                    "id": 199509,
                    "mid": "003fA5G40k6hKc",
                    "name": "周深"
                },
                "albumname": "触不可及",
                "songmid": "002EFRnf3ekI9S",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/4300_albumpic_9320604_0.jpg"
            },
            {
                "cur_count": "5",
                "songname": "冷静和热情之间",
                "singer": {
                    "id": 198135,
                    "mid": "001IoTZp19YMDG",
                    "name": "易烊千玺"
                },
                "albumname": "冷静和热情之间",
                "songmid": "0014YYnw3vadJJ",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/59300_albumpic_9415259_0.jpg"
            },
            {
                "cur_count": "6",
                "songname": "美丽谎言",
                "singer": {
                    "id": 71976,
                    "mid": "001gthIA2JeIV1",
                    "name": "都智文"
                },
                "albumname": "美丽谎言",
                "songmid": "003sJCeZ1iK9mZ",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/88300_albumpic_9353488_0.jpg"
            },
            {
                "cur_count": "7",
                "songname": "那男孩还好吗",
                "singer": {
                    "id": 3298773,
                    "mid": "003yGiqM2qF7Gm",
                    "name": "Uu"
                },
                "albumname": "那男孩还好吗",
                "songmid": "002COmzJ0SPZMl",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/36300_albumpic_9132036_0.jpg"
            },
            {
                "cur_count": "8",
                "songname": "星辰大海",
                "singer": {
                    "id": 25724,
                    "mid": "0044vhyY2lfSB8",
                    "name": "周冬雨"
                },
                "albumname": "星辰大海",
                "songmid": "003enTsq4M1J59",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/63300_albumpic_9305663_0.jpg"
            },
            {
                "cur_count": "9",
                "songname": "Lover (Remix)",
                "singer": {
                    "id": 11921,
                    "mid": "000qrPik2w6lDr",
                    "name": "Taylor Swift"
                },
                "albumname": "Lover (Remix)",
                "songmid": "000H6p9p0V4MXi",
                "albumimg": "http://imgcache.qq.com/music/photo/album_300/58300_albumpic_9207358_0.jpg"
            },
        ],
        "topinfo": {
            "ListName": "巅峰榜·新歌",
            "MacDetailPicUrl": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/20150820172435.jpg",
            "MacListPicUrl": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/20150820172427.jpg",
            "UpdateType": "1",
            "albuminfo": "",
            "headPic_v12": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/20150820174934.jpg",
            "info": "集结30天内发行的优质歌曲,鼓励原创、着眼未来的乐坛风向标。根据每日综合数据进行排序,体现QQ音乐用户追新潮流,致力于打造最权威最有公信力的专业健康的新歌排行榜。

歌曲数量:100首
综合数据:登录用户在QQ音乐收听/分享/下载数据"
, "listennum": 1497166, "pic": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/20150820172421.jpg", "picDetail": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/20150820172414.jpg", "pic_album": "http://imgcache.qq.com/music/photo_new/T002R300x300M000000tSk703NJAVD.jpg", "pic_h5": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/20150820172242.jpg", "pic_v11": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/20150820172421.jpg", "pic_v12": "http://y.gtimg.cn/music/photo_new/T003R300x300M000003zALCN1hkB6y.jpg", "topID": "27", "type": "0" } } }

3、音乐播放地址

song

GET

参数 类型 描述
songmid string 用于获取token
guid string 用于获取token
lyric string 默认为0不获取歌词,1获取歌词

其他参数固定

返回参数

参数 类型 描述
musicUrl string 音乐播放地址

eg:

    https://api.zsfmyz.top/music/song?songmid=000aWBBQ2fMyBJ&guid=126548448

返回参数举例

    {
    "code": "0",
    "data": {
        "musicUrl": "https://ws.stream.qqmusic.qq.com/C400000aWBBQ2fMyBJ.m4a?guid=126548448&vkey=AD7592245F651C2509E1C9B94E3A234B039967023066203214278A71E9DE4E6F3972EA83BB52F80EE74218B39305B6EAC9B0F6A610B0F947&uin=0&fromtag=66",
        "lyric": "无"
    }
}

4、音乐歌词

lyric

GET

参数 类型 描述
songmid string 用于获取歌词

其他参数固定

返回参数

参数 类型 描述
lyric string 歌词内容

eg:

    https://api.zsfmyz.top/music/lyric?songmid=000wocYU11tSzS

返回参数举例

    {
    "code": "0",
    "data": {
        "lyric": "[ti:差不多姑娘]\n[ar:G.E.M. 邓紫棋]\n[al:差不多姑娘]\n[by:]\n[offset:0]\n[00:00.00]差不多姑娘 - G.E.M. 邓紫棋\n[00:00.17]\n[00:02.67]差不多的姑娘\n[00:06.27]追逐差不多的漂亮\n[00:11.88]她们差不多的愿望\n[00:17.18]牵着她们鼻子方向\n[00:23.05]我回到差不多的家\n[00:24.38]躺在差不多的沙发\n[00:25.68]微博差不多的刷\n[00:26.99]都吃着差不多的瓜\n[00:28.48]那标题差不多的炸\n[00:29.78]...",
        }
    }
}


二、福利图片 welfare

根据每日福利社的接口进行了封装,因为他们的https失效了,所以自己反向代理了。

1、图片列表

list

GET

参数 类型 描述
per_page string 每页数据量
page string 第几页

其他参数固定

返回参数

如下:

eg:

    https://api.zsfmyz.top/welfare/list?per_page=20&page=2

返回参数举例

{
    "code": 0,
    "data": {
        "error": false,
        "results": [
            {
                "_id": "5b63cd4e9d21225e0d3f58c9",
                "createdAt": "2018-08-03T11:34:38.672Z",
                "desc": "2018-08-03", //描述 
                "publishedAt": "2018-08-03T00:00:00.0Z",
                "source": "api",
                "type": "福利", // 类型
                "url": "https://ww1.sinaimg.cn/large/0065oQSqgy1ftwcw4f4a5j30sg10j1g9.jpg", //图片地址
                "used": true,
                "who": "lijinshan"
            },
            {
                "_id": "5b6151509d21225206860f08",
                "createdAt": "2018-08-01T14:21:04.556Z",
                "desc": "2018-08-01",
                "publishedAt": "2018-08-01T00:00:00.0Z",
                "source": "api",
                "type": "福利",
                "url": "https://ww1.sinaimg.cn/large/0065oQSqly1ftu6gl83ewj30k80tites.jpg",
                "used": true,
                "who": "lijinshan"
            },
            // ...
        ]
    }
}

over 暂时只有这 ~~ 三 ~~ 四个,不过做一个音乐demo足够了,有兴趣的话可以试试。

http://api.zsfmyz.top/ https://api.zsfmyz.top/ 是目前开放的api接口地址,可直接食用。

原接口说明

目前

搜索

  • https://c.y.qq.com/soso/fcgi-bin/client_search_cp?aggr=1&cr=1&flag_qc=0&p=1&n=30&w=简单爱

封面

  • http://imgcache.qq.com/music/photo/album_300/[albumid%100]/300_albumpic_[albumid]_0.jpg, albumid%100, albumid
  • 比如albumid=8217,封面地址就是
  • http://imgcache.qq.com/music/photo/album_300/17/300_albumpic_8217_0.jpg。

歌曲token

此方法需要参考本文开头说明中的 2020/6/03 更新中的说明的获取sign的文章再获取token

  • https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?format=json205361747&platform=yqq&cid=205361747&songmid=003lghpv0jfFXG&filename=C400003lghpv0jfFXG.m4a&guid=126548448
  1. songmid可以从歌曲信息中取到,filename根据songmid生成。
  2. 比如,songmid是003lghpv0jfFXG,则filename就是前缀加上C400,后缀加上.m4a,即C400003lghpv0jfFXG.m4a。
  3. 其他字段format、platform、cid、guid可以写死,但都是必须的。

拼接播放地址

  • http://ws.stream.qqmusic.qq.com/C400003lghpv0jfFXG.m4a?fromtag=0&guid=126548448&vkey=D661E5DF19B8FEB2FBFC554276746AC608AE98B0F30595B3B3BAD5C1C89ECCDD7BE599E306F786621856D22D6BD6B96F5DD344CF3814DB71

原文依据

以下是我根据此api所写的服务及小程序的项目地址,大家可以拿来测试体验。

小程序项目地址欢迎star

音乐api服务项目地址欢迎star

你可能感兴趣的:(nodejs)