From c6b46d20a36224aa89fd06f62c0f42a97b0219fe Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Mon, 22 Apr 2024 14:49:38 -0600 Subject: [PATCH] Send before / after on messages --- frigate/review/maintainer.py | 47 ++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/frigate/review/maintainer.py b/frigate/review/maintainer.py index 5e5138083..5c3439201 100644 --- a/frigate/review/maintainer.py +++ b/frigate/review/maintainer.py @@ -146,15 +146,41 @@ class ReviewSegmentMaintainer(threading.Thread): self.stop_event = stop_event - def update_segment(self, segment: PendingReviewSegment) -> None: - """Update segment.""" - seg_data = segment.get_data(ended=False) - self.requestor.send_data(UPSERT_REVIEW_SEGMENT, seg_data) + def new_segment( + self, + segment: PendingReviewSegment, + ) -> None: + """New segment.""" + new_data = segment.get_data(ended=False) + self.requestor.send_data(UPSERT_REVIEW_SEGMENT, new_data) self.requestor.send_data( "reviews", - json.dumps( - {"type": "update", "review": {k.name: v for k, v in seg_data.items()}} - ), + { + "type": "new", + "before": {}, + "after": json.dumps({k.name: v for k, v in new_data.items()}), + }, + ) + + def update_segment( + self, + segment: PendingReviewSegment, + camera_config: CameraConfig, + frame, + objects: list[TrackedObject], + ) -> None: + """Update segment.""" + prev_data = segment.get_data(ended=False) + segment.update_frame(camera_config, frame, objects) + new_data = segment.get_data(ended=False) + self.requestor.send_data(UPSERT_REVIEW_SEGMENT, new_data) + self.requestor.send_data( + "reviews", + { + "type": "update", + "before": json.dumps({k.name: v for k, v in prev_data.items()}), + "after": json.dumps({k.name: v for k, v in new_data.items()}), + }, ) def end_segment(self, segment: PendingReviewSegment) -> None: @@ -219,9 +245,10 @@ class ReviewSegmentMaintainer(threading.Thread): yuv_frame = self.frame_manager.get( frame_id, camera_config.frame_shape_yuv ) - segment.update_frame(camera_config, yuv_frame, active_objects) + self.update_segment( + segment, camera_config, yuv_frame, active_objects + ) self.frame_manager.close(frame_id) - self.update_segment(segment) except FileNotFoundError: return else: @@ -317,7 +344,7 @@ class ReviewSegmentMaintainer(threading.Thread): camera_config, yuv_frame, active_objects ) self.frame_manager.close(frame_id) - self.update_segment(self.active_review_segments[camera]) + self.new_segment(self.active_review_segments[camera]) except FileNotFoundError: return