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

View File

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

View File

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

View File

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