33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
import aiohttp
|
|
from bot.db import db, DBTables
|
|
from .objects.prompt_request import Prompt
|
|
import json
|
|
import base64
|
|
|
|
|
|
async def txt2img(prompt: Prompt, ignore_exceptions: bool = False) -> list[bytes, dict] | None:
|
|
endpoint = db[DBTables.config].get('endpoint')
|
|
try:
|
|
async with aiohttp.ClientSession() as session:
|
|
r = await session.post(
|
|
endpoint + "/sdapi/v1/txt2img",
|
|
json={
|
|
"prompt": prompt.prompt,
|
|
"steps": prompt.steps,
|
|
"cfg_scale": prompt.cfg_scale,
|
|
"width": prompt.width,
|
|
"height": prompt.height,
|
|
"restore_faces": prompt.restore_faces,
|
|
"negative_prompt": prompt.negative_prompt,
|
|
"sampler_index": prompt.sampler
|
|
}
|
|
)
|
|
if r.status != 200:
|
|
return None
|
|
return [base64.b64decode((await r.json())["images"][0]),
|
|
json.loads((await r.json())["info"])]
|
|
except Exception as e:
|
|
if not ignore_exceptions:
|
|
raise e
|
|
return
|