From f8bbf7a29bc47a10f86c5d4e6b2d633a8589a665 Mon Sep 17 00:00:00 2001 From: binaryify Date: Thu, 20 Apr 2017 23:16:09 +0800 Subject: [PATCH] improve document --- app.js | 6 ++++++ docs/README.md | 25 +++++++++++++++++++++---- package.json | 12 +++++++++--- router/mv.js | 18 ++++++++++++++++++ router/play_mv.js | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 router/mv.js create mode 100644 router/play_mv.js diff --git a/app.js b/app.js index 2fd6ebe..1e92f7d 100644 --- a/app.js +++ b/app.js @@ -68,6 +68,12 @@ app.use("/fm_trash",require("./router/fm_trash")) //排行榜 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 cc21ce6..78f59fb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -43,6 +43,7 @@ Version 2.2.0 17. 歌单(网友精选碟) 18. 新碟上架 19. 热门歌手 +20. mv ## 安装 ``` shell @@ -228,11 +229,11 @@ $ set PORT=4000 && node app.js ![获取歌曲详情](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/songDetail.png) -### 获取歌手专辑列表 -说明:调用此接口,传入歌手 id,可获得歌手专辑列表 +### 获取专辑内容 +说明:调用此接口,传入id,可获得专辑内容 **必选参数:** -`id`: 歌手 id +`id`: id **接口地址:** `/album` @@ -363,7 +364,7 @@ $ set PORT=4000 && node app.js ![精选碟](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/top_playlist.png) ### 新碟上架 -说明:调用此接口,可获取新碟上架数据 +说明:调用此接口,可获取新碟上架列表,如需具体音乐信息需要调用获取专辑列表接口 `/album` ,然后传入 id, 如 `album?id=32311&limit=30` **可选参数:** `limit`: 取出数量,默认为50 @@ -398,6 +399,22 @@ $ set PORT=4000 && node app.js ![热门歌手](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/top_artists.png) +### mv +说明:调用此接口,传入 mvid ,可获取对应 MV 数据 + +**可选参数:** +`mvid`: mv 的 id + +**接口地址:** +`/mv` + +**调用例子:** +`/mv?mvid=5436712` + +返回数据如下图: + +![热门歌手](https://raw.githubusercontent.com/Binaryify/NeteaseCloudMusicApi/master/static/mv.png) + ### 排行榜 说明:调用此接口,传入数字 idx, 可获取不同排行榜 diff --git a/package.json b/package.json index dd02de3..d4beff8 100644 --- a/package.json +++ b/package.json @@ -6,16 +6,22 @@ "start": "node app.js", "test": "mocha -r intelli-espower-loader -t 20000 test" }, - "keywords": ["网易云音乐","网易云","音乐","网易云音乐nodejs"], + "keywords": [ + "网易云音乐", + "网易云", + "音乐", + "网易云音乐nodejs" + ], "author": "", "license": "MIT", "dependencies": { "big-integer": "^1.6.17", - "express": "^4.15.2" + "express": "^4.15.2", + "request": "^2.81.0" }, "devDependencies": { "intelli-espower-loader": "^1.0.1", "mocha": "^3.2.0", "power-assert": "^1.4.2" } -} \ No newline at end of file +} diff --git a/router/mv.js b/router/mv.js new file mode 100644 index 0000000..91d1e0b --- /dev/null +++ b/router/mv.js @@ -0,0 +1,18 @@ +const express = require("express") +const router = express() +const { createRequest } = require("../util/util") + +router.get("/", (req, res) => { + const mvid = req.query.mvid + createRequest(`/api/mv/detail/?id=${mvid}&type=mp4`, '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 new file mode 100644 index 0000000..c8cd9b4 --- /dev/null +++ b/router/play_mv.js @@ -0,0 +1,38 @@ +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