From 2da858172951ae92f27e5d2eae556fb7c11e5fa0 Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Thu, 20 Apr 2023 16:30:07 -0600 Subject: [PATCH] Add api with filtering --- frigate/http.py | 12 +++++++++++- frigate/timeline.py | 6 +++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/frigate/http.py b/frigate/http.py index 6a29dcc71..f29cfae7a 100644 --- a/frigate/http.py +++ b/frigate/http.py @@ -417,7 +417,7 @@ def event_thumbnail(id, max_cache_age=2592000): @bp.route("/timeline") def timeline(): camera = request.args.get("camera", "all") - + source_id = request.args.get("source_id", type=str) limit = request.args.get("limit", 100) clauses = [] @@ -431,8 +431,18 @@ def timeline(): Timeline.data, ] + if camera != "all": + clauses.append((Timeline.camera == camera)) + + if source_id: + clauses.append((Timeline.source_id == source_id)) + + if len(clauses) == 0: + clauses.append((True)) + timeline = ( Timeline.select(*selected_columns) + .where(reduce(operator.and_, clauses)) .order_by(Timeline.timestamp.asc()) .limit(limit) ) diff --git a/frigate/timeline.py b/frigate/timeline.py index 83702decc..22279ce5f 100644 --- a/frigate/timeline.py +++ b/frigate/timeline.py @@ -63,7 +63,7 @@ class TimelineProcessor(threading.Thread): source_id=event_data["id"], class_type="visible", data={ - "box": event_data["box"], + "box": event_data["box"], # TODO store as relative "label": event_data["label"], "region": event_data["region"], }, @@ -79,7 +79,7 @@ class TimelineProcessor(threading.Thread): source_id=event_data["id"], class_type="entered_zone", data={ - "box": event_data["box"], + "box": event_data["box"], # TODO store as relative "label": event_data["label"], "region": event_data["region"], "zones": event_data["current_zones"], @@ -93,7 +93,7 @@ class TimelineProcessor(threading.Thread): source_id=event_data["id"], class_type="gone", data={ - "box": event_data["box"], + "box": event_data["box"], # TODO store as relative "label": event_data["label"], "region": event_data["region"], },