33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
import sys
|
|
from types import ModuleType
|
|
import asyncio
|
|
from pyppeteer import launch
|
|
|
|
|
|
async def template_to_pic(template_path, template_name, templates, pages, wait, type, quality, device_scale_factor):
|
|
browser = await launch()
|
|
page = await browser.newPage()
|
|
await page.setViewport(pages["viewport"])
|
|
await page.goto(pages["base_url"])
|
|
await asyncio.sleep(wait)
|
|
await page.evaluate('''(templates) => {
|
|
// 在页面中执行 JavaScript 代码,将数据注入到模板中
|
|
// 这里的示例代码仅供参考,具体需要根据实际情况修改
|
|
document.getElementById('css').innerText = templates.css;
|
|
document.getElementById('data').innerText = JSON.stringify(templates.data);
|
|
document.getElementById('detail').innerText = templates.detail;
|
|
}''', templates)
|
|
screenshot = await page.screenshot({
|
|
'type': type,
|
|
'quality': quality,
|
|
'deviceScaleFactor': device_scale_factor
|
|
})
|
|
await browser.close()
|
|
return screenshot
|
|
|
|
def require(module_str: str):
|
|
module = ModuleType(module_str)
|
|
sys.modules[module_str] = module
|
|
if module_str == 'nonebot_plugin_htmlrender':
|
|
module.template_to_pic = template_to_pic
|