Publish review updates

This commit is contained in:
Nicolas Mowen 2025-08-01 12:29:33 -06:00
parent 874955a880
commit 60747268d2
2 changed files with 25 additions and 23 deletions

View File

@ -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/"

View File

@ -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