mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-08-13 13:47:36 +02:00
Publish review updates
This commit is contained in:
parent
874955a880
commit
60747268d2
@ -7,7 +7,7 @@ from .zmq_proxy import Publisher, Subscriber
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class RecordingsDataPublisher(Publisher[tuple[str, float]]):
|
class ReviewDataPublisher(Publisher[tuple[str, float]]):
|
||||||
"""Publishes review item data."""
|
"""Publishes review item data."""
|
||||||
|
|
||||||
topic_base = "review/"
|
topic_base = "review/"
|
||||||
@ -19,7 +19,7 @@ class RecordingsDataPublisher(Publisher[tuple[str, float]]):
|
|||||||
super().publish(payload, sub_topic)
|
super().publish(payload, sub_topic)
|
||||||
|
|
||||||
|
|
||||||
class RecordingsDataSubscriber(Subscriber):
|
class ReviewDataSubscriber(Subscriber):
|
||||||
"""Receives review item data."""
|
"""Receives review item data."""
|
||||||
|
|
||||||
topic_base = "review/"
|
topic_base = "review/"
|
||||||
|
@ -17,6 +17,7 @@ import numpy as np
|
|||||||
|
|
||||||
from frigate.comms.detections_updater import DetectionSubscriber, DetectionTypeEnum
|
from frigate.comms.detections_updater import DetectionSubscriber, DetectionTypeEnum
|
||||||
from frigate.comms.inter_process import InterProcessRequestor
|
from frigate.comms.inter_process import InterProcessRequestor
|
||||||
|
from frigate.comms.review_updater import ReviewDataPublisher
|
||||||
from frigate.config import CameraConfig, FrigateConfig
|
from frigate.config import CameraConfig, FrigateConfig
|
||||||
from frigate.config.camera.updater import (
|
from frigate.config.camera.updater import (
|
||||||
CameraConfigUpdateEnum,
|
CameraConfigUpdateEnum,
|
||||||
@ -165,6 +166,7 @@ class ReviewSegmentMaintainer(threading.Thread):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
self.detection_subscriber = DetectionSubscriber(DetectionTypeEnum.all)
|
self.detection_subscriber = DetectionSubscriber(DetectionTypeEnum.all)
|
||||||
|
self.review_publisher = ReviewDataPublisher()
|
||||||
|
|
||||||
# manual events
|
# manual events
|
||||||
self.indefinite_events: dict[str, dict[str, Any]] = {}
|
self.indefinite_events: dict[str, dict[str, Any]] = {}
|
||||||
@ -185,16 +187,16 @@ class ReviewSegmentMaintainer(threading.Thread):
|
|||||||
new_data = segment.get_data(ended=False)
|
new_data = segment.get_data(ended=False)
|
||||||
self.requestor.send_data(UPSERT_REVIEW_SEGMENT, new_data)
|
self.requestor.send_data(UPSERT_REVIEW_SEGMENT, new_data)
|
||||||
start_data = {k: v for k, v in new_data.items()}
|
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(
|
self.requestor.send_data(
|
||||||
"reviews",
|
"reviews",
|
||||||
json.dumps(
|
json.dumps(review_update),
|
||||||
{
|
|
||||||
"type": "new",
|
|
||||||
"before": start_data,
|
|
||||||
"after": start_data,
|
|
||||||
}
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
self.review_publisher.publish(review_update)
|
||||||
self.requestor.send_data(
|
self.requestor.send_data(
|
||||||
f"{segment.camera}/review_status", segment.severity.value.upper()
|
f"{segment.camera}/review_status", segment.severity.value.upper()
|
||||||
)
|
)
|
||||||
@ -213,16 +215,16 @@ class ReviewSegmentMaintainer(threading.Thread):
|
|||||||
|
|
||||||
new_data = segment.get_data(ended=False)
|
new_data = segment.get_data(ended=False)
|
||||||
self.requestor.send_data(UPSERT_REVIEW_SEGMENT, new_data)
|
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(
|
self.requestor.send_data(
|
||||||
"reviews",
|
"reviews",
|
||||||
json.dumps(
|
json.dumps(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.review_publisher.publish(review_update)
|
||||||
self.requestor.send_data(
|
self.requestor.send_data(
|
||||||
f"{segment.camera}/review_status", segment.severity.value.upper()
|
f"{segment.camera}/review_status", segment.severity.value.upper()
|
||||||
)
|
)
|
||||||
@ -235,16 +237,16 @@ class ReviewSegmentMaintainer(threading.Thread):
|
|||||||
"""End segment."""
|
"""End segment."""
|
||||||
final_data = segment.get_data(ended=True)
|
final_data = segment.get_data(ended=True)
|
||||||
self.requestor.send_data(UPSERT_REVIEW_SEGMENT, final_data)
|
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(
|
self.requestor.send_data(
|
||||||
"reviews",
|
"reviews",
|
||||||
json.dumps(
|
json.dumps(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.review_publisher.publish(review_update)
|
||||||
self.requestor.send_data(f"{segment.camera}/review_status", "NONE")
|
self.requestor.send_data(f"{segment.camera}/review_status", "NONE")
|
||||||
self.active_review_segments[segment.camera] = None
|
self.active_review_segments[segment.camera] = None
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user