37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
from engine.comfy_client import generate_image as comfy_generate_image
|
|
from engine.config import AppConfig
|
|
|
|
from .base import BaseImageGen
|
|
from .mock_adapter import MockImageGen
|
|
|
|
|
|
class ComfyAdapter(BaseImageGen):
|
|
def __init__(self, cfg: AppConfig):
|
|
self.cfg = cfg
|
|
self.fallback = MockImageGen()
|
|
|
|
def generate(self, prompt: dict[str, str], output_dir: str | Path) -> str:
|
|
positive = str(prompt.get("positive", "") or "")
|
|
negative = str(prompt.get("negative", "") or "")
|
|
try:
|
|
return str(
|
|
comfy_generate_image(
|
|
positive,
|
|
output_dir,
|
|
negative_text=negative or None,
|
|
cfg=self.cfg,
|
|
timeout_s=60,
|
|
retry=2,
|
|
filename_prefix="shot",
|
|
)
|
|
)
|
|
except Exception as e:
|
|
# Let render_pipeline do configured fallback.
|
|
raise
|
|
|