26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
from util.t2i.strategies.local_strategy import LocalRenderStrategy
|
|
from util.t2i.strategies.network_strategy import NetworkRenderStrategy
|
|
from util.t2i.context import RenderContext
|
|
from SparkleLogging.utils.core import LogManager
|
|
from logging import Logger
|
|
|
|
logger: Logger = LogManager.GetLogger(log_name='astrbot')
|
|
|
|
class TextToImageRenderer:
|
|
def __init__(self):
|
|
self.network_strategy = NetworkRenderStrategy()
|
|
self.local_strategy = LocalRenderStrategy()
|
|
self.context = RenderContext(self.network_strategy)
|
|
|
|
async def render(self, text: str, use_network: bool = True, return_url: bool = False):
|
|
if use_network:
|
|
try:
|
|
return await self.context.render(text, return_url=return_url)
|
|
except BaseException as e:
|
|
logger.error(f"Failed to render image via AstrBot API: {e}. Falling back to local rendering.")
|
|
self.context.set_strategy(self.local_strategy)
|
|
return await self.context.render(text)
|
|
else:
|
|
self.context.set_strategy(self.local_strategy)
|
|
return await self.context.render(text)
|