You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
4.1 KiB
102 lines
4.1 KiB
const {
|
|
cookieToJson
|
|
} = require('../util/index');
|
|
const request = require('../util/request');
|
|
const clc = require('cli-color');
|
|
|
|
const table = {
|
|
// 注意 /album 这样的路由必须放在 /album/new 这样的路由后面
|
|
'/top/playlist/highquality': require('../module/top_playlist_highquality'),
|
|
'/album/detail/dynamic': require('../module/album_detail_dynamic'),
|
|
'/recommend/resource': require('../module/recommend_resource'),
|
|
'/playlist/subscribe': require('../module/playlist_subscribe'),
|
|
'/user/cloud/detail': require('../module/user_cloud_detail'),
|
|
'/playlist/catlist': require('../module/playlist_catlist'),
|
|
'/playlist/detail': require('../module/playlist_detail'),
|
|
'/login/cellphone': require('../module/login_cellphone'),
|
|
'/playlist/delete': require('../module/playlist_delete'),
|
|
'/playlist/create': require('../module/playlist_create'),
|
|
'/playlist/tracks': require('../module/playlist_tracks'),
|
|
'/recommend/songs': require('../module/recommend_songs'),
|
|
'/login/qr/create': require('../module/login_qr_create'),
|
|
'/login/qr/check': require('../module/login_qr_check'),
|
|
'/user/cloud/del': require('../module/user_cloud_del'),
|
|
'/toplist/artist': require('../module/toplist_artist'),
|
|
'/artist/sublist': require('../module/artist_sublist'),
|
|
'/login/refresh': require('../module/login_refresh'),
|
|
'/user/playlist': require('../module/user_playlist'),
|
|
'/album/sublist': require('../module/album_sublist'),
|
|
'/artist/album': require('../module/artist_album'),
|
|
'/personalized': require('../module/personalized'),
|
|
'/top/playlist': require('../module/top_playlist'),
|
|
'/user/account': require('../module/user_account'),
|
|
'/login/qr/key': require('../module/login_qr_key'),
|
|
'/daily_signin': require('../module/daily_signin'),
|
|
'/simi/artist': require('../module/simi_artist'),
|
|
'/song/detail': require('../module/song_detail'),
|
|
'/user/detail': require('../module/user_detail'),
|
|
'/personal_fm': require('../module/personal_fm'),
|
|
'/artist/sub': require('../module/artist_sub'),
|
|
'/mv/sublist': require('../module/mv_sublist'),
|
|
'/user/cloud': require('../module/user_cloud'),
|
|
'/album/new': require('../module/album_new'),
|
|
'/album/sub': require('../module/album_sub'),
|
|
'/mv/detail': require('../module/mv_detail'),
|
|
'/artist/mv': require('../module/artist_mv'),
|
|
'/song/url': require('../module/song_url'),
|
|
'/top/song': require('../module/top_song'),
|
|
'/scrobble': require('../module/scrobble'),
|
|
'/likelist': require('../module/likelist'),
|
|
'/fm_trash': require('../module/fm_trash'),
|
|
'/artists': require('../module/artists'),
|
|
'/simi/mv': require('../module/simi_mv'),
|
|
'/toplist': require('../module/toplist'),
|
|
'/logout': require('../module/logout'),
|
|
'/mv/url': require('../module/mv_url'),
|
|
'/mv/sub': require('../module/mv_sub'),
|
|
'/search': require('../module/search'),
|
|
'/lyric': require('../module/lyric'),
|
|
'/cloud': require('../module/cloud'),
|
|
'/album': require('../module/album'),
|
|
'/login': require('../module/login'),
|
|
'/like': require('../module/like'),
|
|
}
|
|
|
|
const handleRequest = (req, res, func) => {
|
|
if (typeof req.query.cookie === 'string') {
|
|
req.query.cookie = cookieToJson(req.query.cookie);
|
|
}
|
|
let query = Object.assign(
|
|
{},
|
|
{ cookie: req.cookies },
|
|
req.query,
|
|
req.body,
|
|
req.files,
|
|
)
|
|
return func(query, request)
|
|
.then((answer) => {
|
|
console.log(`${clc.redBright('[NetEase API]')} OK, ${decodeURIComponent(req.originalUrl)}`);
|
|
res.append('Set-Cookie', answer.cookie);
|
|
res.status(answer.status).send(answer.body);
|
|
})
|
|
.catch((answer) => {
|
|
console.log(`${clc.redBright('[NetEase API]')} ERROR 🚫 `, decodeURIComponent(req.originalUrl), {
|
|
status: answer.status,
|
|
body: answer.body,
|
|
});
|
|
if (answer.body.code == '301') answer.body.msg = '需要登录';
|
|
res.append('Set-Cookie', answer.cookie);
|
|
res.status(answer.status).send(answer.body);
|
|
});
|
|
}
|
|
|
|
let defaultExport = {};
|
|
|
|
for (const [route, func] of Object.entries(table)) {
|
|
defaultExport[route] = (req, res) => {
|
|
return handleRequest(req, res, func);
|
|
};
|
|
};
|
|
|
|
export default defaultExport;
|