fix: extract image path from prefixed stdout line

_extract_image_from_stdout() failed to find the generated image because
the pipeline prints "Card generated and saved to: generated_card.png"
but the function only tried the full line as a path. Now also tries the
part after the last colon.
This commit is contained in:
2026-03-19 19:12:29 +01:00
parent 94b927c06b
commit 577308af17

11
app.py
View File

@@ -16,14 +16,19 @@ IMAGE_EXTENSIONS = (".png", ".jpg", ".jpeg", ".webp", ".bmp")
def _extract_image_from_stdout(stdout: str) -> Path | None: def _extract_image_from_stdout(stdout: str) -> Path | None:
for line in reversed(stdout.splitlines()): for line in reversed(stdout.splitlines()):
text = line.strip().strip("\"'") # Try the whole line, then the part after the last colon
# (handles "Card generated and saved to: generated_card.png")
raw = line.strip().strip("\"'")
candidates = [raw]
if ":" in raw:
candidates.append(raw.rsplit(":", 1)[1].strip().strip("\"'"))
for text in candidates:
if not text: if not text:
continue continue
candidate = Path(text) candidate = Path(text)
if not candidate.is_absolute(): if not candidate.is_absolute():
candidate = APP_DIR / candidate candidate = APP_DIR / candidate
if candidate.suffix.lower() in IMAGE_EXTENSIONS and candidate.exists(): if candidate.suffix.lower() in IMAGE_EXTENSIONS and candidate.exists():
return candidate return candidate