diff --git a/app.js b/app.js index 1e92f7da5b5d420453c85f7131066d62d68b8912..503ae49fadaeaa73c3e291f574d5570ee80fe459 100644 --- a/app.js +++ b/app.js @@ -20,9 +20,16 @@ app.use('/recommend/resource', require('./router/recommendResource')) // 获取歌词 app.use('/lyric', require('./router/lyric')) -// 获取专辑 +// 获取专辑内容 app.use('/album', require('./router/album')) +// 获取歌手单曲 +app.use('/artists', require('./router/artists')) + + +// 获取歌手专辑列表 +app.use('/artist_album', require('./router/artist_album')) + // 歌单(网友精选碟) hot||new http://music.163.com/#/discover/playlist/ app.use('/top_playlist', require('./router/top_playlist')) @@ -71,9 +78,6 @@ app.use("/top_list",require("./router/top_list")) //mv app.use("/mv",require("./router/mv")) -//播放mv -app.use("/play_mv",require("./router/play_mv")) - process.on('SIGHUP', () => { console.log('server: bye bye') process.exit() diff --git a/docs/README.md b/docs/README.md index 78f59fb2b9314c11c17e9a7f7c8cadd8e7eb212c..bd80d16d309a2a7efb3fac1184d4d325b9dec18a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -31,7 +31,7 @@ Version 2.2.0 5. 搜索音乐 6. 获取歌词 7. 获取评论 -8. 获取歌手专辑 +8. 获取专辑内容 9. 获取每日推荐歌单 10. 获取每日推荐歌曲 11. 喜欢歌曲 @@ -43,7 +43,9 @@ Version 2.2.0 17. 歌单(网友精选碟) 18. 新碟上架 19. 热门歌手 -20. mv +20. mv(可获得 mv 地址,不过暂时还没解决 mv 的防盗链问题) +21. 获取歌手专辑 +22. 获取歌手单曲 ## 安装 ``` shell @@ -151,8 +153,8 @@ $ set PORT=4000 && node app.js 返回数据如下图: ![音乐 url](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E9%9F%B3%E4%B9%90%20url.png) -### 搜索音乐 -说明:调用此接口,传入搜索关键词可以搜索该音乐,关键词可以多个,以空格隔开,如"周杰伦 搁浅"(不需要登录) +### 搜索 +说明:调用此接口,传入搜索关键词可以搜索该音乐/专辑/歌手/歌单/用户,关键词可以多个,以空格隔开,如"周杰伦 搁浅"(不需要登录) **必选参数:** `keywords` : 关键词 @@ -190,7 +192,7 @@ $ set PORT=4000 && node app.js `/lyric?id=347230` 返回数据如下图: -![搜索音乐](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E6%AD%8C%E8%AF%8D.png) +![获取歌词](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E6%AD%8C%E8%AF%8D.png) ### 获取评论 说明:调用此接口,传入歌音乐 id和 limit 参数, 可获得该音乐的所有评论(不需要登录) @@ -239,13 +241,40 @@ $ set PORT=4000 && node app.js `/album` **调用例子:** -`album?id=32311` +`/album?id=32311` 返回数据如下图: -![获取专辑](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E4%B8%93%E8%BE%91.png) +![获取专辑内容](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E4%B8%93%E8%BE%91.png) +### 获取歌手单曲 +说明:调用此接口,传入歌手id,可获得歌手单曲 +**必选参数:** +`id`: 歌手id,可由搜索接口获得 + +**接口地址:** +`/artists` + +**调用例子:** +`/artists?id=6452` + +返回数据如下图: +![获取歌手单曲](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/artists.png) + +### 获取歌手专辑 +说明:调用此接口,传入歌手 id,可获得歌手专辑内容 +**必选参数:** +`id`: 歌手id + +**接口地址:** +`/artist_album` + +**调用例子:** +`/artist_album?id=6452&limit=30` + +返回数据如下图: +![获取专辑内容](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/artist_album.png) ### 获取每日推荐歌单 说明:调用此接口,可获得每日推荐歌单(需要登录) @@ -257,7 +286,7 @@ $ set PORT=4000 && node app.js `/recommend/resource` 返回数据如下图: -![搜索音乐](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E6%8E%A8%E8%8D%90%E6%AD%8C%E5%8D%95.png) +![每日推荐歌单](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E6%8E%A8%E8%8D%90%E6%AD%8C%E5%8D%95.png) ### 获取每日推荐歌曲 说明:调用此接口,可获得每日推荐歌曲(需要登录) @@ -269,7 +298,7 @@ $ set PORT=4000 && node app.js `/recommend/songs` 返回数据如下图: -![搜索音乐](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E6%8E%A8%E8%8D%90%E6%AD%8C%E6%9B%B2.png) +![每日推荐歌曲](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/%E6%8E%A8%E8%8D%90%E6%AD%8C%E6%9B%B2.png) ### 私人 FM diff --git a/router/artist_album.js b/router/artist_album.js new file mode 100644 index 0000000000000000000000000000000000000000..e1fff591afe7886a0a2b504dcb1f924cc684476e --- /dev/null +++ b/router/artist_album.js @@ -0,0 +1,20 @@ +const express = require("express") +const router = express() +const { createRequest } = require("../util/util") + +router.get("/", (req, res) => { + const id = req.query.id + const offset = req.query.offset || 0 + const limit = req.query.limit || 50 + createRequest(`/api/artist/albums/${id}?offset=${offset}&limit=${limit}`, '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/artists.js b/router/artists.js new file mode 100644 index 0000000000000000000000000000000000000000..7046849ab53c4d93bfc3cd2d82dadc7ced68f96a --- /dev/null +++ b/router/artists.js @@ -0,0 +1,20 @@ +const express = require("express") +const router = express() +const { createRequest } = require("../util/util") + +router.get("/", (req, res) => { + const id = req.query.id + const offset = req.query.offset || 0 + const limit = req.query.limit || 50 + createRequest(`/api/artist/${id}?offset=${offset}&limit=${limit}`, '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/play_mv.js b/router/play_mv.js deleted file mode 100644 index c8cd9b49febb37397fd7ed92f8d0de5b289caa6c..0000000000000000000000000000000000000000 --- a/router/play_mv.js +++ /dev/null @@ -1,38 +0,0 @@ -const express = require("express") -const router = express() -const request = require("request") -const http = require('http') -router.get("/", (req, res) => { - let ne_req = '' - let arr=[] - const url = "http://v4.music.126.net/20170421073027/3685c14b705852a3e16b3a5bd73f0d74/web/cloudmusic/MjQ3NDQ3MjUw/89a6a279dc2acfcd068b45ce72b1f560/bf2750483ed02d4c6263dffefa5959d7.mp4" - const options = { - url: url, - headers: { - 'Referer': 'music.163.com', - 'Accept': '*/*', - 'Accept-Language': 'zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4', - 'Connection': 'keep-alive', - 'Content-Type': 'video/mp4', - 'Referer': 'http://music.163.com', - 'Host': 'music.163.com', - 'Cookie': req.get('Cookie') ? req.get('Cookie') : '', - 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36', - } - } - console.log(options) - const pipe=request(options) - pipe.on('error', function (err) { - console.log(err) - }) - pipe.on('data',data=>{ - console.log(111) - arr.push(data) - }) - pipe.on('end',()=>{ - const d=Buffer.concat(arr) - res.send(d) - }) -}) - -module.exports = router \ No newline at end of file diff --git a/router/search.js b/router/search.js index 042779793e87997212cb6ca702a32ac7e5ac2459..9e228c2f9981be0499da26990996586899c92f20 100644 --- a/router/search.js +++ b/router/search.js @@ -7,7 +7,7 @@ router.get("/", (req, res) => { const type = req.query.type || 1 const limit = req.query.limit || 30 const offset = req.query.offset || 0 - +// 搜索单曲(1),歌手(100),专辑(10),歌单(1000),用户(1002) *(type)* const data = 's=' + keywords + '&limit=' + limit + '&type=' + type + '&offset=' + offset createRequest('/api/search/pc/', 'POST', data) .then(result => { diff --git a/static/artist_album.png b/static/artist_album.png new file mode 100644 index 0000000000000000000000000000000000000000..718875591719f78fed73f2fc88b4c07e048f2148 Binary files /dev/null and b/static/artist_album.png differ diff --git a/static/artists.png b/static/artists.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe44228ca13029c36757c7d1b3b870a8806c53a Binary files /dev/null and b/static/artists.png differ