diff --git a/README.MD b/README.MD index a5bc0f0b43622b98a94125b3abcd80ef4e646fe0..7043b924d201474cac5300b5f4a772d01d1f74ec 100644 --- a/README.MD +++ b/README.MD @@ -10,7 +10,7 @@ ## 版本新特性 -2017/4/1 升级到 2.0 版本.增加使用文档,完成项目重构,增加更完善的单元测试,版本升级到2.0,升级 api 到 v2+,支持登录并获取用户信息和创建的歌单,可通过获取音乐 url 接口获取用户歌单里的的音乐,获取每日推荐歌单和每日推荐音乐 +升级到 2.0 版本.增加使用文档,完成项目重构,增加更完善的单元测试,版本升级到2.0,升级 api 到 v2+,支持登录并获取用户信息和创建的歌单,可通过获取音乐 url 接口获取用户歌单里的的音乐,获取每日推荐歌单和每日推荐音乐 ## 环境要求 需要 NodeJS 6.0+ 环境 diff --git a/app.js b/app.js index f6a9979da2ca33d91b23c551b7379647ef5c006f..36c0989b74867b087196f7b982bcb7850d9357b4 100644 --- a/app.js +++ b/app.js @@ -13,6 +13,9 @@ app.use('/recommend/resource', require('./router/recommendResource')) app.use('/lyric', require('./router/lyric')) +app.use('/album', require('./router/album')) + + app.use('/user/playlist', require('./router/userPlaylist')) app.use('/playlist/detail', require('./router/playlistDetail')) diff --git a/docs/README.md b/docs/README.md index c3a598dc2655c6d07e382e89a800a5246223a475..b03122757d2dfc2f7c04c6c586d9b52f10becec4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,7 +4,7 @@ ## 版本新特性 -2017/4/1 升级到 2.0 版本.增加使用文档,完成项目重构,增加更完善的单元测试,版本升级到2.0,升级 api 到 v2+,支持登录并获取用户信息和创建的歌单,可通过获取音乐 url 接口获取用户歌单里的的音乐,获取每日推荐歌单和每日推荐音乐 +升级到 2.0 版本.增加使用文档,完成项目重构,增加更完善的单元测试,版本升级到2.0,升级 api 到 v2+,支持登录并获取用户信息和创建的歌单,可通过获取音乐 url 接口获取用户歌单里的的音乐,获取每日推荐歌单和每日推荐音乐 ## 安装 ``` shell @@ -69,6 +69,19 @@ $ node app.js ### 搜索音乐 说明:调用此接口,传入搜索关键词可以搜索该音乐,关键词可以多个,以空格隔开,如"周杰伦 搁浅"(不需要登录) +必选参数: +keywords : 关键词 +可选参数: +limit: 返回数量 +type: 搜索类型;取值意义 +. 1 单曲 +. 10 专辑 +. 100 歌手 +. 1000 歌单 +. 1002 用户 + + offset: 偏移数量,用于分页 + 接口地址: `/search` 调用例子: @@ -85,6 +98,17 @@ $ node app.js 返回数据如下图: ![搜索音乐](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E6%AD%8C%E8%AF%8D.png) +### 获取歌手专辑列表 +说明:调用此接口,传入歌手 id,可获得歌手专辑列表 +接口地址: +`/album` +调用例子: +`album?id=32311` +![获取专辑](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E4%B8%93%E8%BE%91.png) + + + + ### 获取每日推荐歌单 说明:调用此接口,可获得每日推荐歌单(需要登录) 接口地址: diff --git a/router/album.js b/router/album.js new file mode 100644 index 0000000000000000000000000000000000000000..4ab7473ce7c532d7f361bffb092f6352c2bfb8e5 --- /dev/null +++ b/router/album.js @@ -0,0 +1,18 @@ +const express = require("express") +const router = express() +const { createRequest } = require("../util/util") + +router.get("/", (req, res) => { + const id = req.query.id + createRequest(`/api/album/${id}`, 'GET', null) + .then(result => { + res.setHeader("Content-Type", "application/json") + res.send(result) + }) + .catch(err => { + res.status(502).send('fetch error') + }) +}) + + +module.exports = router \ No newline at end of file diff --git a/router/search.js b/router/search.js index 2c1bab5ddb2a168ad86f31815832563e0e5451df..042779793e87997212cb6ca702a32ac7e5ac2459 100644 --- a/router/search.js +++ b/router/search.js @@ -6,7 +6,9 @@ router.get("/", (req, res) => { const keywords = req.query.keywords const type = req.query.type || 1 const limit = req.query.limit || 30 - const data = 's=' + keywords + '&limit=' + limit + '&type=' + type + '&offset=0' + const offset = req.query.offset || 0 + + const data = 's=' + keywords + '&limit=' + limit + '&type=' + type + '&offset=' + offset createRequest('/api/search/pc/', 'POST', data) .then(result => { res.setHeader("Content-Type", "application/json") diff --git a/test/album.test.js b/test/album.test.js new file mode 100644 index 0000000000000000000000000000000000000000..b01ad523aa6df238c38f5b0aace12ae09193311c --- /dev/null +++ b/test/album.test.js @@ -0,0 +1,17 @@ +const assert = require('assert') +const crypto = require('crypto') +const { createRequest } = require("../util/util") + +describe('测试获取歌手专辑列表是否正常', () => { + it('数据应该有 lrc 字段', done => { + const id = 32311 + createRequest(`/api/album/${id}`, 'GET', null) + .then(result => { + const code = JSON.parse(result).code + console.log("code:" + code) + assert(code === 200) + done() + }) + .catch(err => done(err)) + }) +}) \ No newline at end of file diff --git a/test/lyric.test.js b/test/lyric.test.js index 2b788e1149950bb4c0e434734343f27f93a4b9bd..deca3add597a0f6338ea8ca1a7930ce634a6e0d6 100644 --- a/test/lyric.test.js +++ b/test/lyric.test.js @@ -1,8 +1,6 @@ const assert = require('assert') const crypto = require('crypto') const { createRequest } = require("../util/util") -const phone = "换成你的账号" -const password = "换成你的密码" describe('测试获取歌词是否正常', () => { it('数据应该有 lrc 字段', done => { diff --git a/test/musicUrl.test.js b/test/musicUrl.test.js index 550a83b724e3082360837036d152c6206a5b2629..84bfd4e423a88c7d0c71843072b1a01a79df9301 100644 --- a/test/musicUrl.test.js +++ b/test/musicUrl.test.js @@ -1,8 +1,6 @@ const assert = require('assert') const crypto = require('crypto') const { createWebAPIRequest } = require("../util/util") -const phone = "换成你的账号" -const password = "换成你的密码" describe('测试获取歌曲是否正常', () => { it('歌曲的 url 不应该为空', done => { diff --git a/test/search.test.js b/test/search.test.js index 83420029b95c88fe6bc3a79aad4a001e36e40b47..df1ddb9c94247a7e0152c3df9232fb07985093d3 100644 --- a/test/search.test.js +++ b/test/search.test.js @@ -1,8 +1,6 @@ const assert = require('assert') const crypto = require('crypto') const { createRequest } = require("../util/util") -const phone = "换成你的账号" -const password = "换成你的密码" describe('测试搜索是否正常', () => { it('获取到的数据的 name 应该和搜索关键词一致', done => {