Add the ability to set a pre_capture number of seconds when creating a manual event via the API. Default behavior unchanged

This commit is contained in:
nulledy 2026-02-08 17:49:50 +00:00
parent d8038d02e4
commit 477d77634b
4 changed files with 12 additions and 1 deletions

View File

@ -3133,6 +3133,7 @@ paths:
duration: 30
include_recording: true
draw: {}
pre_capture: null
responses:
"200":
description: Successful Response
@ -4935,6 +4936,12 @@ components:
- type: "null"
title: Draw
default: {}
pre_capture:
anyOf:
- type: integer
- type: "null"
title: Pre Capture Seconds
default: null
type: object
title: EventsCreateBody
EventsDeleteBody:

View File

@ -34,6 +34,7 @@ class EventsCreateBody(BaseModel):
duration: Optional[int] = 30
include_recording: Optional[bool] = True
draw: Optional[dict] = {}
pre_capture: Optional[int] = None
class EventsEndBody(BaseModel):

View File

@ -1622,6 +1622,7 @@ def create_event(
body.duration,
"api",
body.draw,
body.pre_capture,
),
EventMetadataTypeEnum.manual_event_create.value,
)

View File

@ -515,6 +515,7 @@ class TrackedObjectProcessor(threading.Thread):
duration,
source_type,
draw,
pre_capture,
) = payload
# save the snapshot image
@ -522,6 +523,7 @@ class TrackedObjectProcessor(threading.Thread):
None, event_id, label, draw
)
end_time = frame_time + duration if duration is not None else None
start_time = frame_time - self.config.cameras[camera_name].record.event_pre_capture if pre_capture is None else frame_time - pre_capture
# send event to event maintainer
self.event_sender.publish(
@ -536,7 +538,7 @@ class TrackedObjectProcessor(threading.Thread):
"sub_label": sub_label,
"score": score,
"camera": camera_name,
"start_time": frame_time,
"start_time": start_time,
"end_time": end_time,
"has_clip": self.config.cameras[camera_name].record.enabled
and include_recording,