import re from typing import Any PLACEHOLDER_RE = re.compile( r"\{\{\{\{IMAGE:(.*?)\}\}\}\}|\{\{IMAGE:(.*?)\}\}", re.DOTALL, ) def parse_image_placeholders(content: str, max_images: int) -> list[dict[str, Any]]: items: list[dict[str, Any]] = [] for match in PLACEHOLDER_RE.finditer(content or ""): description = (match.group(1) or match.group(2) or "").strip() if not description: continue items.append( { "index": len(items), "description": description, "placeholder": match.group(0), "start_offset": match.start(), } ) if len(items) >= max_images: break return items def build_initial_image_assets( placeholders: list[dict[str, Any]], provider: str, style: str, size: str, now_iso: str, ) -> list[dict[str, Any]]: return [ { "index": item["index"], "placeholder": item["placeholder"], "description": item["description"], "prompt": None, "url": None, "status": "pending", "provider": provider, "style": style, "size": size, "error": None, "created_at": now_iso, "updated_at": now_iso, } for item in placeholders ]