diff --git a/lib/puppeteer/puppeteer.js b/lib/puppeteer/puppeteer.js
index 0b4294e..e9bf05e 100644
--- a/lib/puppeteer/puppeteer.js
+++ b/lib/puppeteer/puppeteer.js
@@ -1,16 +1,20 @@
import fs from 'fs'
import _ from 'lodash'
-import puppeteer, { KnownDevices } from 'puppeteer'
+import puppeteer from 'puppeteer'
import pet from '../../../../lib/puppeteer/puppeteer.js'
import { Data, Version, Plugin_Name, Config } from '../../components/index.js'
-
+let devices = puppeteer.devices
+if (!devices) {
+ devices = (await import('puppeteer')).KnownDevices
+}
const _path = process.cwd()
-export default new class newPuppeteer {
+export default new (class newPuppeteer {
constructor () {
this.devices = {
QQTheme: {
name: 'QQTheme',
- userAgent: 'Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.220303.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/98.0.4758.102 MQQBrowser/6.2 TBS/046317 Mobile Safari/537.36 V1_AND_SQ_8.9.10_3296_YYB_D A_8091000 QQ/8.9.10.9145 NetType/WIFI WebP/0.3.0 Pixel/1080 StatusBarHeight/80 SimpleUISwitch/0 QQTheme/1000 InMagicWin/0 StudyMode/0 CurrentMode/0 CurrentFontScale/1.0 GlobalDensityScale/0.98181814 AppId/537135947',
+ userAgent:
+ 'Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.220303.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/98.0.4758.102 MQQBrowser/6.2 TBS/046317 Mobile Safari/537.36 V1_AND_SQ_8.9.10_3296_YYB_D A_8091000 QQ/8.9.10.9145 NetType/WIFI WebP/0.3.0 Pixel/1080 StatusBarHeight/80 SimpleUISwitch/0 QQTheme/1000 InMagicWin/0 StudyMode/0 CurrentMode/0 CurrentFontScale/1.0 GlobalDensityScale/0.98181814 AppId/537135947',
viewport: {
width: 375,
height: 667,
@@ -20,30 +24,28 @@ export default new class newPuppeteer {
isLandscape: false
}
},
- ...KnownDevices
+ ...devices
}
this.browser = false
this.config = {
headless: 'chrome',
- args: [
- '--no-sandbox'
- ]
+ args: ['--no-sandbox']
}
}
/**
- * @description: 返回网页截图
- * @param {Object} Methods 参数对象
- * @param {String} Methods.url 网页链接
- * @param {Object} Methods.headers 请求头
- * @param {Object} Methods.setViewport 设置宽度和高度和缩放
- * @param {Boolean} Methods.font 是否修改字体
- * @param {Object} Methods.cookie 设置cookie
- * @param {Boolean} Methods.fullPage 是否截取完整网页
- * @param {Object} Methods.emulate 模拟设备
- * @param {Object} Methods.click 点击事件
- * @return {img} 可直接发送的构造图片
- */
+ * @description: 返回网页截图
+ * @param {Object} Methods 参数对象
+ * @param {String} Methods.url 网页链接
+ * @param {Object} Methods.headers 请求头
+ * @param {Object} Methods.setViewport 设置宽度和高度和缩放
+ * @param {Boolean} Methods.font 是否修改字体
+ * @param {Object} Methods.cookie 设置cookie
+ * @param {Boolean} Methods.fullPage 是否截取完整网页
+ * @param {Object} Methods.emulate 模拟设备
+ * @param {Object} Methods.click 点击事件
+ * @return {img} 可直接发送的构造图片
+ */
async Webpage ({
url,
headers = false,
@@ -54,7 +56,7 @@ export default new class newPuppeteer {
emulate = false,
click = false
}) {
- if (!await pet.browserInit()) {
+ if (!(await pet.browserInit())) {
return false
}
let buff = ''
@@ -74,9 +76,19 @@ export default new class newPuppeteer {
// 打卡新标签页
await page.goto(url, { timeout: 1000 * 60, waitUntil: 'networkidle0' })
// 设置字体
- if (font) await page.addStyleTag({ content: '* {font-family: "汉仪文黑-65W","雅痞-简","圆体-简","PingFang SC","微软雅黑", sans-serif !important;}' })
+ if (font) {
+ await page.addStyleTag({
+ content:
+ '* {font-family: "汉仪文黑-65W","雅痞-简","圆体-简","PingFang SC","微软雅黑", sans-serif !important;}'
+ })
+ }
// 点击事件
- if (click) for (let i of click) { await page.click(i.selector); await page.waitForTimeout(i.time) }
+ if (click) {
+ for (let i of click) {
+ await page.click(i.selector)
+ await page.waitForTimeout(i.time)
+ }
+ }
buff = await page.screenshot({
// path: './paper.jpeg',
@@ -107,7 +119,11 @@ export default new class newPuppeteer {
/** 计算图片大小 */
let kb = (buff.length / 1024).toFixed(2) + 'kb'
- logger.mark(`[网页截图][${name}][${pet.renderNum}次] ${kb} ${logger.green(`${Date.now() - start}ms`)}`)
+ logger.mark(
+ `[网页截图][${name}][${pet.renderNum}次] ${kb} ${logger.green(
+ `${Date.now() - start}ms`
+ )}`
+ )
pet.restart()
return segment.image(buff)
@@ -119,7 +135,9 @@ export default new class newPuppeteer {
this.browser = await puppeteer.launch(this.config).catch((err) => {
logger.error(err.toString())
if (String(err).includes('correct Chromium')) {
- logger.error('没有正确安装Chromium,可以尝试执行安装命令:node ./node_modules/puppeteer/install.js')
+ logger.error(
+ '没有正确安装Chromium,可以尝试执行安装命令:node ./node_modules/puppeteer/install.js'
+ )
}
})
if (!this.browser) {
@@ -137,14 +155,14 @@ export default new class newPuppeteer {
}
async get (url, waitSelector) {
- if (!await this.launch()) {
+ if (!(await this.launch())) {
return false
}
const page = await this.browser.newPage()
try {
logger.debug('Puppeteer get', url)
await page.goto(url)
- await page.waitForSelector(waitSelector).catch(e => {
+ await page.waitForSelector(waitSelector).catch((e) => {
console.error(`Puppeteer get "${url}" wait "${waitSelector}" error`)
console.error(e)
})
@@ -162,15 +180,16 @@ export default new class newPuppeteer {
}
/**
- * @description: 渲染HTML
- * @param {String} path 文件路径
- * @param {Object} params 参数
- * @param {Object} cfg
- */
+ * @description: 渲染HTML
+ * @param {String} path 文件路径
+ * @param {Object} params 参数
+ * @param {Object} cfg
+ */
async render (path, params, cfg) {
let [app, tpl] = path.split('/')
let { e } = cfg
- let layoutPath = process.cwd() + `/plugins/${Plugin_Name}/resources/common/layout/`
+ let layoutPath =
+ process.cwd() + `/plugins/${Plugin_Name}/resources/common/layout/`
let resPath = `../../../../../plugins/${Plugin_Name}/resources/`
Data.createDir(`data/html/${Plugin_Name}/${app}/${tpl}`, 'root')
let data = {
@@ -181,14 +200,17 @@ export default new class newPuppeteer {
pluResPath: resPath,
_res_path: resPath,
_layout_path: layoutPath,
- _tpl_path: process.cwd() + `/plugins/${Plugin_Name}/resources/common/tpl/`,
+ _tpl_path:
+ process.cwd() + `/plugins/${Plugin_Name}/resources/common/tpl/`,
defaultLayout: layoutPath + 'default.html',
elemLayout: layoutPath + 'elem.html',
pageGotoParams: {
waitUntil: 'networkidle0'
},
sys: {
- scale: `style=transform:scale(${Config.Notice.renderScale / 100 || cfg.scale || 1})`,
+ scale: `style=transform:scale(${
+ Config.Notice.renderScale / 100 || cfg.scale || 1
+ })`,
copyright: `Created By Yunzai-Bot${Version.yunzai} & yenai-Plugin${Version.ver}`
},
quality: 100
@@ -211,4 +233,4 @@ export default new class newPuppeteer {
}
return cfg.retMsgId ? ret : true
}
-}()
+})()