diff --git a/winnow/executor.py b/winnow/executor.py index 5b0aeb6..992c93d 100644 --- a/winnow/executor.py +++ b/winnow/executor.py @@ -573,7 +573,7 @@ def upload_to_frigate(jobs: list[dict]) -> None: _is_permanent = ( (resp.status_code == 400 and "face" in full_body.lower()) or resp.status_code == 422 - or (resp.status_code == 500 and "could not process" in error_detail.lower()) + or (resp.status_code == 500 and "could not process" in full_body.lower()) ) if _is_permanent: asset_id = asset_map.get(fname) diff --git a/winnow/image_processing.py b/winnow/image_processing.py index c9c9b85..0d18d2b 100644 --- a/winnow/image_processing.py +++ b/winnow/image_processing.py @@ -68,11 +68,11 @@ def process_face_mode( count: int, min_width: int | None = None, insightface_app=None, -) -> tuple[int, int] | str | None: +) -> tuple[int, int] | str: """Crop face based on Immich metadata and save to output directory. - Returns (width, height) of the saved crop, a skip-reason string if the - face was filtered out, or None if no crop was saved for other reasons. + Returns (width, height) of the saved crop, or a skip-reason string if the + face was filtered out. When insightface_app is provided and ENABLE_FACE_ALIGNMENT is True, re-detects the face in the Immich bbox region using InsightFace to get precise landmarks for a proper 112x112 aligned crop. Falls back to