提交 cf5af2e6 编写于 作者: Z zhuangtongfa

增加缓存机制

上级 79d1cba8
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() ...@@ -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')) ...@@ -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')) ...@@ -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')) ...@@ -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')) ...@@ -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')) ...@@ -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')) ...@@ -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')) ...@@ -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')) ...@@ -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')) ...@@ -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
......
此差异已折叠。
...@@ -15,6 +15,7 @@ ...@@ -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"
......
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,
...@@ -22,4 +22,4 @@ router.get("/", (req, res) => { ...@@ -22,4 +22,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
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,
...@@ -22,4 +22,4 @@ router.get("/", (req, res) => { ...@@ -22,4 +22,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
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(
...@@ -25,4 +25,4 @@ router.get("/", (req, res) => { ...@@ -25,4 +25,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
//最新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) => { ...@@ -26,5 +26,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router
module.exports = router
\ No newline at end of file
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) => { ...@@ -15,5 +19,4 @@ router.get("/", (req, res) => {
}) })
}) })
module.exports = router
module.exports = router
\ No newline at end of file
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) => { ...@@ -39,5 +39,4 @@ router.get("/", (req, res) => {
}) })
}) })
module.exports = router
module.exports = router
\ No newline at end of file
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) => { ...@@ -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
\ No newline at end of file
//分类歌单 //分类歌单
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
...@@ -26,4 +26,4 @@ router.get("/", (req, res) => { ...@@ -26,4 +26,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
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
} }
...@@ -22,4 +22,4 @@ router.get("/", (req, res) => { ...@@ -22,4 +22,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
//新歌上架 //新歌上架
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) => { ...@@ -26,5 +26,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router
module.exports = router
\ No newline at end of file
// 用户详情 // 用户详情
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',
`/api/v1/user/detail/${id}`, `/api/v1/user/detail/${id}`,
...@@ -22,4 +22,4 @@ router.get("/", (req, res) => { ...@@ -22,4 +22,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
// 用户电台 // 用户电台
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',
`/weapi/dj/program/${id}`, `/weapi/dj/program/${id}`,
...@@ -24,4 +24,4 @@ router.get("/", (req, res) => { ...@@ -24,4 +24,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
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',
...@@ -21,4 +21,4 @@ router.get("/", (req, res) => { ...@@ -21,4 +21,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
//播放记录 //播放记录
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) => { ...@@ -24,6 +24,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router
module.exports = router
\ No newline at end of file
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',
...@@ -18,4 +18,4 @@ router.get("/", (req, res) => { ...@@ -18,4 +18,4 @@ router.get("/", (req, res) => {
) )
}) })
module.exports = router module.exports = router
\ No newline at end of file
...@@ -2,36 +2,37 @@ ...@@ -2,36 +2,37 @@
'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)
key = key + keys.charAt(pos) key = key + keys.charAt(pos)
} }
return key return key
} }
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,16 +40,16 @@ function aesEncrypt(text, secKey) { ...@@ -39,16 +40,16 @@ 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
} }
function rsaEncrypt(text, pubKey, modulus) { function rsaEncrypt(text, pubKey, modulus) {
const _text = text.split('').reverse().join('') const _text = text.split('').reverse().join('')
const biText = bigInt(new Buffer(_text).toString('hex'), 16), const biText = bigInt(new Buffer(_text).toString('hex'), 16),
biEx = bigInt(pubKey, 16), biEx = bigInt(pubKey, 16),
biMod = bigInt(modulus, 16), biMod = bigInt(modulus, 16),
biRet = biText.modPow(biEx, biMod) biRet = biText.modPow(biEx, biMod)
return zfill(biRet.toString(16), 256) return zfill(biRet.toString(16), 256)
} }
...@@ -63,4 +64,4 @@ function Encrypt(obj) { ...@@ -63,4 +64,4 @@ function Encrypt(obj) {
} }
} }
module.exports = Encrypt module.exports = Encrypt
\ No newline at end of file
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( ...@@ -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()
} }
...@@ -121,4 +126,4 @@ function createRequest(path, method, data, callback, errorcallback) { ...@@ -121,4 +126,4 @@ function createRequest(path, method, data, callback, errorcallback) {
module.exports = { module.exports = {
createWebAPIRequest, createWebAPIRequest,
createRequest createRequest
} }
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册