added preview.gif for label

This commit is contained in:
Vader 2024-05-26 19:57:52 +02:00
parent 63d81bef45
commit 11d77964c3
2 changed files with 26 additions and 0 deletions

View File

@ -195,6 +195,10 @@ Returns the thumbnail from the latest event for the given camera and label combo
Returns the clip from the latest event for the given camera and label combo. Using `any` as the label will return the latest clip regardless of type. Returns the clip from the latest event for the given camera and label combo. Using `any` as the label will return the latest clip regardless of type.
### `GET /api/<camera_name>/<label>/preview.gif`
Returns the Gif covering the first 20 seconds of the latest event for the given camera and label combo. Using `any` as the label will return the latest Gif regardless of type.
### `GET /api/<camera_name>/<label>/snapshot.jpg` ### `GET /api/<camera_name>/<label>/snapshot.jpg`
Returns the snapshot image from the latest event for the given camera and label combo. Using `any` as the label will return the latest thumbnail regardless of type. Returns the snapshot image from the latest event for the given camera and label combo. Using `any` as the label will return the latest thumbnail regardless of type.

View File

@ -724,6 +724,28 @@ def label_clip(camera_name, label):
return make_response( return make_response(
jsonify({"success": False, "message": "Event not found"}), 404 jsonify({"success": False, "message": "Event not found"}), 404
) )
@MediaBp.route("/<camera_name>/<label>/preview.gif")
def label_preview(camera_name, label):
label = unquote(label)
event_query = Event.select(fn.MAX(Event.id), Event.start_time, Event.end_time, Event.camera).where(
Event.camera == camera_name
)
if label != "any":
event_query = event_query.where(Event.label == label)
try:
event = event_query.get()
except DoesNotExist:
return make_response(
jsonify({"success": False, "message": "Event not found"}), 404
)
start_ts = event.start_time
end_ts = start_ts + (min(event.end_time - event.start_time, 20) if event.end_time else 20)
return preview_gif(event.camera, start_ts, end_ts)
@MediaBp.route("/<camera_name>/grid.jpg") @MediaBp.route("/<camera_name>/grid.jpg")