likes
comments
collection
share

网易云api你了解过吗

作者站长头像
站长
· 阅读数 18

前言

大家好,我是小阵 🔥,一路奔波不停的码字业务员 身为一个前端小菜鸟,总是有一个飞高飞远的梦想,因此,每点小成长,我都想要让它变得更有意义,为了自己,也为了更多值得的人 如果喜欢我的文章,可以关注 ➕ 点赞,与我一同成长吧~😋 加我微信:zzz886885,邀你进群,一起学习交流,摸鱼学习两不误🌟

开开心心学技术大法~~

网易云api你了解过吗

来了来了,他真的来了~

正文

想必大家都或多或少的接触过各位大神的开源音乐平台,比如YesPlayMusic,他们是怎样被搞出来的呢?

网易云api可以做到什么

  • 想实现一个属于自己的音乐播放器吗?

  • 想实现一个属于自己的FM吗?

  • 想实现一个属于自己的基于网易云音乐的评论平台吗?

  • 想实现一个属于自己的短视频播放平台吗?

  • 如果你又上面的任意需求,都可以研究下网易云api!

api使用

本质上,api的调用需要跨站请求伪造 (CSRF), 伪造请求头 , 调用官方 API

  1. 将平台代码拉到本地启动node之后来使用

安装

$ git clone git@github.com:Binaryify/NeteaseCloudMusicApi.git 
$ npm install

启动

$ node app.js

调用

const url = `http://localhost:3000/song/url?id=33894312&proxy=http://121.196.226.246:84` 
fetch(url).then(function () { 
    // do what you want 
})

可以看到,即便是通过请求直接调用,也需要依赖一个base服务

  1. 用平台已经封装好的node包NeteaseCloudMusicApi直接调用
const { login_cellphone, user_cloud } = require('NeteaseCloudMusicApi')

async function main() {
try {
    const result = await login_cellphone({ phone: '手机号', password: '密码', })
    console.log(result);
    const result2 = await user_cloud({ cookie: result.body.cookie, // 凭证 }); console.log(result2.body)
} catch (error) {
    console.log(error)
} }

main()

关键api

可以看到网易云的api非常的多,我们篇幅有限,仅介绍几个关键api,抛下砖,引下玉而已。

网易云api你了解过吗

登陆

如果不登录网易云的话,基本除了用户相关的api,其他的都可以正常调用,但是返回数据却不如登陆之后那样精准。

更有一些接口,比如获取音乐url的接口/song/url?id=33894312,虽然可以正常返回数据,但是却基本都是只有试听内容。

所以登录功能也是很有必要的。

获取歌单列表

依赖登陆token

  • 接口:/login/cellphone
  • 入参:
    • 必选参数:
      • phone: 手机号码
      • password: 密码
    • 可选参数:
      • countrycode: 国家码,用于国外手机号登录,例如美国传入:1
      • md5_password: md5 加密后的密码,传入后 password 参数将失效

示例:

  • /login/cellphone?phone=xxx&password=yyy 
  • /login/cellphone?phone=xxx&md5_password=yyy
  • /login/cellphone?phone=xxx&captcha=1234

获取用户歌单

说明 : 登录后调用此接口 , 传入用户 id, 可以获取用户歌单

  • 接口:  /user/playlist

  • 必选参数 :  uid : 用户 id

  • 可选参数 :

    • limit : 返回数量 , 默认为 30

    • offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0

示例 :  /user/playlist?uid=32953014

获取歌词

说明 : 调用此接口 , 传入音乐 id 可获得对应音乐的歌词 ( 不需要登录 )

  • 接口 :  /lyric

  • 必选参数 :  id: 音乐 id

  • 示例 :  /lyric?id=33894312

获取歌曲url

  • 接口 :  /song/url

  • 必选参数 :  id : 音乐 id

  • 可选参数 :  

    • br: 码率,默认设置了 999000 即最大码率,如果要 320k 则可设置为 320000,其他类推
  • 示例 :

    • /song/url?id=33894312
    • /song/url?id=405998841,33894312

获取热门评论

说明 : 调用此接口 , 传入 type, 资源 id 可获得对应资源热门评论 ( 不需要登录 )

  • 接口地址 : /comment/hot

  • 必选参数 :

    • id : 资源 id
    • type: 数字 , 资源类型 , 对应歌曲 , mv, 专辑 , 歌单 , 电台, 视频对应以下类型
0: 歌曲
1: mv
2: 歌单
3: 专辑
4: 电台
5: 视频
  • 可选参数 :

    • limit: 取出评论数量 , 默认为 20
    • offset: 偏移数量 , 用于分页 , 如 :( 评论页数 -1)*20, 其中 20 为 limit 的值
    • before: 分页参数,取上一页最后一项的 time 获取下一页数据(获取超过 5000 条评论的时候需要用到)
  • 示例 :  /comment/hot?id=186016&type=0

获取全部视频列表

说明 : 调用此接口,可获取视频分类列表,分页参数只能传入 offset

  • 接口 :  /video/timeline/all

  • 可选参数 :  offset: 默认 0

  • 调用例子 :  /video/timeline/all

其他的各位可以直接上官网去看,中文文档随便一看就可以上手。完整文档

结语

往期好文推荐「我不推荐下,大家可能就错过了史上最牛逼vscode插件集合啦!!!(嘎嘎~)😄」