diff --git a/frigate/comms/review_updater.py b/frigate/comms/review_updater.py index a7d441bc6..6d3e283ce 100644 --- a/frigate/comms/review_updater.py +++ b/frigate/comms/review_updater.py @@ -7,7 +7,7 @@ from .zmq_proxy import Publisher, Subscriber logger = logging.getLogger(__name__) -class RecordingsDataPublisher(Publisher[tuple[str, float]]): +class ReviewDataPublisher(Publisher[tuple[str, float]]): """Publishes review item data.""" topic_base = "review/" @@ -19,7 +19,7 @@ class RecordingsDataPublisher(Publisher[tuple[str, float]]): super().publish(payload, sub_topic) -class RecordingsDataSubscriber(Subscriber): +class ReviewDataSubscriber(Subscriber): """Receives review item data.""" topic_base = "review/" diff --git a/frigate/review/maintainer.py b/frigate/review/maintainer.py index 778717db3..021022e98 100644 --- a/frigate/review/maintainer.py +++ b/frigate/review/maintainer.py @@ -17,6 +17,7 @@ import numpy as np from frigate.comms.detections_updater import DetectionSubscriber, DetectionTypeEnum from frigate.comms.inter_process import InterProcessRequestor +from frigate.comms.review_updater import ReviewDataPublisher from frigate.config import CameraConfig, FrigateConfig from frigate.config.camera.updater import ( CameraConfigUpdateEnum, @@ -165,6 +166,7 @@ class ReviewSegmentMaintainer(threading.Thread): ], ) self.detection_subscriber = DetectionSubscriber(DetectionTypeEnum.all) + self.review_publisher = ReviewDataPublisher() # manual events self.indefinite_events: dict[str, dict[str, Any]] = {} @@ -185,16 +187,16 @@ class ReviewSegmentMaintainer(threading.Thread): new_data = segment.get_data(ended=False) self.requestor.send_data(UPSERT_REVIEW_SEGMENT, new_data) start_data = {k: v for k, v in new_data.items()} + review_update = { + "type": "new", + "before": start_data, + "after": start_data, + } self.requestor.send_data( "reviews", - json.dumps( - { - "type": "new", - "before": start_data, - "after": start_data, - } - ), + json.dumps(review_update), ) + self.review_publisher.publish(review_update) self.requestor.send_data( f"{segment.camera}/review_status", segment.severity.value.upper() ) @@ -213,16 +215,16 @@ class ReviewSegmentMaintainer(threading.Thread): new_data = segment.get_data(ended=False) self.requestor.send_data(UPSERT_REVIEW_SEGMENT, new_data) + review_update = { + "type": "update", + "before": {k: v for k, v in prev_data.items()}, + "after": {k: v for k, v in new_data.items()}, + } self.requestor.send_data( "reviews", - json.dumps( - { - "type": "update", - "before": {k: v for k, v in prev_data.items()}, - "after": {k: v for k, v in new_data.items()}, - } - ), + json.dumps(review_update), ) + self.review_publisher.publish(review_update) self.requestor.send_data( f"{segment.camera}/review_status", segment.severity.value.upper() ) @@ -235,16 +237,16 @@ class ReviewSegmentMaintainer(threading.Thread): """End segment.""" final_data = segment.get_data(ended=True) self.requestor.send_data(UPSERT_REVIEW_SEGMENT, final_data) + review_update = { + "type": "end", + "before": {k: v for k, v in prev_data.items()}, + "after": {k: v for k, v in final_data.items()}, + } self.requestor.send_data( "reviews", - json.dumps( - { - "type": "end", - "before": {k: v for k, v in prev_data.items()}, - "after": {k: v for k, v in final_data.items()}, - } - ), + json.dumps(review_update), ) + self.review_publisher.publish(review_update) self.requestor.send_data(f"{segment.camera}/review_status", "NONE") self.active_review_segments[segment.camera] = None