Merge branch 'master' of github.com:yoimiya-kokomi/Miao-Yunzai
Conflicts: lib/puppeteer/puppeteer.js
This commit is contained in:
commit
4938028e24
|
@ -343,6 +343,12 @@ class PluginsLoader {
|
||||||
* @param e.isMaster 是否管理员
|
* @param e.isMaster 是否管理员
|
||||||
* @param e.logText 日志用户字符串
|
* @param e.logText 日志用户字符串
|
||||||
* @param e.logFnc 日志方法字符串
|
* @param e.logFnc 日志方法字符串
|
||||||
|
|
||||||
|
* 频道
|
||||||
|
* @param e.isGuild 是否频道
|
||||||
|
* @param e.at 支持频道 tiny_id
|
||||||
|
* @param e.atBot 支持频道
|
||||||
|
|
||||||
*/
|
*/
|
||||||
dealMsg (e) {
|
dealMsg (e) {
|
||||||
if (e.message) {
|
if (e.message) {
|
||||||
|
@ -366,9 +372,13 @@ class PluginsLoader {
|
||||||
case 'at':
|
case 'at':
|
||||||
if (val.qq == Bot.uin) {
|
if (val.qq == Bot.uin) {
|
||||||
e.atBot = true
|
e.atBot = true
|
||||||
|
} else if (val.id == Bot.tiny_id) {
|
||||||
|
e.atBot = true
|
||||||
|
/** 多个at 以最后的为准 */
|
||||||
|
} else if (val.id) {
|
||||||
|
e.at = val.id
|
||||||
} else {
|
} else {
|
||||||
/** 多个at 以最后的为准 */
|
e.at = val.qq
|
||||||
e.at = val.qq
|
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case 'file':
|
case 'file':
|
||||||
|
@ -418,6 +428,8 @@ class PluginsLoader {
|
||||||
if (!e.group_name) e.group_name = e.group?.name
|
if (!e.group_name) e.group_name = e.group?.name
|
||||||
|
|
||||||
e.logText = `[${e.group_name}(${e.sender.card})]`
|
e.logText = `[${e.group_name}(${e.sender.card})]`
|
||||||
|
} else if (e.detail_type === 'guild') {
|
||||||
|
e.isGuild = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.user_id && cfg.masterQQ.includes(Number(e.user_id))) {
|
if (e.user_id && cfg.masterQQ.includes(Number(e.user_id))) {
|
||||||
|
|
|
@ -3,11 +3,15 @@ import fs from 'fs'
|
||||||
import lodash from 'lodash'
|
import lodash from 'lodash'
|
||||||
import chokidar from 'chokidar'
|
import chokidar from 'chokidar'
|
||||||
import cfg from '../config/config.js'
|
import cfg from '../config/config.js'
|
||||||
|
import os from 'os'
|
||||||
|
|
||||||
const _path = process.cwd()
|
const _path = process.cwd()
|
||||||
|
|
||||||
let puppeteer = {}
|
let puppeteer = {}
|
||||||
|
|
||||||
|
// mac地址
|
||||||
|
let mac =''
|
||||||
|
|
||||||
class Puppeteer {
|
class Puppeteer {
|
||||||
constructor () {
|
constructor () {
|
||||||
this.browser = false
|
this.browser = false
|
||||||
|
@ -69,21 +73,53 @@ class Puppeteer {
|
||||||
|
|
||||||
logger.mark('puppeteer Chromium 启动中...')
|
logger.mark('puppeteer Chromium 启动中...')
|
||||||
|
|
||||||
/** 初始化puppeteer */
|
let connectFlag = false
|
||||||
this.browser = await puppeteer.launch(this.config).catch((err, trace) => {
|
try {
|
||||||
let errMsg = err.toString() + (trace ? trace.toString() : '')
|
//如果是pm2启动,尝试连接已有实例
|
||||||
if (typeof err == 'object') {
|
if (process.env.pm_id) {
|
||||||
logger.error(JSON.stringify(err))
|
//获取Mac地址
|
||||||
} else {
|
if (!mac){
|
||||||
logger.error(err.toString())
|
mac = await this.getMac()
|
||||||
if (errMsg.includes('Could not find Chromium')) {
|
this.browserMacKey = `Yz:chromium:browserWSEndpoint:${mac}`
|
||||||
logger.error('没有正确安装Chromium,可以尝试执行安装命令:node ./node_modules/puppeteer/install.js')
|
}
|
||||||
} else if (errMsg.includes('libatk-bridge')) {
|
//是否有browser实例
|
||||||
logger.error('没有正确安装Chromium,可尝试执行 sudo yum install -y chromium')
|
const browserUrl = await redis.get(this.browserMacKey)
|
||||||
|
if (browserUrl){
|
||||||
|
const browserWSEndpoint = await puppeteer.connect({browserWSEndpoint: browserUrl}).catch((err) => {
|
||||||
|
logger.error("puppeteer Chromium 缓存的实例已关闭")
|
||||||
|
redis.del(this.browserMacKey)
|
||||||
|
})
|
||||||
|
//如果有实例,直接使用
|
||||||
|
if (browserWSEndpoint) {
|
||||||
|
this.browser = browserWSEndpoint
|
||||||
|
if (this.browser) {
|
||||||
|
connectFlag = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(err, trace)
|
}catch (e) {
|
||||||
})
|
logger.error("puppeteer Chromium 尝试连接已有实例失败")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!this.browser||!connectFlag){
|
||||||
|
//如果没有实例,初始化puppeteer
|
||||||
|
this.browser = await puppeteer.launch(this.config).catch((err, trace) => {
|
||||||
|
let errMsg = err.toString() + (trace ? trace.toString() : '')
|
||||||
|
if (typeof err == 'object') {
|
||||||
|
logger.error(JSON.stringify(err))
|
||||||
|
} else {
|
||||||
|
logger.error(err.toString())
|
||||||
|
if (errMsg.includes('Could not find Chromium')) {
|
||||||
|
logger.error('没有正确安装Chromium,可以尝试执行安装命令:node ./node_modules/puppeteer/install.js')
|
||||||
|
} else if (errMsg.includes('libatk-bridge')) {
|
||||||
|
logger.error('没有正确安装Chromium,可尝试执行 sudo yum install -y chromium')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(err, trace)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
this.lock = false
|
this.lock = false
|
||||||
|
|
||||||
|
@ -91,8 +127,17 @@ class Puppeteer {
|
||||||
logger.error('puppeteer Chromium 启动失败')
|
logger.error('puppeteer Chromium 启动失败')
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if (connectFlag){
|
||||||
logger.mark('puppeteer Chromium 启动成功')
|
logger.mark('puppeteer Chromium 已连接启动的实例')
|
||||||
|
}else {
|
||||||
|
console.log("chromium",this.browser.wsEndpoint())
|
||||||
|
if (this.browserMacKey) {
|
||||||
|
//缓存一下实例30天
|
||||||
|
const expireTime = 60 * 60 * 24 * 30
|
||||||
|
await redis.set(this.browserMacKey, this.browser.wsEndpoint(), { EX: expireTime })
|
||||||
|
}
|
||||||
|
logger.mark('puppeteer Chromium 启动成功')
|
||||||
|
}
|
||||||
|
|
||||||
/** 监听Chromium实例是否断开 */
|
/** 监听Chromium实例是否断开 */
|
||||||
this.browser.on('disconnected', (e) => {
|
this.browser.on('disconnected', (e) => {
|
||||||
|
@ -103,6 +148,33 @@ class Puppeteer {
|
||||||
return this.browser
|
return this.browser
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//获取Mac地址
|
||||||
|
async getMac () {
|
||||||
|
//获取Mac地址
|
||||||
|
let mac="00:00:00:00:00:00"
|
||||||
|
try {
|
||||||
|
const network = os.networkInterfaces()
|
||||||
|
let osMac
|
||||||
|
//判断系统
|
||||||
|
if (os.platform() === 'win32') {
|
||||||
|
//windows下获取mac地址
|
||||||
|
let osMacList = Object.keys(network).map(key => network[key]).flat()
|
||||||
|
osMacList=osMacList.filter(item => item.family === 'IPv4'&&item.mac!==mac)
|
||||||
|
osMac = osMacList[0].mac
|
||||||
|
} else if (os.platform() === 'linux') {
|
||||||
|
//linux下获取mac地址
|
||||||
|
osMac = network.eth0.filter(item => item.family === 'IPv4'&&item.mac!==mac)[0].mac
|
||||||
|
}
|
||||||
|
if (osMac) {
|
||||||
|
mac = String(osMac)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log("获取Mac地址失败", e.toString())
|
||||||
|
}
|
||||||
|
mac = mac.replace(/:/g, '')
|
||||||
|
return mac
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* `chromium` 截图
|
* `chromium` 截图
|
||||||
* @param data 模板参数
|
* @param data 模板参数
|
||||||
|
|
|
@ -49,8 +49,5 @@
|
||||||
"imports": {
|
"imports": {
|
||||||
"#miao": "./plugins/miao-plugin/components/index.js",
|
"#miao": "./plugins/miao-plugin/components/index.js",
|
||||||
"#miao.models": "./plugins/miao-plugin/models/index.js"
|
"#miao.models": "./plugins/miao-plugin/models/index.js"
|
||||||
},
|
|
||||||
"pnpm": {
|
|
||||||
"patchedDependencies": {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,17 +0,0 @@
|
||||||
diff --git a/lib/core/device.js b/lib/core/device.js
|
|
||||||
index ffadc63f15e8b0b435e640af60c6b854d0236a83..8a09faebae021f845d961086c8bb2b9ee19096f3 100644
|
|
||||||
--- a/lib/core/device.js
|
|
||||||
+++ b/lib/core/device.js
|
|
||||||
@@ -105,9 +105,9 @@ var Platform;
|
|
||||||
})(Platform = exports.Platform || (exports.Platform = {}));
|
|
||||||
const mobile = {
|
|
||||||
id: "com.tencent.mobileqq",
|
|
||||||
- name: "A8.8.80.7400",
|
|
||||||
- version: "8.8.80.7400",
|
|
||||||
- ver: "8.8.80",
|
|
||||||
+ name: "A8.9.25.10005",
|
|
||||||
+ version: "A8.9.25.10005",
|
|
||||||
+ ver: "8.9.25",
|
|
||||||
sign: Buffer.from([166, 183, 69, 191, 36, 162, 194, 119, 82, 119, 22, 246, 243, 110, 182, 141]),
|
|
||||||
buildtime: 1640921786,
|
|
||||||
appid: 16,
|
|
Loading…
Reference in New Issue