主页面推荐支持关闭,支持自动打开浏览器
This commit is contained in:
@@ -125,9 +125,55 @@ class PixivServer {
|
||||
logger.debug(`代理端口: ${process.env.PROXY_PORT || '未设置'}`);
|
||||
}
|
||||
logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
||||
|
||||
// 自动打开浏览器
|
||||
if (process.env.AUTO_OPEN_BROWSER === 'true') {
|
||||
this.openBrowser();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开浏览器
|
||||
*/
|
||||
openBrowser() {
|
||||
const url = `http://localhost:${this.port}`;
|
||||
logger.info(`正在打开浏览器: ${url}`);
|
||||
|
||||
const { spawn } = require('child_process');
|
||||
const os = require('os');
|
||||
|
||||
let command;
|
||||
let args = [url];
|
||||
|
||||
switch (os.platform()) {
|
||||
case 'win32':
|
||||
command = 'cmd';
|
||||
args = ['/c', 'start', '""', url];
|
||||
break;
|
||||
case 'darwin':
|
||||
command = 'open';
|
||||
break;
|
||||
case 'linux':
|
||||
command = 'xdg-open';
|
||||
break;
|
||||
default:
|
||||
logger.warn('不支持的操作系统,无法自动打开浏览器');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const child = spawn(command, args, {
|
||||
detached: true,
|
||||
stdio: 'ignore'
|
||||
});
|
||||
child.unref();
|
||||
logger.info('浏览器已打开');
|
||||
} catch (error) {
|
||||
logger.warn('打开浏览器失败:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 优雅关闭
|
||||
*/
|
||||
|
||||
@@ -36,6 +36,9 @@ function parseArguments() {
|
||||
if (['ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE'].includes(level)) {
|
||||
options.logLevel = level;
|
||||
}
|
||||
} else if (arg.startsWith('--auto-open-browser=')) {
|
||||
const value = arg.split('=')[1].toLowerCase();
|
||||
options.autoOpenBrowser = value === 'true';
|
||||
}
|
||||
// 处理 --key value 格式(向后兼容)
|
||||
else if (arg === '--proxy-port' && i + 1 < args.length) {
|
||||
@@ -56,6 +59,10 @@ function parseArguments() {
|
||||
options.logLevel = level;
|
||||
}
|
||||
i++; // 跳过下一个参数
|
||||
} else if (arg === '--auto-open-browser' && i + 1 < args.length) {
|
||||
const value = args[i + 1].toLowerCase();
|
||||
options.autoOpenBrowser = value === 'true';
|
||||
i++; // 跳过下一个参数
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,6 +101,12 @@ if (cliOptions.logLevel) {
|
||||
logger.info(`日志级别: ${cliOptions.logLevel}`);
|
||||
}
|
||||
|
||||
// 设置自动打开浏览器选项
|
||||
if (cliOptions.autoOpenBrowser !== undefined) {
|
||||
process.env.AUTO_OPEN_BROWSER = cliOptions.autoOpenBrowser.toString();
|
||||
logger.info(`自动打开浏览器: ${cliOptions.autoOpenBrowser ? '启用' : '禁用'}`);
|
||||
}
|
||||
|
||||
logger.info('启动 Pixiv 后端服务器...');
|
||||
|
||||
// 创建服务器实例
|
||||
|
||||
Reference in New Issue
Block a user