mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-07-03 13:12:08 +08:00
增加缓存机制
This commit is contained in:
parent
2bccab0e73
commit
a91bae2e86
94
app.js
94
app.js
@ -1,6 +1,9 @@
|
|||||||
const express = require('express')
|
const express = require('express')
|
||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
const apicache = require('apicache')
|
||||||
|
|
||||||
const app = express()
|
const app = express()
|
||||||
|
let cache = apicache.middleware
|
||||||
|
|
||||||
// 跨域设置
|
// 跨域设置
|
||||||
// app.all('*', function (req, res, next) {
|
// app.all('*', function (req, res, next) {
|
||||||
@ -13,7 +16,9 @@ const app = express()
|
|||||||
// next()
|
// next()
|
||||||
// })
|
// })
|
||||||
|
|
||||||
app.use(express.static('public'));
|
app.use(cache('5 minutes'))
|
||||||
|
|
||||||
|
app.use(express.static('public'))
|
||||||
|
|
||||||
// 获取专辑内容
|
// 获取专辑内容
|
||||||
app.use('/album', require('./router/album'))
|
app.use('/album', require('./router/album'))
|
||||||
@ -25,24 +30,20 @@ app.use('/artists', require('./router/artists'))
|
|||||||
app.use('/artist/album', require('./router/artist_album'))
|
app.use('/artist/album', require('./router/artist_album'))
|
||||||
|
|
||||||
//艺术家-信息
|
//艺术家-信息
|
||||||
app.use("/artist/desc", require("./router/artists_desc"))
|
app.use('/artist/desc', require('./router/artists_desc'))
|
||||||
|
|
||||||
//艺术家-mv
|
//艺术家-mv
|
||||||
app.use("/artist/mv", require("./router/artists_mv"))
|
app.use('/artist/mv', require('./router/artists_mv'))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 获取 banner
|
// 获取 banner
|
||||||
app.use('/banner', require('./router/banner'))
|
app.use('/banner', require('./router/banner'))
|
||||||
|
|
||||||
app.use('/check/music', require('./router/check_music'))
|
app.use('/check/music', require('./router/check_music'))
|
||||||
|
|
||||||
|
|
||||||
app.use('/comment/music', require('./router/comment_music'))
|
app.use('/comment/music', require('./router/comment_music'))
|
||||||
|
|
||||||
app.use('/comment/mv', require('./router/comment_mv'))
|
app.use('/comment/mv', require('./router/comment_mv'))
|
||||||
|
|
||||||
|
|
||||||
app.use('/comment/album', require('./router/comment_album'))
|
app.use('/comment/album', require('./router/comment_album'))
|
||||||
|
|
||||||
app.use('/comment/playlist', require('./router/comment_playlist'))
|
app.use('/comment/playlist', require('./router/comment_playlist'))
|
||||||
@ -53,40 +54,40 @@ app.use('/comment/like', require('./router/comment_like'))
|
|||||||
app.use('/comment/dj', require('./router/comment_dj'))
|
app.use('/comment/dj', require('./router/comment_dj'))
|
||||||
|
|
||||||
//签到
|
//签到
|
||||||
app.use("/daily_signin", require("./router/daily_signin"))
|
app.use('/daily_signin', require('./router/daily_signin'))
|
||||||
|
|
||||||
//djradio detail
|
//djradio detail
|
||||||
app.use("/dj/detail", require("./router/dj_detail"))
|
app.use('/dj/detail', require('./router/dj_detail'))
|
||||||
|
|
||||||
//dj主播 radio
|
//dj主播 radio
|
||||||
app.use("/dj/program", require("./router/dj_program"))
|
app.use('/dj/program', require('./router/dj_program'))
|
||||||
|
|
||||||
app.use("/dj/program/detail", require("./router/dj_program_detail"))
|
app.use('/dj/program/detail', require('./router/dj_program_detail'))
|
||||||
|
|
||||||
app.use("/dj/sub", require("./router/dj_sub"))
|
app.use('/dj/sub', require('./router/dj_sub'))
|
||||||
|
|
||||||
app.use("/dj/catelist", require("./router/dj_catelist"))
|
app.use('/dj/catelist', require('./router/dj_catelist'))
|
||||||
|
|
||||||
app.use("/dj/hot", require("./router/dj_hot"))
|
app.use('/dj/hot', require('./router/dj_hot'))
|
||||||
|
|
||||||
// 精选电台
|
// 精选电台
|
||||||
app.use("/dj/recommend", require("./router/dj_recommend"))
|
app.use('/dj/recommend', require('./router/dj_recommend'))
|
||||||
|
|
||||||
//精选电台-分类电台
|
//精选电台-分类电台
|
||||||
app.use("/dj/recommend/type", require("./router/dj_recommend_type"))
|
app.use('/dj/recommend/type', require('./router/dj_recommend_type'))
|
||||||
|
|
||||||
//获取动态
|
//获取动态
|
||||||
app.use("/event", require("./router/event"))
|
app.use('/event', require('./router/event'))
|
||||||
|
|
||||||
//垃圾桶
|
//垃圾桶
|
||||||
app.use("/fm_trash", require("./router/fm_trash"))
|
app.use('/fm_trash', require('./router/fm_trash'))
|
||||||
|
|
||||||
app.use("/follow", require("./router/follow"))
|
app.use('/follow', require('./router/follow'))
|
||||||
|
|
||||||
// 喜欢歌曲
|
// 喜欢歌曲
|
||||||
app.use("/like", require("./router/like"))
|
app.use('/like', require('./router/like'))
|
||||||
|
|
||||||
app.use("/likelist", require("./router/likelist"))
|
app.use('/likelist', require('./router/likelist'))
|
||||||
|
|
||||||
//手机登录
|
//手机登录
|
||||||
app.use('/login/cellphone', require('./router/loginCellphone'))
|
app.use('/login/cellphone', require('./router/loginCellphone'))
|
||||||
@ -107,31 +108,34 @@ app.use('/lyric', require('./router/lyric'))
|
|||||||
app.use('/music/url', require('./router/musicUrl'))
|
app.use('/music/url', require('./router/musicUrl'))
|
||||||
|
|
||||||
//最新 mv
|
//最新 mv
|
||||||
app.use("/mv/first", require("./router/mv_first"))
|
app.use('/mv/first', require('./router/mv_first'))
|
||||||
|
|
||||||
//播放 mv
|
//播放 mv
|
||||||
app.use("/mv/url", require("./router/mv_url"))
|
app.use('/mv/url', require('./router/mv_url'))
|
||||||
|
|
||||||
//mv
|
//mv
|
||||||
app.use("/mv", require("./router/mv"))
|
app.use('/mv', require('./router/mv'))
|
||||||
|
|
||||||
// 私人 FM
|
// 私人 FM
|
||||||
app.use("/personal_fm", require("./router/personal_fm"))
|
app.use('/personal_fm', require('./router/personal_fm'))
|
||||||
|
|
||||||
//推荐歌单
|
//推荐歌单
|
||||||
app.use("/personalized", require("./router/personalized"))
|
app.use('/personalized', require('./router/personalized'))
|
||||||
|
|
||||||
//推荐dj
|
//推荐dj
|
||||||
app.use("/personalized/djprogram", require("./router/personalized_djprogram"))
|
app.use('/personalized/djprogram', require('./router/personalized_djprogram'))
|
||||||
|
|
||||||
//推荐新音乐
|
//推荐新音乐
|
||||||
app.use("/personalized/newsong", require("./router/personalized_newsong"))
|
app.use('/personalized/newsong', require('./router/personalized_newsong'))
|
||||||
|
|
||||||
//独家放送
|
//独家放送
|
||||||
app.use("/personalized/privatecontent", require("./router/personalized_privatecontent"))
|
app.use(
|
||||||
|
'/personalized/privatecontent',
|
||||||
|
require('./router/personalized_privatecontent')
|
||||||
|
)
|
||||||
|
|
||||||
//推荐mv
|
//推荐mv
|
||||||
app.use("/personalized/mv", require("./router/personalized_mv"))
|
app.use('/personalized/mv', require('./router/personalized_mv'))
|
||||||
|
|
||||||
// 获取歌单内列表
|
// 获取歌单内列表
|
||||||
app.use('/playlist/detail', require('./router/playlist_detail'))
|
app.use('/playlist/detail', require('./router/playlist_detail'))
|
||||||
@ -144,7 +148,7 @@ app.use('/playlist/hot', require('./router/playlist_hot'))
|
|||||||
app.use('/playlist/catlist', require('./router/playlist_catlist'))
|
app.use('/playlist/catlist', require('./router/playlist_catlist'))
|
||||||
|
|
||||||
//推荐节目
|
//推荐节目
|
||||||
app.use("/program/recommend", require("./router/program_recommend"))
|
app.use('/program/recommend', require('./router/program_recommend'))
|
||||||
|
|
||||||
// 获取每日推荐歌曲
|
// 获取每日推荐歌曲
|
||||||
app.use('/recommend/songs', require('./router/recommend_songs'))
|
app.use('/recommend/songs', require('./router/recommend_songs'))
|
||||||
@ -155,7 +159,6 @@ app.use('/recommend/resource', require('./router/recommend_resource'))
|
|||||||
//取消推荐
|
//取消推荐
|
||||||
app.use('/recommend/dislike', require('./router/recommend_dislike'))
|
app.use('/recommend/dislike', require('./router/recommend_dislike'))
|
||||||
|
|
||||||
|
|
||||||
app.use('/resource/like', require('./router/resource_like'))
|
app.use('/resource/like', require('./router/resource_like'))
|
||||||
|
|
||||||
// 搜索
|
// 搜索
|
||||||
@ -171,19 +174,19 @@ app.use('/search/multimatch', require('./router/search_multimatch'))
|
|||||||
app.use('/search/suggest', require('./router/search_suggest'))
|
app.use('/search/suggest', require('./router/search_suggest'))
|
||||||
|
|
||||||
//simi ,相似歌单
|
//simi ,相似歌单
|
||||||
app.use("/simi/playlist", require("./router/simi_playlist"))
|
app.use('/simi/playlist', require('./router/simi_playlist'))
|
||||||
|
|
||||||
//simi ,相似歌曲
|
//simi ,相似歌曲
|
||||||
app.use("/simi/song", require("./router/simi_song"))
|
app.use('/simi/song', require('./router/simi_song'))
|
||||||
|
|
||||||
//相似 mv
|
//相似 mv
|
||||||
app.use("/simi/mv", require("./router/simi_mv"))
|
app.use('/simi/mv', require('./router/simi_mv'))
|
||||||
|
|
||||||
//simi ,相似关注的用户
|
//simi ,相似关注的用户
|
||||||
app.use("/simi/user", require("./router/simi_user"))
|
app.use('/simi/user', require('./router/simi_user'))
|
||||||
|
|
||||||
//相似歌手
|
//相似歌手
|
||||||
app.use("/simi/artist", require("./router/simi_artists"))
|
app.use('/simi/artist', require('./router/simi_artists'))
|
||||||
|
|
||||||
// 获取音乐详情
|
// 获取音乐详情
|
||||||
app.use('/song/detail', require('./router/song_detail'))
|
app.use('/song/detail', require('./router/song_detail'))
|
||||||
@ -199,10 +202,13 @@ app.use('/top/list', require('./router/top_list'))
|
|||||||
app.use('/top/mv', require('./router/top_mv'))
|
app.use('/top/mv', require('./router/top_mv'))
|
||||||
|
|
||||||
//分类歌单
|
//分类歌单
|
||||||
app.use("/top/playlist", require("./router/top_playlist"))
|
app.use('/top/playlist', require('./router/top_playlist'))
|
||||||
|
|
||||||
//精品歌单
|
//精品歌单
|
||||||
app.use("/top/playlist/highquality", require("./router/top_playlist_highquality"))
|
app.use(
|
||||||
|
'/top/playlist/highquality',
|
||||||
|
require('./router/top_playlist_highquality')
|
||||||
|
)
|
||||||
|
|
||||||
app.use('/top/song', require('./router/top_songs'))
|
app.use('/top/song', require('./router/top_songs'))
|
||||||
|
|
||||||
@ -219,12 +225,12 @@ app.use('/user/playlist', require('./router/user_playlist'))
|
|||||||
app.use('/user/audio', require('./router/user_audio'))
|
app.use('/user/audio', require('./router/user_audio'))
|
||||||
|
|
||||||
//云盘数据
|
//云盘数据
|
||||||
app.use("/user/cloud", require("./router/user_cloud"))
|
app.use('/user/cloud', require('./router/user_cloud'))
|
||||||
|
|
||||||
//云盘数据详情? 暂时不要使用
|
//云盘数据详情? 暂时不要使用
|
||||||
app.use("/user/cloud/search", require("./router/user_cloud_search"))
|
app.use('/user/cloud/search', require('./router/user_cloud_search'))
|
||||||
//用户动态
|
//用户动态
|
||||||
app.use("/user/event", require("./router/user_event"))
|
app.use('/user/event', require('./router/user_event'))
|
||||||
|
|
||||||
app.use('/user/detail', require('./router/user_detail'))
|
app.use('/user/detail', require('./router/user_detail'))
|
||||||
|
|
||||||
@ -236,9 +242,7 @@ app.use('/user/follows', require('./router/user_follows'))
|
|||||||
|
|
||||||
app.use('/user/subcount', require('./router/user_subcount'))
|
app.use('/user/subcount', require('./router/user_subcount'))
|
||||||
|
|
||||||
app.use("/user/record", require("./router/user_playrecord"))
|
app.use('/user/record', require('./router/user_playrecord'))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const port = process.env.PORT || 3000
|
const port = process.env.PORT || 3000
|
||||||
|
|
||||||
|
343
package-lock.json
generated
343
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -15,6 +15,7 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"apicache": "^0.9.0",
|
||||||
"big-integer": "^1.6.17",
|
"big-integer": "^1.6.17",
|
||||||
"express": "^4.15.2",
|
"express": "^4.15.2",
|
||||||
"request": "^2.81.0"
|
"request": "^2.81.0"
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
songid: req.query.id,
|
songid: req.query.id,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
songid: req.query.id,
|
songid: req.query.id,
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const id = parseInt(req.query.ids)
|
const id = parseInt(req.query.ids)
|
||||||
const data = {
|
const data = {
|
||||||
// "id": id,
|
// "id": id,
|
||||||
'c': JSON.stringify([{ id: id }]),
|
c: JSON.stringify([{ id: id }]),
|
||||||
"ids": '[' + id + ']',
|
ids: '[' + id + ']',
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
console.log(data)
|
console.log(data)
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
//最新mv
|
//最新mv
|
||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
// type ALL, ZH,EA,KR,JP
|
// type ALL, ZH,EA,KR,JP
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
'offset': req.query.offset,
|
offset: req.query.offset,
|
||||||
'total': true,
|
total: true,
|
||||||
'limit': req.query.limit,
|
limit: req.query.limit,
|
||||||
'area': req.query.type,
|
area: req.query.type,
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
'music.163.com',
|
'music.163.com',
|
||||||
@ -26,5 +26,4 @@ router.get("/", (req, res) => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
@ -1,13 +1,17 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createRequest } = require("../util/util")
|
const { createRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const offset = req.query.offset || 0
|
const offset = req.query.offset || 0
|
||||||
const limit = req.query.limit || 50
|
const limit = req.query.limit || 50
|
||||||
createRequest(`/api/artist/top?offset=${offset}&total=false&limit=${limit}`, 'GET', null)
|
createRequest(
|
||||||
|
`/api/artist/top?offset=${offset}&total=false&limit=${limit}`,
|
||||||
|
'GET',
|
||||||
|
null
|
||||||
|
)
|
||||||
.then(result => {
|
.then(result => {
|
||||||
res.setHeader("Content-Type", "application/json")
|
res.setHeader('Content-Type', 'application/json')
|
||||||
res.send(result)
|
res.send(result)
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
@ -15,5 +19,4 @@ router.get("/", (req, res) => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
@ -1,37 +1,37 @@
|
|||||||
const top_list_all = {
|
const top_list_all = {
|
||||||
"0": ['云音乐新歌榜', '/api/playlist/detail?id=3779629'],
|
'0': ['云音乐新歌榜', '/api/playlist/detail?id=3779629'],
|
||||||
"1": ['云音乐热歌榜', '/api/playlist/detail?id=3778678'],
|
'1': ['云音乐热歌榜', '/api/playlist/detail?id=3778678'],
|
||||||
"2": ['网易原创歌曲榜', '/api/playlist/detail?id=2884035'],
|
'2': ['网易原创歌曲榜', '/api/playlist/detail?id=2884035'],
|
||||||
"3": ['云音乐飙升榜', '/api/playlist/detail?id=19723756'],
|
'3': ['云音乐飙升榜', '/api/playlist/detail?id=19723756'],
|
||||||
"4": ['云音乐电音榜', '/api/playlist/detail?id=10520166'],
|
'4': ['云音乐电音榜', '/api/playlist/detail?id=10520166'],
|
||||||
"5": ['UK排行榜周榜', '/api/playlist/detail?id=180106'],
|
'5': ['UK排行榜周榜', '/api/playlist/detail?id=180106'],
|
||||||
"6": ['美国Billboard周榜', '/api/playlist/detail?id=60198'],
|
'6': ['美国Billboard周榜', '/api/playlist/detail?id=60198'],
|
||||||
"7": ['KTV嗨榜', '/api/playlist/detail?id=21845217'],
|
'7': ['KTV嗨榜', '/api/playlist/detail?id=21845217'],
|
||||||
"8": ['iTunes榜', '/api/playlist/detail?id=11641012'],
|
'8': ['iTunes榜', '/api/playlist/detail?id=11641012'],
|
||||||
"9": ['Hit FM Top榜', '/api/playlist/detail?id=120001'],
|
'9': ['Hit FM Top榜', '/api/playlist/detail?id=120001'],
|
||||||
"10": ['日本Oricon周榜', '/api/playlist/detail?id=60131'],
|
'10': ['日本Oricon周榜', '/api/playlist/detail?id=60131'],
|
||||||
"11": ['韩国Melon排行榜周榜', '/api/playlist/detail?id=3733003'],
|
'11': ['韩国Melon排行榜周榜', '/api/playlist/detail?id=3733003'],
|
||||||
"12": ['韩国Mnet排行榜周榜', '/api/playlist/detail?id=60255'],
|
'12': ['韩国Mnet排行榜周榜', '/api/playlist/detail?id=60255'],
|
||||||
"13": ['韩国Melon原声周榜', '/api/playlist/detail?id=46772709'],
|
'13': ['韩国Melon原声周榜', '/api/playlist/detail?id=46772709'],
|
||||||
"14": ['中国TOP排行榜(港台榜)', '/api/playlist/detail?id=112504'],
|
'14': ['中国TOP排行榜(港台榜)', '/api/playlist/detail?id=112504'],
|
||||||
"15": ['中国TOP排行榜(内地榜)', '/api/playlist/detail?id=64016'],
|
'15': ['中国TOP排行榜(内地榜)', '/api/playlist/detail?id=64016'],
|
||||||
"16": ['香港电台中文歌曲龙虎榜', '/api/playlist/detail?id=10169002'],
|
'16': ['香港电台中文歌曲龙虎榜', '/api/playlist/detail?id=10169002'],
|
||||||
"17": ['华语金曲榜', '/api/playlist/detail?id=4395559'],
|
'17': ['华语金曲榜', '/api/playlist/detail?id=4395559'],
|
||||||
"18": ['中国嘻哈榜', '/api/playlist/detail?id=1899724'],
|
'18': ['中国嘻哈榜', '/api/playlist/detail?id=1899724'],
|
||||||
"19": ['法国 NRJ EuroHot 30周榜', '/api/playlist/detail?id=27135204'],
|
'19': ['法国 NRJ EuroHot 30周榜', '/api/playlist/detail?id=27135204'],
|
||||||
"20": ['台湾Hito排行榜', '/api/playlist/detail?id=112463'],
|
'20': ['台湾Hito排行榜', '/api/playlist/detail?id=112463'],
|
||||||
"21": ['Beatport全球电子舞曲榜', '/api/playlist/detail?id=3812895']
|
'21': ['Beatport全球电子舞曲榜', '/api/playlist/detail?id=3812895']
|
||||||
}
|
}
|
||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createRequest } = require("../util/util")
|
const { createRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const idx = req.query.idx
|
const idx = req.query.idx
|
||||||
const action = 'http://music.163.com' + top_list_all[idx][1]
|
const action = 'http://music.163.com' + top_list_all[idx][1]
|
||||||
createRequest(`${action}`, 'GET', null)
|
createRequest(`${action}`, 'GET', null)
|
||||||
.then(result => {
|
.then(result => {
|
||||||
res.setHeader("Content-Type", "application/json")
|
res.setHeader('Content-Type', 'application/json')
|
||||||
res.send(result)
|
res.send(result)
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
@ -39,5 +39,4 @@ router.get("/", (req, res) => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
@ -1,14 +1,14 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
'offset': req.query.offset || 0,
|
offset: req.query.offset || 0,
|
||||||
'total': true,
|
total: true,
|
||||||
'limit': req.query.limit || 30,
|
limit: req.query.limit || 30,
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
|
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
@ -18,13 +18,11 @@ router.get("/", (req, res) => {
|
|||||||
data,
|
data,
|
||||||
cookie,
|
cookie,
|
||||||
music_req => {
|
music_req => {
|
||||||
res.setHeader("Content-Type", "application/json")
|
res.setHeader('Content-Type', 'application/json')
|
||||||
res.send(music_req)
|
res.send(music_req)
|
||||||
},
|
},
|
||||||
err => res.status(502).send('fetch error')
|
err => res.status(502).send('fetch error')
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
@ -1,14 +1,14 @@
|
|||||||
//分类歌单
|
//分类歌单
|
||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
// order可为 'hot' 可为 'new'
|
// order可为 'hot' 可为 'new'
|
||||||
const data = {
|
const data = {
|
||||||
cat: req.query.cat || "全部",
|
cat: req.query.cat || '全部',
|
||||||
order: req.query.order || "hot",
|
order: req.query.order || 'hot',
|
||||||
offset: req.query.offset || 0,
|
offset: req.query.offset || 0,
|
||||||
total: req.query.total ? 'true' : 'false',
|
total: req.query.total ? 'true' : 'false',
|
||||||
limit: req.query.limit || 50
|
limit: req.query.limit || 50
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
cat: req.query.cat || "全部",
|
cat: req.query.cat || '全部',
|
||||||
offset: req.query.offset || 0,
|
offset: req.query.offset || 0,
|
||||||
limit: req.query.limit || 20
|
limit: req.query.limit || 20
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
//新歌上架
|
//新歌上架
|
||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
// type ALL, ZH,EA,KR,JP
|
// type ALL, ZH,EA,KR,JP
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
'offset': request.query.offset,
|
offset: request.query.offset,
|
||||||
'total': true,
|
total: true,
|
||||||
'limit': request.query.limit,
|
limit: request.query.limit,
|
||||||
'area': request.query.type,
|
area: request.query.type,
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
'music.163.com',
|
'music.163.com',
|
||||||
@ -26,5 +26,4 @@ router.get("/", (req, res) => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
@ -1,13 +1,13 @@
|
|||||||
// 用户详情
|
// 用户详情
|
||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const id = req.query.uid
|
const id = req.query.uid
|
||||||
const data = {
|
const data = {
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
'music.163.com',
|
'music.163.com',
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
// 用户电台
|
// 用户电台
|
||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const id = req.query.uid
|
const id = req.query.uid
|
||||||
const data = {
|
const data = {
|
||||||
'offset': req.query.offset || '0',
|
offset: req.query.offset || '0',
|
||||||
'limit': req.query.limit || 30,
|
limit: req.query.limit || 30,
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
'music.163.com',
|
'music.163.com',
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
"offset": 0,
|
offset: 0,
|
||||||
"uid": req.query.uid,
|
uid: req.query.uid,
|
||||||
"limit": 1000,
|
limit: 1000,
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
'music.163.com',
|
'music.163.com',
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
//播放记录
|
//播放记录
|
||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
|
|
||||||
// type=1时只返回weekData, type=0时返回allData
|
// type=1时只返回weekData, type=0时返回allData
|
||||||
const data = {
|
const data = {
|
||||||
'type': req.query.type || 0,
|
type: req.query.type || 0,
|
||||||
uid: req.query.uid, //用户 id,
|
uid: req.query.uid, //用户 id,
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
const action = `/weapi/v1/play/record`
|
const action = `/weapi/v1/play/record`
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
@ -24,6 +24,4 @@ router.get("/", (req, res) => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
@ -1,11 +1,11 @@
|
|||||||
const express = require("express")
|
const express = require('express')
|
||||||
const router = express()
|
const router = express()
|
||||||
const { createWebAPIRequest } = require("../util/util")
|
const { createWebAPIRequest } = require('../util/util')
|
||||||
|
|
||||||
router.get("/", (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
const cookie = req.get('Cookie') ? req.get('Cookie') : ''
|
||||||
const data = {
|
const data = {
|
||||||
"csrf_token": ""
|
csrf_token: ''
|
||||||
}
|
}
|
||||||
createWebAPIRequest(
|
createWebAPIRequest(
|
||||||
'music.163.com',
|
'music.163.com',
|
||||||
|
@ -2,24 +2,25 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
const bigInt = require('big-integer')
|
const bigInt = require('big-integer')
|
||||||
const modulus = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
|
const modulus =
|
||||||
|
'00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
|
||||||
const nonce = '0CoJUm6Qyw8W8jud'
|
const nonce = '0CoJUm6Qyw8W8jud'
|
||||||
const pubKey = '010001'
|
const pubKey = '010001'
|
||||||
|
|
||||||
String.prototype.hexEncode = function() {
|
String.prototype.hexEncode = function() {
|
||||||
let hex, i
|
let hex, i
|
||||||
|
|
||||||
let result = ""
|
let result = ''
|
||||||
for (i = 0; i < this.length; i++) {
|
for (i = 0; i < this.length; i++) {
|
||||||
hex = this.charCodeAt(i).toString(16)
|
hex = this.charCodeAt(i).toString(16)
|
||||||
result += (""+hex).slice(-4)
|
result += ('' + hex).slice(-4)
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
function createSecretKey(size) {
|
function createSecretKey(size) {
|
||||||
const keys = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
const keys = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
|
||||||
let key = ""
|
let key = ''
|
||||||
for (let i = 0; i < size; i++) {
|
for (let i = 0; i < size; i++) {
|
||||||
let pos = Math.random() * keys.length
|
let pos = Math.random() * keys.length
|
||||||
pos = Math.floor(pos)
|
pos = Math.floor(pos)
|
||||||
@ -30,8 +31,8 @@ function createSecretKey(size) {
|
|||||||
|
|
||||||
function aesEncrypt(text, secKey) {
|
function aesEncrypt(text, secKey) {
|
||||||
const _text = text
|
const _text = text
|
||||||
const lv = new Buffer('0102030405060708', "binary")
|
const lv = new Buffer('0102030405060708', 'binary')
|
||||||
const _secKey = new Buffer(secKey, "binary")
|
const _secKey = new Buffer(secKey, 'binary')
|
||||||
const cipher = crypto.createCipheriv('AES-128-CBC', _secKey, lv)
|
const cipher = crypto.createCipheriv('AES-128-CBC', _secKey, lv)
|
||||||
let encrypted = cipher.update(_text, 'utf8', 'base64')
|
let encrypted = cipher.update(_text, 'utf8', 'base64')
|
||||||
encrypted += cipher.final('base64')
|
encrypted += cipher.final('base64')
|
||||||
@ -39,7 +40,7 @@ function aesEncrypt(text, secKey) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function zfill(str, size) {
|
function zfill(str, size) {
|
||||||
while (str.length < size) str = "0" + str
|
while (str.length < size) str = '0' + str
|
||||||
return str
|
return str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
const Encrypt = require('./crypto.js')
|
const Encrypt = require('./crypto.js')
|
||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
const querystring = require('querystring')
|
||||||
|
|
||||||
function randomUserAgent() {
|
function randomUserAgent() {
|
||||||
const userAgentList = [
|
const userAgentList = [
|
||||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36',
|
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36',
|
||||||
@ -79,7 +81,10 @@ function createWebAPIRequest(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
http_client.write(
|
http_client.write(
|
||||||
'params=' + cryptoreq.params + '&encSecKey=' + cryptoreq.encSecKey
|
querystring.stringify({
|
||||||
|
params: cryptoreq.params,
|
||||||
|
encSecKey: cryptoreq.encSecKey
|
||||||
|
})
|
||||||
)
|
)
|
||||||
http_client.end()
|
http_client.end()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user