From 20ba0a5142a997f8acb194ab4d34c705deacae6b Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Mon, 26 Aug 2024 06:54:42 -0600 Subject: [PATCH] Refactor recordings config to be based off of review items --- frigate/config.py | 37 ++++++++++++++++++------------------- frigate/util/config.py | 11 +++++++---- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/frigate/config.py b/frigate/config.py index a430b3d6c..4e9d2f368 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -296,12 +296,9 @@ class RetainModeEnum(str, Enum): active_objects = "active_objects" -class RetainConfig(FrigateBaseModel): - default: float = Field(default=10, title="Default retention period.") - mode: RetainModeEnum = Field(default=RetainModeEnum.motion, title="Retain mode.") - objects: Dict[str, float] = Field( - default_factory=dict, title="Object retention period." - ) +class RecordRetainConfig(FrigateBaseModel): + days: float = Field(default=0, title="Default retention period.") + mode: RetainModeEnum = Field(default=RetainModeEnum.all, title="Retain mode.") class EventsConfig(FrigateBaseModel): @@ -309,18 +306,9 @@ class EventsConfig(FrigateBaseModel): default=5, title="Seconds to retain before event starts.", le=MAX_PRE_CAPTURE ) post_capture: int = Field(default=5, title="Seconds to retain after event ends.") - objects: Optional[List[str]] = Field( - None, - title="List of objects to be detected in order to save the event.", + retain: RecordRetainConfig = Field( + default_factory=RecordRetainConfig, title="Event retention settings." ) - retain: RetainConfig = Field( - default_factory=RetainConfig, title="Event retention settings." - ) - - -class RecordRetainConfig(FrigateBaseModel): - days: float = Field(default=0, title="Default retention period.") - mode: RetainModeEnum = Field(default=RetainModeEnum.all, title="Retain mode.") class RecordExportConfig(FrigateBaseModel): @@ -355,8 +343,11 @@ class RecordConfig(FrigateBaseModel): retain: RecordRetainConfig = Field( default_factory=RecordRetainConfig, title="Record retention settings." ) - events: EventsConfig = Field( - default_factory=EventsConfig, title="Event specific settings." + detections: EventsConfig = Field( + default_factory=EventsConfig, title="Detection specific retention settings." + ) + alerts: EventsConfig = Field( + default_factory=EventsConfig, title="Alert specific retention settings." ) export: RecordExportConfig = Field( default_factory=RecordExportConfig, title="Recording Export Config" @@ -924,6 +915,14 @@ class CameraFfmpegConfig(FfmpegConfig): return v +class RetainConfig(FrigateBaseModel): + default: float = Field(default=10, title="Default retention period.") + mode: RetainModeEnum = Field(default=RetainModeEnum.motion, title="Retain mode.") + objects: Dict[str, float] = Field( + default_factory=dict, title="Object retention period." + ) + + class SnapshotsConfig(FrigateBaseModel): enabled: bool = Field(default=False, title="Snapshots enabled.") clean_copy: bool = Field( diff --git a/frigate/util/config.py b/frigate/util/config.py index e7744e56d..11524b871 100644 --- a/frigate/util/config.py +++ b/frigate/util/config.py @@ -13,7 +13,7 @@ from frigate.util.services import get_video_properties logger = logging.getLogger(__name__) -CURRENT_CONFIG_VERSION = 0.14 +CURRENT_CONFIG_VERSION = "0.14.1-0" def migrate_frigate_config(config_file: str): @@ -29,7 +29,7 @@ def migrate_frigate_config(config_file: str): with open(config_file, "r") as f: config: dict[str, dict[str, any]] = yaml.load(f) - previous_version = config.get("version", 0.13) + previous_version = str(config.get("version", "0.13")) if previous_version == CURRENT_CONFIG_VERSION: logger.info("frigate config does not need migration...") @@ -38,12 +38,12 @@ def migrate_frigate_config(config_file: str): logger.info("copying config as backup...") shutil.copy(config_file, os.path.join(CONFIG_DIR, "backup_config.yaml")) - if previous_version < 0.14: + if previous_version < "0.14": logger.info(f"Migrating frigate config from {previous_version} to 0.14...") new_config = migrate_014(config) with open(config_file, "w") as f: yaml.dump(new_config, f) - previous_version = 0.14 + previous_version = "0.14" logger.info("Migrating export file names...") for file in os.listdir(EXPORT_DIR): @@ -55,6 +55,9 @@ def migrate_frigate_config(config_file: str): os.path.join(EXPORT_DIR, file), os.path.join(EXPORT_DIR, new_name) ) + if previous_version < "0.14.1-0": + logger.info(f"Migrating frigate config from {previous_version} to 0.14...") + logger.info("Finished frigate config migration...")