From 6630fa1e14485350870876478750ea92fc16eea4 Mon Sep 17 00:00:00 2001 From: binaryify Date: Wed, 5 Apr 2017 09:50:28 +0800 Subject: [PATCH] add album api & unit test, improve document --- README.MD | 2 +- app.js | 3 +++ docs/README.md | 26 +++++++++++++++++++++++++- router/album.js | 18 ++++++++++++++++++ router/search.js | 4 +++- test/album.test.js | 17 +++++++++++++++++ test/lyric.test.js | 2 -- test/musicUrl.test.js | 2 -- test/search.test.js | 2 -- 9 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 router/album.js create mode 100644 test/album.test.js diff --git a/README.MD b/README.MD index a5bc0f0..7043b92 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 f6a9979..36c0989 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 c3a598d..b031227 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 0000000..4ab7473 --- /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 2c1bab5..0427797 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 0000000..b01ad52 --- /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 2b788e1..deca3ad 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 550a83b..84bfd4e 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 8342002..df1ddb9 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 => { -- GitLab