mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-05-23 22:37:41 +08:00
新增版本检查功能 v2.20.0
This commit is contained in:
parent
b485c8ed40
commit
106a153597
@ -1,5 +1,9 @@
|
|||||||
# 更新日志
|
# 更新日志
|
||||||
|
|
||||||
|
### 2.20.0 | 2018.09.06
|
||||||
|
|
||||||
|
新增版本检查功能
|
||||||
|
|
||||||
### 2.19.0 | 2018.08.29
|
### 2.19.0 | 2018.08.29
|
||||||
|
|
||||||
新增获取视频数据接口,新增发送/删除评论接口,修复登录状态接口问题,完善文档 #301,感谢 @izhenyuls
|
新增获取视频数据接口,新增发送/删除评论接口,修复登录状态接口问题,完善文档 #301,感谢 @izhenyuls
|
||||||
|
126
app.js
126
app.js
@ -1,77 +1,95 @@
|
|||||||
const express = require("express");
|
const express = require('express')
|
||||||
const apicache = require("apicache");
|
const apicache = require('apicache')
|
||||||
const path = require("path");
|
const path = require('path')
|
||||||
const fs = require("fs");
|
const fs = require('fs')
|
||||||
const app = express();
|
const app = express()
|
||||||
let cache = apicache.middleware;
|
let cache = apicache.middleware
|
||||||
|
var npmview = require('npmview')
|
||||||
// 跨域设置
|
npmview('NeteaseCloudMusicApi', function(err, version, moduleInfo) {
|
||||||
app.all("*", function(req, res, next) {
|
if (err) {
|
||||||
if (req.path !== "/" && !req.path.includes(".")) {
|
console.error(err)
|
||||||
res.header("Access-Control-Allow-Credentials", true);
|
return
|
||||||
// 这里获取 origin 请求头 而不是用 *
|
|
||||||
res.header("Access-Control-Allow-Origin", req.headers["origin"] || "*");
|
|
||||||
res.header("Access-Control-Allow-Headers", "X-Requested-With");
|
|
||||||
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
|
|
||||||
res.header("Content-Type", "application/json;charset=utf-8");
|
|
||||||
}
|
}
|
||||||
next();
|
const package = require('./package.json')
|
||||||
});
|
if (package.version < version) {
|
||||||
|
console.log(
|
||||||
|
'最新版:Version:' +
|
||||||
|
version +
|
||||||
|
',当前版本:' +
|
||||||
|
package.version +
|
||||||
|
',请及时更新'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// 跨域设置
|
||||||
|
app.all('*', function(req, res, next) {
|
||||||
|
if (req.path !== '/' && !req.path.includes('.')) {
|
||||||
|
res.header('Access-Control-Allow-Credentials', true)
|
||||||
|
// 这里获取 origin 请求头 而不是用 *
|
||||||
|
res.header('Access-Control-Allow-Origin', req.headers['origin'] || '*')
|
||||||
|
res.header('Access-Control-Allow-Headers', 'X-Requested-With')
|
||||||
|
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
|
||||||
|
res.header('Content-Type', 'application/json;charset=utf-8')
|
||||||
|
}
|
||||||
|
next()
|
||||||
|
})
|
||||||
|
|
||||||
const onlyStatus200 = (req, res) => res.statusCode === 200;
|
const onlyStatus200 = (req, res) => res.statusCode === 200
|
||||||
|
|
||||||
app.use(cache("2 minutes", onlyStatus200));
|
app.use(cache('2 minutes', onlyStatus200))
|
||||||
|
|
||||||
app.use(express.static(path.resolve(__dirname, "public")));
|
app.use(express.static(path.resolve(__dirname, 'public')))
|
||||||
|
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
const proxy = req.query.proxy;
|
const proxy = req.query.proxy
|
||||||
if (proxy) {
|
if (proxy) {
|
||||||
req.headers.cookie = req.headers.cookie + `__proxy__${proxy}`;
|
req.headers.cookie = req.headers.cookie + `__proxy__${proxy}`
|
||||||
}
|
}
|
||||||
next();
|
next()
|
||||||
});
|
})
|
||||||
|
|
||||||
// 因为这几个文件对外所注册的路由 和 其他文件对外注册的路由规则不一样, 所以专门写个MAP对这些文件做特殊处理
|
// 因为这几个文件对外所注册的路由 和 其他文件对外注册的路由规则不一样, 所以专门写个MAP对这些文件做特殊处理
|
||||||
const UnusualRouteFileMap = {
|
const UnusualRouteFileMap = {
|
||||||
// key 为文件名, value 为对外注册的路由
|
// key 为文件名, value 为对外注册的路由
|
||||||
"daily_signin.js": "/daily_signin",
|
'daily_signin.js': '/daily_signin',
|
||||||
"fm_trash.js": "/fm_trash",
|
'fm_trash.js': '/fm_trash',
|
||||||
"personal_fm.js": "/personal_fm"
|
'personal_fm.js': '/personal_fm'
|
||||||
};
|
}
|
||||||
|
|
||||||
// 简化 路由 导出方式, 由这里统一对 router 目录中导出的路由做包装, 路由实际对应的文件只专注做它该做的事情, 不用重复写样板代码
|
// 简化 路由 导出方式, 由这里统一对 router 目录中导出的路由做包装, 路由实际对应的文件只专注做它该做的事情, 不用重复写样板代码
|
||||||
const { createWebAPIRequest, request } = require("./util/util");
|
const { createWebAPIRequest, request } = require('./util/util')
|
||||||
const Wrap = fn => (req, res) => fn(req, res, createWebAPIRequest, request);
|
const Wrap = fn => (req, res) => fn(req, res, createWebAPIRequest, request)
|
||||||
|
|
||||||
// 同步读取 router 目录中的js文件, 根据命名规则, 自动注册路由
|
// 同步读取 router 目录中的js文件, 根据命名规则, 自动注册路由
|
||||||
fs.readdirSync(path.resolve(__dirname, "router")).reverse().forEach(file => {
|
fs.readdirSync(path.resolve(__dirname, 'router'))
|
||||||
if (/\.js$/i.test(file) === false) {
|
.reverse()
|
||||||
return;
|
.forEach(file => {
|
||||||
}
|
if (/\.js$/i.test(file) === false) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
let route;
|
let route
|
||||||
|
|
||||||
if (typeof UnusualRouteFileMap[file] !== "undefined") {
|
if (typeof UnusualRouteFileMap[file] !== 'undefined') {
|
||||||
route = UnusualRouteFileMap[file];
|
route = UnusualRouteFileMap[file]
|
||||||
} else {
|
} else {
|
||||||
route =
|
route =
|
||||||
"/" +
|
'/' +
|
||||||
file
|
file
|
||||||
.replace(/\.js$/i, "")
|
.replace(/\.js$/i, '')
|
||||||
.replace(/_/g, "/")
|
.replace(/_/g, '/')
|
||||||
.replace(/[A-Z]/g, a => {
|
.replace(/[A-Z]/g, a => {
|
||||||
return "/" + a.toLowerCase();
|
return '/' + a.toLowerCase()
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
app.use(route, Wrap(require("./router/" + file)));
|
app.use(route, Wrap(require('./router/' + file)))
|
||||||
});
|
})
|
||||||
|
|
||||||
const port = process.env.PORT || 3000;
|
const port = process.env.PORT || 3000
|
||||||
|
|
||||||
app.listen(port, () => {
|
app.listen(port, () => {
|
||||||
console.log(`server running @ http://localhost:${port}`);
|
console.log(`server running @ http://localhost:${port}`)
|
||||||
});
|
})
|
||||||
|
|
||||||
module.exports = app;
|
module.exports = app
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "NeteaseCloudMusicApi",
|
"name": "NeteaseCloudMusicApi",
|
||||||
"version": "2.19.0",
|
"version": "2.20.0",
|
||||||
"description": "网易云音乐 NodeJS 版 API",
|
"description": "网易云音乐 NodeJS 版 API",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node app.js",
|
"start": "node app.js",
|
||||||
@ -18,7 +18,8 @@
|
|||||||
"apicache": "^1.2.1",
|
"apicache": "^1.2.1",
|
||||||
"big-integer": "^1.6.28",
|
"big-integer": "^1.6.28",
|
||||||
"express": "^4.16.3",
|
"express": "^4.16.3",
|
||||||
"request": "^2.85.0"
|
"request": "^2.85.0",
|
||||||
|
"npmview": "^0.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"intelli-espower-loader": "^1.0.1",
|
"intelli-espower-loader": "^1.0.1",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user