mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-05-23 22:37:41 +08:00
优化代码
This commit is contained in:
parent
bf0057ba1d
commit
1d8b13de2f
5
app.js
5
app.js
@ -18,7 +18,7 @@ let cache = apicache.middleware
|
||||
// next()
|
||||
// })
|
||||
|
||||
app.use(cache('5 minutes'))
|
||||
// app.use(cache('2 minutes'))
|
||||
|
||||
app.use(express.static('public'))
|
||||
|
||||
@ -166,9 +166,6 @@ app.use('/resource/like', require('./router/resource_like'))
|
||||
// 搜索
|
||||
app.use('/search', require('./router/search'))
|
||||
|
||||
// 搜索 hot
|
||||
app.use('/search/hot', require('./router/search_hot'))
|
||||
|
||||
//搜索 multimatch
|
||||
app.use('/search/multimatch', require('./router/search_multimatch'))
|
||||
|
||||
|
@ -163,6 +163,19 @@ $ set PORT=4000 && node app.js
|
||||
**调用例子:**
|
||||
`/login/refresh`
|
||||
|
||||
### 获取用户详情
|
||||
说明:登陆后调用此接口,传入用户 id, 可以获取用户详情
|
||||
|
||||
**必选参数:**
|
||||
`uid` : 用户 id
|
||||
|
||||
**接口地址:**
|
||||
`/user/detail`
|
||||
|
||||
**调用例子:**
|
||||
`/user/detail?uid=32953014`
|
||||
|
||||
|
||||
### 获取用户信息,歌单,收藏,mv, dj 数量
|
||||
说明:登陆后调用此接口,传入用户 id, 可以获取用户信息
|
||||
|
||||
@ -173,7 +186,7 @@ $ set PORT=4000 && node app.js
|
||||
`/user/subcount`
|
||||
|
||||
**调用例子:**
|
||||
`/user/subcount`
|
||||
`/user/subcount?uid=32953014`
|
||||
|
||||
|
||||
### 获取用户歌单
|
||||
@ -352,7 +365,7 @@ $ set PORT=4000 && node app.js
|
||||

|
||||
|
||||
### 搜索建议
|
||||
说明:调用此接口,传入搜索关键词可获得搜索建议,搜索结果同时包含单曲,歌手,歌单,mv信息
|
||||
说明:调用此接口,传入搜索关键词可获得搜索建议,搜索结果同时包含单曲,歌手,歌单,mv 信息
|
||||
|
||||
**必选参数:**
|
||||
`keywords` : 关键词
|
||||
@ -379,6 +392,18 @@ $ set PORT=4000 && node app.js
|
||||
**调用例子:**
|
||||
`/search/suggest?keywords=海阔天空`
|
||||
|
||||
### 搜索多重匹配
|
||||
说明:调用此接口,传入搜索关键词可获得搜索结果
|
||||
|
||||
**必选参数:**
|
||||
`keywords` : 关键词
|
||||
|
||||
**接口地址:**
|
||||
`/search/multimatch`
|
||||
|
||||
**调用例子:**
|
||||
`/search/multimatch?keywords=海阔天空`
|
||||
|
||||
### 收藏单曲到歌单
|
||||
说明:调用此接口,传入音乐 id和 limit 参数, 可获得该专辑的所有评论(需要登录)
|
||||
|
||||
|
2289
package-lock.json
generated
2289
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "NeteaseCloudMusicApi",
|
||||
"version": "2.6.6",
|
||||
"version": "2.6.7",
|
||||
"description": "网易云音乐 NodeJS 版 API",
|
||||
"scripts": {
|
||||
"start": "node app.js",
|
||||
|
@ -1,16 +1,21 @@
|
||||
const express = require('express')
|
||||
const router = express()
|
||||
const { createRequest } = require('../util/util')
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
createRequest('/api/v2/banner/get', 'GET', null)
|
||||
.then(result => {
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.send(result)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(502).send('fetch error')
|
||||
})
|
||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||
const data = {}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/weapi/v2/banner/get',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
music_req => {
|
||||
res.send(music_req)
|
||||
},
|
||||
err => res.status(502).send('fetch error')
|
||||
)
|
||||
})
|
||||
|
||||
module.exports = router
|
||||
|
@ -1,21 +1,22 @@
|
||||
const express = require('express')
|
||||
const router = express()
|
||||
const { createRequest } = require('../util/util')
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||
const data = {}
|
||||
const id = req.query.id
|
||||
createRequest(
|
||||
'/api/song/lyric?os=osx&id=' + id + '&lv=-1&kv=-1&tv=-1',
|
||||
'GET',
|
||||
null
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/weapi/song/lyric?os=osx&id=' + id + '&lv=-1&kv=-1&tv=-1',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
music_req => {
|
||||
res.send(music_req)
|
||||
},
|
||||
err => res.status(502).send('fetch error')
|
||||
)
|
||||
.then(result => {
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.send(result)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(502).send('fetch error')
|
||||
})
|
||||
})
|
||||
|
||||
module.exports = router
|
||||
|
28
router/mv.js
28
router/mv.js
@ -1,17 +1,25 @@
|
||||
const express = require('express')
|
||||
const router = express()
|
||||
const { createRequest } = require('../util/util')
|
||||
const request = require('request')
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||
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')
|
||||
})
|
||||
const data = {
|
||||
id: mvid
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
`/weapi/mv/detail`,
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
music_req => {
|
||||
res.send(music_req)
|
||||
},
|
||||
err => res.status(502).send('fetch error')
|
||||
)
|
||||
})
|
||||
|
||||
module.exports = router
|
||||
|
@ -7,7 +7,7 @@ router.get('/', (req, res) => {
|
||||
const data = {}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/api/personalized/playlist',
|
||||
'/weapi/personalized/playlist',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
|
@ -7,7 +7,7 @@ router.get('/', (req, res) => {
|
||||
const data = {}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/api/personalized/djprogram',
|
||||
'/weapi/personalized/djprogram',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
|
@ -7,7 +7,7 @@ router.get('/', (req, res) => {
|
||||
const data = {}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/api/personalized/mv',
|
||||
'/weapi/personalized/mv',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
|
@ -9,7 +9,7 @@ router.get('/', (req, res) => {
|
||||
}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/api/personalized/newsong',
|
||||
'/weapi/personalized/newsong',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
|
@ -7,7 +7,7 @@ router.get('/', (req, res) => {
|
||||
const data = {}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/api/personalized/privatecontent',
|
||||
'/weapi/personalized/privatecontent',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
|
@ -7,7 +7,7 @@ router.get('/', (req, res) => {
|
||||
const data = {}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/api/playlist/hottags',
|
||||
'/weapi/playlist/hottags',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
|
@ -1,23 +1,30 @@
|
||||
const express = require('express')
|
||||
const router = express()
|
||||
const { createRequest } = require('../util/util')
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||
const keywords = req.query.keywords
|
||||
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 => {
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.send(result)
|
||||
})
|
||||
.catch(err => {
|
||||
res.status(502).send('fetch error')
|
||||
})
|
||||
// *(type)* 搜索单曲(1),歌手(100),专辑(10),歌单(1000),用户(1002)
|
||||
const data = {
|
||||
csrf_token: '',
|
||||
limit,
|
||||
type,
|
||||
s: keywords
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/weapi/search/get',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
music_req => res.send(music_req),
|
||||
err => res.status(502).send('fetch error')
|
||||
)
|
||||
})
|
||||
|
||||
module.exports = router
|
||||
|
@ -1,24 +0,0 @@
|
||||
const express = require('express')
|
||||
const router = express()
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||
const data = {
|
||||
csrf_token: '',
|
||||
type: req.query.type || 1,
|
||||
s: keywords || req.query.keywords || ''
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
'/api/search/hot?type=1',
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
music_req => res.send(music_req),
|
||||
err => res.status(502).send('fetch error')
|
||||
)
|
||||
})
|
||||
|
||||
module.exports = router
|
@ -7,7 +7,7 @@ router.get('/', (req, res) => {
|
||||
const data = {
|
||||
csrf_token: '',
|
||||
type: req.query.type || 1,
|
||||
s: req.query.keywords || req.query.keywords || ''
|
||||
s: req.query.keywords || ''
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
@ -18,7 +18,6 @@ router.get('/', (req, res) => {
|
||||
cookie,
|
||||
music_req => {
|
||||
res.send(music_req)
|
||||
console.log(Object.keys(JSON.parse(music_req).result))
|
||||
},
|
||||
err => res.status(502).send('fetch error')
|
||||
)
|
||||
|
@ -6,7 +6,7 @@ router.get('/', (req, res) => {
|
||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||
const data = {
|
||||
csrf_token: '',
|
||||
s: req.query.keywords || req.query.keywords || ''
|
||||
s: req.query.keywords || ''
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
|
@ -11,7 +11,7 @@ router.get('/', (req, res) => {
|
||||
}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
`/api/v1/user/detail/${id}`,
|
||||
`/weapi/v1/user/detail/${id}`,
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
|
@ -1,6 +1,6 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createRequest } = require("../util/util")
|
||||
const { createRequest } = require('../util/util')
|
||||
|
||||
describe('测试获取歌手专辑列表是否正常', () => {
|
||||
it('数据的 code 应该为200', done => {
|
||||
@ -8,10 +8,10 @@ describe('测试获取歌手专辑列表是否正常', () => {
|
||||
createRequest(`/api/album/${id}`, 'GET', null)
|
||||
.then(result => {
|
||||
const code = JSON.parse(result).code
|
||||
console.log("code:" + code)
|
||||
console.log('code:' + code)
|
||||
assert(code === 200)
|
||||
done()
|
||||
})
|
||||
.catch(err => done(err))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,16 +1,16 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createWebAPIRequest } = require("../util/util")
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
describe('测试获取评论是否正常', () => {
|
||||
it('数据的 code 应该为200', done => {
|
||||
const rid = 32311
|
||||
const cookie = ''
|
||||
const data = {
|
||||
"offset": 0,
|
||||
"rid": rid,
|
||||
"limit": 20,
|
||||
"csrf_token": ""
|
||||
offset: 0,
|
||||
rid: rid,
|
||||
limit: 20,
|
||||
csrf_token: ''
|
||||
}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
@ -20,7 +20,7 @@ describe('测试获取评论是否正常', () => {
|
||||
cookie,
|
||||
music_req => {
|
||||
console.log({
|
||||
code:JSON.parse(music_req).code
|
||||
code: JSON.parse(music_req).code
|
||||
})
|
||||
assert(JSON.parse(music_req).code === 200)
|
||||
done()
|
||||
@ -28,4 +28,4 @@ describe('测试获取评论是否正常', () => {
|
||||
err => done(err)
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,20 +1,20 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createWebAPIRequest } = require("../util/util")
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
console.log("注意:测试登陆需要替换这里的账号密码!!!")
|
||||
console.log('注意:测试登陆需要替换这里的账号密码!!!')
|
||||
|
||||
describe('测试登录是否正常', () => {
|
||||
it('手机登录 code 应该等于200', done => {
|
||||
const phone = "换成你的手机号"
|
||||
const password = "换成你的密码"
|
||||
const phone = '换成你的手机号'
|
||||
const password = '换成你的密码'
|
||||
let cookie = ''
|
||||
const md5sum = crypto.createHash('md5')
|
||||
md5sum.update(password)
|
||||
const data = {
|
||||
'phone': phone,
|
||||
'password': md5sum.digest('hex'),
|
||||
'rememberLogin': 'true'
|
||||
phone: phone,
|
||||
password: md5sum.digest('hex'),
|
||||
rememberLogin: 'true'
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
@ -38,15 +38,15 @@ describe('测试登录是否正常', () => {
|
||||
})
|
||||
|
||||
it('邮箱登录 code 应该等于200', done => {
|
||||
const email = "换成你的163网易邮箱"
|
||||
const password = "换成你的密码"
|
||||
const email = '换成你的163网易邮箱'
|
||||
const password = '换成你的密码'
|
||||
const cookie = ''
|
||||
const md5sum = crypto.createHash('md5')
|
||||
md5sum.update(password)
|
||||
const data = {
|
||||
'username': email,
|
||||
'password': md5sum.digest('hex'),
|
||||
'rememberLogin': 'true'
|
||||
username: email,
|
||||
password: md5sum.digest('hex'),
|
||||
rememberLogin: 'true'
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
@ -68,4 +68,4 @@ describe('测试登录是否正常', () => {
|
||||
err => done(err)
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,18 +1,22 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createRequest } = require("../util/util")
|
||||
const { createRequest } = require('../util/util')
|
||||
|
||||
describe('测试获取歌词是否正常', () => {
|
||||
it('数据应该有 lrc 字段', done => {
|
||||
const id = 347230
|
||||
createRequest('/api/song/lyric?os=osx&id=' + id + '&lv=-1&kv=-1&tv=-1', 'GET', null)
|
||||
createRequest(
|
||||
'/api/song/lyric?os=osx&id=' + id + '&lv=-1&kv=-1&tv=-1',
|
||||
'GET',
|
||||
null
|
||||
)
|
||||
.then(result => {
|
||||
console.log(JSON.parse(result).lrc)
|
||||
assert(typeof JSON.parse(result).lrc!=='undefined')
|
||||
// console.log(JSON.parse(result).lrc)
|
||||
assert(typeof JSON.parse(result).lrc !== 'undefined')
|
||||
done()
|
||||
})
|
||||
.catch(err => {
|
||||
done(err)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,15 +1,15 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createWebAPIRequest } = require("../util/util")
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
|
||||
describe('测试获取歌曲是否正常', () => {
|
||||
it('歌曲的 url 不应该为空', done => {
|
||||
const id = 347230
|
||||
const br = 999000
|
||||
const data = {
|
||||
"ids": [id],
|
||||
"br": br,
|
||||
"csrf_token": ""
|
||||
ids: [id],
|
||||
br: br,
|
||||
csrf_token: ''
|
||||
}
|
||||
const cookie = ''
|
||||
|
||||
@ -29,4 +29,4 @@ describe('测试获取歌曲是否正常', () => {
|
||||
}
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,13 +1,14 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createRequest } = require("../util/util")
|
||||
const { createRequest } = require('../util/util')
|
||||
|
||||
describe('测试搜索是否正常', () => {
|
||||
it('获取到的数据的 name 应该和搜索关键词一致', done => {
|
||||
const keywords = "海阔天空"
|
||||
const keywords = '海阔天空'
|
||||
const type = 1
|
||||
const limit = 30
|
||||
const data = 's=' + keywords + '&limit=' + limit + '&type=' + type + '&offset=0'
|
||||
const data =
|
||||
's=' + keywords + '&limit=' + limit + '&type=' + type + '&offset=0'
|
||||
createRequest('/api/search/pc/', 'POST', data)
|
||||
.then(result => {
|
||||
console.log(JSON.parse(result).result.songs[0].mp3Url)
|
||||
@ -18,4 +19,4 @@ describe('测试搜索是否正常', () => {
|
||||
done(err)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user