diff --git a/frigate/api/app.py b/frigate/api/app.py index 889bbea74..3110ef019 100644 --- a/frigate/api/app.py +++ b/frigate/api/app.py @@ -23,6 +23,7 @@ from frigate.api.media import MediaBp from frigate.api.notification import NotificationBp from frigate.api.preview import PreviewBp from frigate.api.review import ReviewBp +from frigate.comms.event_metadata_updater import EventMetadataPublisher from frigate.config import FrigateConfig from frigate.const import CONFIG_DIR from frigate.embeddings import EmbeddingsContext @@ -63,6 +64,7 @@ def create_app( external_processor: ExternalEventProcessor, plus_api: PlusApi, stats_emitter: StatsEmitter, + event_metadata_updater: EventMetadataPublisher, ): app = Flask(__name__) @@ -92,6 +94,7 @@ def create_app( app.plus_api = plus_api app.camera_error_image = None app.stats_emitter = stats_emitter + app.event_metadata_updater = event_metadata_updater app.jwt_token = get_jwt_secret() if frigate_config.auth.enabled else None # update the request_address with the x-forwarded-for header from nginx app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1) diff --git a/frigate/api/event.py b/frigate/api/event.py index 182916efa..19318c725 100644 --- a/frigate/api/event.py +++ b/frigate/api/event.py @@ -951,7 +951,7 @@ def set_description(id): @EventBp.route("/events//description/regenerate", methods=["PUT"]) def regenerate_description(id): - event_metadata_updater = EventMetadataPublisher( + current_app.event_metadata_updater = EventMetadataPublisher( EventMetadataTypeEnum.regenerate_description ) @@ -967,7 +967,7 @@ def regenerate_description(id): # and current_app.frigate_config.genai.enabled # ): logger.info(id) - event_metadata_updater.publish(id) + current_app.event_metadata_updater.publish(id) return make_response( jsonify( diff --git a/frigate/app.py b/frigate/app.py index f6479d9ad..bd37c63ff 100644 --- a/frigate/app.py +++ b/frigate/app.py @@ -23,6 +23,10 @@ from frigate.api.app import create_app from frigate.api.auth import hash_password from frigate.comms.config_updater import ConfigPublisher from frigate.comms.dispatcher import Communicator, Dispatcher +from frigate.comms.event_metadata_updater import ( + EventMetadataPublisher, + EventMetadataTypeEnum, +) from frigate.comms.inter_process import InterProcessCommunicator from frigate.comms.mqtt import MqttClient from frigate.comms.webpush import WebPushClient @@ -372,6 +376,7 @@ class FrigateApp: def init_inter_process_communicator(self) -> None: self.inter_process_communicator = InterProcessCommunicator() self.inter_config_updater = ConfigPublisher() + self.event_metadata_updater = EventMetadataPublisher(EventMetadataTypeEnum.all) self.inter_zmq_proxy = ZmqProxy() def init_web_server(self) -> None: @@ -385,6 +390,7 @@ class FrigateApp: self.external_event_processor, self.plus_api, self.stats_emitter, + self.event_metadata_updater, ) def init_onvif(self) -> None: @@ -828,6 +834,7 @@ class FrigateApp: # Stop Communicators self.inter_process_communicator.stop() self.inter_config_updater.stop() + self.event_metadata_updater.stop() self.inter_zmq_proxy.stop() while len(self.detection_shms) > 0: diff --git a/frigate/comms/event_metadata_updater.py b/frigate/comms/event_metadata_updater.py index 84f50168c..a24aa58c5 100644 --- a/frigate/comms/event_metadata_updater.py +++ b/frigate/comms/event_metadata_updater.py @@ -10,6 +10,7 @@ logger = logging.getLogger(__name__) class EventMetadataTypeEnum(str, Enum): + all = "" regenerate_description = "regenerate_description"