Files
AstrBot/astrbot/core/utils/t2i/renderer.py
Dt8333 7dd95d8a59 chore: auto ann fix by ruff (#4903)
* chore: auto fix by ruff

* refactor: 统一修正返回类型注解为 None/bool 以匹配实现

* refactor: 将 _get_next_page 改为异步并移除多余的请求错误抛出

* refactor: 将 get_client 的返回类型改为 object

* style: 为 LarkMessageEvent 的相关方法添加返回类型注解 None

---------

Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com>
2026-02-09 00:22:24 +08:00

62 lines
2.0 KiB
Python

from astrbot.core.log import LogManager
from .local_strategy import LocalRenderStrategy
from .network_strategy import NetworkRenderStrategy
logger = LogManager.GetLogger(log_name="astrbot")
class HtmlRenderer:
def __init__(self, endpoint_url: str | None = None) -> None:
self.network_strategy = NetworkRenderStrategy(endpoint_url)
self.local_strategy = LocalRenderStrategy()
async def initialize(self) -> None:
await self.network_strategy.initialize()
async def render_custom_template(
self,
tmpl_str: str,
tmpl_data: dict,
return_url: bool = False,
options: dict | None = None,
):
"""使用自定义文转图模板。该方法会通过网络调用 t2i 终结点图文渲染API。
@param tmpl_str: HTML Jinja2 模板。
@param tmpl_data: jinja2 模板数据。
@param options: 渲染选项。
@return: 图片 URL 或者文件路径,取决于 return_url 参数。
@example: 参见 https://astrbot.app 插件开发部分。
"""
return await self.network_strategy.render_custom_template(
tmpl_str,
tmpl_data,
return_url,
options,
)
async def render_t2i(
self,
text: str,
use_network: bool = True,
return_url: bool = False,
template_name: str | None = None,
):
"""使用默认文转图模板。"""
if use_network:
try:
return await self.network_strategy.render(
text,
return_url=return_url,
template_name=template_name,
)
except BaseException as e:
logger.error(
f"Failed to render image via AstrBot API: {e}. Falling back to local rendering.",
)
return await self.local_strategy.render(text)
else:
return await self.local_strategy.render(text)