细节优化
This commit is contained in:
parent
625d7ec88e
commit
9fc7a1dd4a
|
@ -1,12 +1,39 @@
|
||||||
const os = require("os")
|
const os = require("os")
|
||||||
const { existsSync } = require("fs")
|
const { existsSync, realpathSync } = require("fs")
|
||||||
|
const { execSync } = require("child_process")
|
||||||
|
const arch = os.arch()
|
||||||
|
|
||||||
let skipDownload = false
|
let skipDownload = false
|
||||||
let executablePath
|
let executablePath
|
||||||
if (process.platform == "win32" && existsSync("C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe")) {
|
|
||||||
skipDownload = true
|
if (process.platform == "linux" || process.platform == "android")
|
||||||
executablePath = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
|
for (const item of [
|
||||||
} else if (process.platform == "linux" && existsSync("/usr/bin/chromium")) {
|
"chromium",
|
||||||
skipDownload = true
|
"chromium-browser",
|
||||||
executablePath = "/usr/bin/chromium"
|
"chrome",
|
||||||
|
"chrome-browser",
|
||||||
|
]) try {
|
||||||
|
const chromiumPath = execSync(`command -v ${item}`).toString().trim()
|
||||||
|
if (chromiumPath && existsSync(chromiumPath)) {
|
||||||
|
executablePath = realpathSync(chromiumPath)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} catch (err) {}
|
||||||
|
|
||||||
|
if (!executablePath) for (const item of [
|
||||||
|
"C:/Program Files/Google/Chrome/Application/chrome.exe",
|
||||||
|
"C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe",
|
||||||
|
"/usr/bin/chromium",
|
||||||
|
"/usr/bin/chromium-browser",
|
||||||
|
"/snap/bin/chromium",
|
||||||
|
]) if (existsSync(item)) {
|
||||||
|
executablePath = item
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (executablePath || arch == "arm64" || arch == "aarch64") {
|
||||||
|
(typeof logger == "object" ? logger : console).info(`[Chromium] ${executablePath}`)
|
||||||
|
skipDownload = true
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = { skipDownload, executablePath }
|
module.exports = { skipDownload, executablePath }
|
|
@ -1,3 +1,10 @@
|
||||||
|
# 3.1.1
|
||||||
|
|
||||||
|
* 支持协议端:米游社大别野Bot
|
||||||
|
* 初步适配原神4.0版本,增加对应资源及信息展示,感谢**Ca(HCO₃)₂**、**@touchscale**、**@teriri7**
|
||||||
|
* 升级`#探索`内容,支持更多内容展示 **@bangbanbab**
|
||||||
|
* 增加 `#全部抽卡记录` **@story-x**
|
||||||
|
|
||||||
# 3.1.0
|
# 3.1.0
|
||||||
|
|
||||||
* 支持协议端:GSUIDCore、微信
|
* 支持协议端:GSUIDCore、微信
|
||||||
|
|
|
@ -26,7 +26,7 @@ async function execSync (cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function pm2Cfg () {
|
function pm2Cfg () {
|
||||||
let cfg = fs.readFileSync('./config/pm2/pm2.json')
|
let cfg = fs.readFileSync('config/pm2/pm2.json')
|
||||||
cfg = JSON.parse(cfg)
|
cfg = JSON.parse(cfg)
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,14 +15,14 @@ class Cfg {
|
||||||
|
|
||||||
/** 初始化配置 */
|
/** 初始化配置 */
|
||||||
initCfg () {
|
initCfg () {
|
||||||
let path = "./config/config/"
|
let path = "config/config/"
|
||||||
let pathDef = "./config/default_config/"
|
let pathDef = "config/default_config/"
|
||||||
const files = fs.readdirSync(pathDef).filter(file => file.endsWith(".yaml"))
|
const files = fs.readdirSync(pathDef).filter(file => file.endsWith(".yaml"))
|
||||||
for (let file of files)
|
for (let file of files)
|
||||||
if (!fs.existsSync(`${path}${file}`))
|
if (!fs.existsSync(`${path}${file}`))
|
||||||
fs.copyFileSync(`${pathDef}${file}`, `${path}${file}`)
|
fs.copyFileSync(`${pathDef}${file}`, `${path}${file}`)
|
||||||
if (!fs.existsSync("./data")) fs.mkdirSync("./data")
|
if (!fs.existsSync("data")) fs.mkdirSync("data")
|
||||||
if (!fs.existsSync("./resources")) fs.mkdirSync("./resources")
|
if (!fs.existsSync("resources")) fs.mkdirSync("resources")
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Bot配置 */
|
/** Bot配置 */
|
||||||
|
@ -89,7 +89,7 @@ class Cfg {
|
||||||
get package () {
|
get package () {
|
||||||
if (this._package) return this._package
|
if (this._package) return this._package
|
||||||
|
|
||||||
this._package = JSON.parse(fs.readFileSync("./package.json", "utf8"))
|
this._package = JSON.parse(fs.readFileSync("package.json", "utf8"))
|
||||||
return this._package
|
return this._package
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ class Cfg {
|
||||||
* @param name 名称
|
* @param name 名称
|
||||||
*/
|
*/
|
||||||
getYaml (type, name) {
|
getYaml (type, name) {
|
||||||
let file = `./config/${type}/${name}.yaml`
|
let file = `config/${type}/${name}.yaml`
|
||||||
let key = `${type}.${name}`
|
let key = `${type}.${name}`
|
||||||
if (this.config[key]) return this.config[key]
|
if (this.config[key]) return this.config[key]
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,13 @@ export default async function redisInit() {
|
||||||
let client = createClient({ url: redisUrl })
|
let client = createClient({ url: redisUrl })
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logger.mark(`正在连接 ${logger.blue(redisUrl)}`)
|
logger.info(`正在连接 ${logger.blue(redisUrl)}`)
|
||||||
await client.connect()
|
await client.connect()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(`Redis 错误:${logger.red(err)}`)
|
logger.error(`Redis 错误:${logger.red(err)}`)
|
||||||
|
|
||||||
const cmd = "redis-server --save 900 1 --save 300 10 --daemonize yes" + await aarch64()
|
const cmd = "redis-server --save 900 1 --save 300 10 --daemonize yes" + await aarch64()
|
||||||
logger.mark("正在启动 Redis...")
|
logger.info("正在启动 Redis...")
|
||||||
await execSync(cmd)
|
await execSync(cmd)
|
||||||
await common.sleep(1000)
|
await common.sleep(1000)
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ export default async function redisInit() {
|
||||||
|
|
||||||
/** 全局变量 redis */
|
/** 全局变量 redis */
|
||||||
global.redis = client
|
global.redis = client
|
||||||
logger.mark("Redis 连接成功")
|
logger.info("Redis 连接成功")
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ async function registerRendererBackends () {
|
||||||
logger.warn('渲染后端 ' + (renderer.id || subFolder.name) + ' 不可用')
|
logger.warn('渲染后端 ' + (renderer.id || subFolder.name) + ' 不可用')
|
||||||
}
|
}
|
||||||
rendererBackends[renderer.id] = renderer
|
rendererBackends[renderer.id] = renderer
|
||||||
logger.mark('[渲染后端加载]: 导入 ' + renderer.id)
|
logger.info(`加载渲染后端 ${renderer.id}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,4 +119,4 @@ export class Restart extends plugin {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -127,7 +127,7 @@ export class update extends plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getTime(plugin = '') {
|
async getTime(plugin = '') {
|
||||||
let cm = 'git log -1 --pretty=format:"%cd" --date=format:"%F %T"'
|
let cm = 'git log -1 --pretty=%cd --date=format:"%F %T"'
|
||||||
if (plugin) cm = `cd "plugins/${plugin}" && ${cm}`
|
if (plugin) cm = `cd "plugins/${plugin}" && ${cm}`
|
||||||
|
|
||||||
let time = ''
|
let time = ''
|
||||||
|
@ -191,7 +191,7 @@ export class update extends plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getLog(plugin = '') {
|
async getLog(plugin = '') {
|
||||||
let cm = 'git log -100 --pretty=format:"%h||[%cd] %s" --date=format:"%F %T"'
|
let cm = 'git log -100 --pretty="%h||[%cd] %s" --date=format:"%F %T"'
|
||||||
if (plugin) cm = `cd "plugins/${plugin}" && ${cm}`
|
if (plugin) cm = `cd "plugins/${plugin}" && ${cm}`
|
||||||
|
|
||||||
let logAll
|
let logAll
|
||||||
|
|
|
@ -65,7 +65,7 @@ export default class PuppeteerRenderer {
|
||||||
if (this.lock) return false
|
if (this.lock) return false
|
||||||
this.lock = true
|
this.lock = true
|
||||||
|
|
||||||
logger.mark('puppeteer Chromium 启动中...')
|
logger.info('puppeteer Chromium 启动中...')
|
||||||
|
|
||||||
let connectFlag = false
|
let connectFlag = false
|
||||||
try {
|
try {
|
||||||
|
@ -77,7 +77,7 @@ export default class PuppeteerRenderer {
|
||||||
// 是否有browser实例
|
// 是否有browser实例
|
||||||
const browserUrl = (await redis.get(this.browserMacKey)) || this.config.wsEndpoint
|
const browserUrl = (await redis.get(this.browserMacKey)) || this.config.wsEndpoint
|
||||||
if (browserUrl) {
|
if (browserUrl) {
|
||||||
logger.mark(`puppeteer Chromium from ${browserUrl}`)
|
logger.info(`puppeteer Chromium from ${browserUrl}`)
|
||||||
const browserWSEndpoint = await puppeteer.connect({ browserWSEndpoint: browserUrl }).catch((err) => {
|
const browserWSEndpoint = await puppeteer.connect({ browserWSEndpoint: browserUrl }).catch((err) => {
|
||||||
logger.error('puppeteer Chromium 缓存的实例已关闭')
|
logger.error('puppeteer Chromium 缓存的实例已关闭')
|
||||||
redis.del(this.browserMacKey)
|
redis.del(this.browserMacKey)
|
||||||
|
@ -91,7 +91,7 @@ export default class PuppeteerRenderer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.mark('puppeteer Chromium 不存在已有实例')
|
logger.info('puppeteer Chromium 不存在已有实例')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.browser || !connectFlag) {
|
if (!this.browser || !connectFlag) {
|
||||||
|
@ -119,7 +119,7 @@ export default class PuppeteerRenderer {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (connectFlag) {
|
if (connectFlag) {
|
||||||
logger.mark('puppeteer Chromium 已连接启动的实例')
|
logger.info('puppeteer Chromium 已连接启动的实例')
|
||||||
} else {
|
} else {
|
||||||
console.log('chromium', this.browser.wsEndpoint())
|
console.log('chromium', this.browser.wsEndpoint())
|
||||||
if (process.env.pm_id && this.browserMacKey) {
|
if (process.env.pm_id && this.browserMacKey) {
|
||||||
|
@ -127,7 +127,7 @@ export default class PuppeteerRenderer {
|
||||||
const expireTime = 60 * 60 * 24 * 30
|
const expireTime = 60 * 60 * 24 * 30
|
||||||
await redis.set(this.browserMacKey, this.browser.wsEndpoint(), { EX: expireTime })
|
await redis.set(this.browserMacKey, this.browser.wsEndpoint(), { EX: expireTime })
|
||||||
}
|
}
|
||||||
logger.mark('puppeteer Chromium 启动成功')
|
logger.info('puppeteer Chromium 启动成功')
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 监听Chromium实例是否断开 */
|
/** 监听Chromium实例是否断开 */
|
||||||
|
@ -226,7 +226,7 @@ export default class PuppeteerRenderer {
|
||||||
buff = await body.screenshot(randData)
|
buff = await body.screenshot(randData)
|
||||||
/** 计算图片大小 */
|
/** 计算图片大小 */
|
||||||
const kb = (buff.length / 1024).toFixed(2) + 'kb'
|
const kb = (buff.length / 1024).toFixed(2) + 'kb'
|
||||||
logger.mark(`[图片生成][${name}][${this.renderNum}次] ${kb} ${logger.green(`${Date.now() - start}ms`)}`)
|
logger.info(`[图片生成][${name}][${this.renderNum}次] ${kb} ${logger.green(`${Date.now() - start}ms`)}`)
|
||||||
this.renderNum++
|
this.renderNum++
|
||||||
ret.push(buff)
|
ret.push(buff)
|
||||||
} else {
|
} else {
|
||||||
|
@ -257,11 +257,11 @@ export default class PuppeteerRenderer {
|
||||||
|
|
||||||
/** 计算图片大小 */
|
/** 计算图片大小 */
|
||||||
const kb = (buff.length / 1024).toFixed(2) + 'kb'
|
const kb = (buff.length / 1024).toFixed(2) + 'kb'
|
||||||
logger.mark(`[图片生成][${name}][${i}/${num}] ${kb}`)
|
logger.info(`[图片生成][${name}][${i}/${num}] ${kb}`)
|
||||||
ret.push(buff)
|
ret.push(buff)
|
||||||
}
|
}
|
||||||
if (num > 1) {
|
if (num > 1) {
|
||||||
logger.mark(`[图片生成][${name}] 处理完成`)
|
logger.info(`[图片生成][${name}] 处理完成`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
page.close().catch((err) => logger.error(err))
|
page.close().catch((err) => logger.error(err))
|
||||||
|
@ -328,7 +328,7 @@ export default class PuppeteerRenderer {
|
||||||
const watcher = chokidar.watch(tplFile)
|
const watcher = chokidar.watch(tplFile)
|
||||||
watcher.on('change', path => {
|
watcher.on('change', path => {
|
||||||
delete this.html[tplFile]
|
delete this.html[tplFile]
|
||||||
logger.mark(`[修改html模板] ${tplFile}`)
|
logger.info(`[修改html模板] ${tplFile}`)
|
||||||
})
|
})
|
||||||
|
|
||||||
this.watcher[tplFile] = watcher
|
this.watcher[tplFile] = watcher
|
||||||
|
@ -344,10 +344,9 @@ export default class PuppeteerRenderer {
|
||||||
await this.browser.close().catch((err) => logger.error(err))
|
await this.browser.close().catch((err) => logger.error(err))
|
||||||
}
|
}
|
||||||
this.browser = false
|
this.browser = false
|
||||||
logger.mark('puppeteer 关闭重启...')
|
logger.info('puppeteer 关闭重启...')
|
||||||
}, 100)
|
}, 100)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue