From 9fcc590efd520703e05c48693ca8ebc695859a3a Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Wed, 23 Apr 2025 17:38:15 -0500 Subject: [PATCH] api endpoint --- frigate/api/classification.py | 26 +++++++++++++++++++ .../api/defs/request/classification_body.py | 5 ++++ 2 files changed, 31 insertions(+) create mode 100644 frigate/api/defs/request/classification_body.py diff --git a/frigate/api/classification.py b/frigate/api/classification.py index 1f6d8b792e..fd7ce98fdf 100644 --- a/frigate/api/classification.py +++ b/frigate/api/classification.py @@ -14,6 +14,7 @@ from peewee import DoesNotExist from playhouse.shortcuts import model_to_dict from frigate.api.auth import require_role +from frigate.api.defs.request.classification_body import RenameFaceBody from frigate.api.defs.tags import Tags from frigate.config.camera import DetectConfig from frigate.const import FACE_DIR @@ -260,6 +261,31 @@ def deregister_faces(request: Request, name: str, body: dict = None): ) +@router.put("/faces/{old_name}/rename", dependencies=[Depends(require_role(["admin"]))]) +def rename_face(request: Request, old_name: str, body: RenameFaceBody): + if not request.app.frigate_config.face_recognition.enabled: + return JSONResponse( + status_code=400, + content={"message": "Face recognition is not enabled.", "success": False}, + ) + + context: EmbeddingsContext = request.app.embeddings + try: + context.rename_face(old_name, body.new_name) + return JSONResponse( + content={ + "success": True, + "message": f"Successfully renamed face to {body.new_name}.", + }, + status_code=200, + ) + except ValueError as e: + return JSONResponse( + status_code=400, + content={"message": str(e), "success": False}, + ) + + @router.put("/lpr/reprocess") def reprocess_license_plate(request: Request, event_id: str): if not request.app.frigate_config.lpr.enabled: diff --git a/frigate/api/defs/request/classification_body.py b/frigate/api/defs/request/classification_body.py new file mode 100644 index 0000000000..c4a32c3326 --- /dev/null +++ b/frigate/api/defs/request/classification_body.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel + + +class RenameFaceBody(BaseModel): + new_name: str