mirror of
https://github.com/lyz05/danmaku.git
synced 2026-04-14 02:20:05 +08:00
feat: 优化代码
This commit is contained in:
1
app.js
1
app.js
@@ -18,6 +18,7 @@ const app = express();
|
||||
// view engine setup
|
||||
app.set('views', path.join(__dirname, 'views'));
|
||||
app.set('view engine', 'ejs');
|
||||
app.set('trust proxy', true)
|
||||
|
||||
app.use(logger('dev'));
|
||||
app.use(express.json());
|
||||
|
||||
@@ -6,6 +6,7 @@ const cookie = require('cookie');
|
||||
const {filesize} = require('filesize');
|
||||
const moment = require('moment');
|
||||
const axios = require('axios');
|
||||
const leancloud = require('../utils/leancloud')
|
||||
|
||||
function getscheme(req) {
|
||||
return req.headers['x-forwarded-proto'] || req.protocol;
|
||||
@@ -45,6 +46,12 @@ async function updateDatabase() {
|
||||
// TODO TG代理 日志生成
|
||||
router.get('/', async function (req, res, next) {
|
||||
const database = await updateDatabase();
|
||||
leancloud.add('SubAccess',{
|
||||
ip: req.ip,
|
||||
ua: req.headers['user-agent'],
|
||||
user: req.query.user,
|
||||
ctype: req.query.ctype
|
||||
})
|
||||
if (req.query.user) {
|
||||
const userinfo = database.user[req.query.user]
|
||||
if (userinfo) {
|
||||
|
||||
@@ -26,6 +26,7 @@ function Tencentvideo() {
|
||||
}
|
||||
console.log('vid:', vid)
|
||||
let res = await axios.get(url);
|
||||
//TODO 腾讯视频标题获取
|
||||
const $ = whacko.load(res.data, null, false);
|
||||
this.title = $("title")[0].children[0].data;
|
||||
try {
|
||||
|
||||
@@ -10,14 +10,7 @@ function getscheme(req) {
|
||||
return req.headers['x-forwarded-proto'] || req.protocol;
|
||||
}
|
||||
|
||||
function getClientIp(req) {
|
||||
return req.headers['x-forwarded-for'] ||
|
||||
req.connection.remoteAddress ||
|
||||
req.socket.remoteAddress ||
|
||||
req.connection.socket.remoteAddress;
|
||||
}
|
||||
|
||||
async function build_response(url,req) {
|
||||
async function build_response(url, req) {
|
||||
try {
|
||||
await axios.get(url)
|
||||
} catch (e) {
|
||||
@@ -38,7 +31,9 @@ async function build_response(url,req) {
|
||||
ret = await fc.work(url)
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
leancloud.danmakuErrorAdd({ip: getClientIp(req), url: url, err: e})
|
||||
let err = JSON.stringify(e, Object.getOwnPropertyNames(e))
|
||||
err = JSON.parse(err)
|
||||
leancloud.add('DanmakuError', {ip: req.ip, url, err})
|
||||
return {msg: '弹幕解析过程中程序报错退出,请等待管理员修复!或者换条链接试试!'}
|
||||
}
|
||||
return ret
|
||||
@@ -46,7 +41,7 @@ async function build_response(url,req) {
|
||||
|
||||
/* GET home page. */
|
||||
router.get('/', async function (req, res, next) {
|
||||
leancloud.danmakuAccessAdd({ip: getClientIp(req), url: req.query.url, ua: req.headers['user-agent']})
|
||||
leancloud.add('DanmakuAccess', {remoteIP: req.ip, url: req.query.url, UA: req.headers['user-agent']})
|
||||
//检查是否包含URL参数
|
||||
if (!req.query.url) {
|
||||
const urls = [mgtv.example_urls[0], bilibili.example_urls[0], tencentvideo.example_urls[0], youku.example_urls[0], iqiyi.example_urls[0]];
|
||||
@@ -55,7 +50,7 @@ router.get('/', async function (req, res, next) {
|
||||
} else {
|
||||
const url = req.query.url;
|
||||
const download = (req.query.download === 'on');
|
||||
const ret = await build_response(url,req)
|
||||
const ret = await build_response(url, req)
|
||||
memory() //显示内存使用量
|
||||
if (ret.msg !== 'ok') {
|
||||
res.status(403).send(ret.msg)
|
||||
|
||||
@@ -4,16 +4,9 @@ const libqqwry = require('lib-qqwry');
|
||||
const dns = require('dns');
|
||||
const qqwry = libqqwry(); //初始化IP库解析器
|
||||
|
||||
function getClientIp(req) {
|
||||
return req.headers['x-forwarded-for'] ||
|
||||
req.connection.remoteAddress ||
|
||||
req.socket.remoteAddress ||
|
||||
req.connection.socket.remoteAddress;
|
||||
}
|
||||
|
||||
/* GET home page. */
|
||||
router.get('/', function (req, res, next) {
|
||||
let ip = req.query.name || getClientIp(req);
|
||||
let ip = req.query.name || req.ip;
|
||||
dns.lookup(ip, (err, address, family) => {
|
||||
let ipL;
|
||||
if (err) {
|
||||
|
||||
@@ -9,17 +9,6 @@ AV.init({
|
||||
serverURL: "https://dbvunek8.lc-cn-e1-shared.com"
|
||||
});
|
||||
|
||||
|
||||
function danmakuAccessAdd(obj) {
|
||||
const {ip, url, ua} = obj;
|
||||
const DanmakuAccessObject = AV.Object.extend('DanmakuAccess');
|
||||
const record = new DanmakuAccessObject();
|
||||
record.set('remoteIP', ip);
|
||||
record.set('url', url);
|
||||
record.set('UA', ua);
|
||||
record.save().then()
|
||||
}
|
||||
|
||||
function currentDay() {
|
||||
const date = new Date();
|
||||
const start = new Date(date.setHours(0, 0, 0, 0))
|
||||
@@ -50,20 +39,21 @@ async function danmakuQuery(date) {
|
||||
return await query.count()
|
||||
}
|
||||
|
||||
function danmakuErrorAdd(obj) {
|
||||
let {ip, url, err} = obj;
|
||||
const DanmakuErrorObject = AV.Object.extend('DanmakuError');
|
||||
const record = new DanmakuErrorObject();
|
||||
record.set('remoteIP', ip);
|
||||
record.set('url', url);
|
||||
//TODO: 转换成object
|
||||
err = JSON.stringify(err, Object.getOwnPropertyNames(err))
|
||||
err = JSON.parse(err)
|
||||
record.set('err', err);
|
||||
record.save().then()
|
||||
//TODO 订阅access.log
|
||||
function add(className,obj) {
|
||||
const classInstance = AV.Object.extend(className);
|
||||
const record = new classInstance();
|
||||
for (const key of Object.keys(obj)){
|
||||
record.set(key, obj[key]);
|
||||
}
|
||||
record.save().then((obj) => {
|
||||
// 成功保存之后,执行其他逻辑
|
||||
console.log(`${className}添加一条记录。objectId:${obj.id}`);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {danmakuAccessAdd, danmakuQuery, currentDay, currentMonth, lastDay, danmakuErrorAdd};
|
||||
module.exports = {danmakuQuery, currentDay, currentMonth, lastDay, add};
|
||||
|
||||
if (!module.parent) {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user