From 9bef54feb7f5db30f8be52d1d3130ae9c2b61618 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Mon, 30 Sep 2024 07:35:13 -0500 Subject: [PATCH] Better config file handling --- frigate/ptz/autotrack.py | 6 ++++++ frigate/util/builtin.py | 19 +++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/frigate/ptz/autotrack.py b/frigate/ptz/autotrack.py index 1dcc8405d..d28166a7b 100644 --- a/frigate/ptz/autotrack.py +++ b/frigate/ptz/autotrack.py @@ -325,6 +325,12 @@ class PtzAutoTracker: def _write_config(self, camera): config_file = os.environ.get("CONFIG_FILE", f"{CONFIG_DIR}/config.yml") + # Check if we can use .yaml instead of .yml + config_file_yaml = config_file.replace(".yml", ".yaml") + + if os.path.isfile(config_file_yaml): + config_file = config_file_yaml + logger.debug( f"{camera}: Writing new config with autotracker motion coefficients: {self.config.cameras[camera].onvif.autotracking.movement_weights}" ) diff --git a/frigate/util/builtin.py b/frigate/util/builtin.py index 164c34091..8da0e9283 100644 --- a/frigate/util/builtin.py +++ b/frigate/util/builtin.py @@ -198,12 +198,23 @@ def update_yaml_from_url(file_path, url): def update_yaml_file(file_path, key_path, new_value): yaml = YAML() yaml.indent(mapping=2, sequence=4, offset=2) - with open(file_path, "r") as f: - data = yaml.load(f) + + try: + with open(file_path, "r") as f: + data = yaml.load(f) + except FileNotFoundError: + logger.error( + f"Unable to read from Frigate config file {file_path}. Make sure it exists and is readable." + ) + return data = update_yaml(data, key_path, new_value) - with open(file_path, "w") as f: - yaml.dump(data, f) + + try: + with open(file_path, "w") as f: + yaml.dump(data, f) + except Exception as e: + logger.error(f"Unable to write to Frigate config file {file_path}: {e}") def update_yaml(data, key_path, new_value):