From 33ab97597f1f210fe6faa49020a7c313dabca658 Mon Sep 17 00:00:00 2001 From: Jeff Culverhouse Date: Wed, 5 Nov 2025 10:23:11 -0500 Subject: [PATCH] fix: more generic Dockerfile; remove old/; better logging for failed /media writes --- src/amcrest2mqtt/mixins/helpers.py | 23 ++++++++++++++++++++++- uv.lock | 6 +++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/amcrest2mqtt/mixins/helpers.py b/src/amcrest2mqtt/mixins/helpers.py index 1517a18..41d8132 100644 --- a/src/amcrest2mqtt/mixins/helpers.py +++ b/src/amcrest2mqtt/mixins/helpers.py @@ -244,9 +244,30 @@ class HelpersMixin: try: file_path.write_bytes(recording.encode("latin-1")) except IOError as err: - self.logger.error(f"failed to save recordingt to {path}: {err}") + self.logger.error(f"Failed to save recording to {file_path}: {err}") return None + self.upsert_state( + device_id, + media={"recording": file_path}, + sensor={"recording_time": datetime.now(timezone.utc).isoformat()}, + ) + local_file = Path(f"./{file_name}") + latest_link = Path(f"{path}/{name}-latest.mp4") + + try: + if latest_link.is_symlink(): + latest_link.unlink() + latest_link.symlink_to(local_file) + except IOError as err: + self.logger.error(f"Failed to save symlink {latest_link} -> {local_file}: {err}") + pass + + if "media_source" in self.config["media"]: + url = f"{self.config["media"]["media_source"]}/{file_name}" + self.upsert_state(device_id, sensor={"recording_url": url}) + return url + self.upsert_state( device_id, media={"recording": file_path}, diff --git a/uv.lock b/uv.lock index fe97081..fcd987d 100644 --- a/uv.lock +++ b/uv.lock @@ -468,11 +468,11 @@ wheels = [ [[package]] name = "pytokens" -version = "0.2.0" +version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/c2/dbadcdddb412a267585459142bfd7cc241e6276db69339353ae6e241ab2b/pytokens-0.2.0.tar.gz", hash = "sha256:532d6421364e5869ea57a9523bf385f02586d4662acbcc0342afd69511b4dd43", size = 15368, upload-time = "2025-10-15T08:02:42.738Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/8d/a762be14dae1c3bf280202ba3172020b2b0b4c537f94427435f19c413b72/pytokens-0.3.0.tar.gz", hash = "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a", size = 17644, upload-time = "2025-11-05T13:36:35.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/89/5a/c269ea6b348b6f2c32686635df89f32dbe05df1088dd4579302a6f8f99af/pytokens-0.2.0-py3-none-any.whl", hash = "sha256:74d4b318c67f4295c13782ddd9abcb7e297ec5630ad060eb90abf7ebbefe59f8", size = 12038, upload-time = "2025-10-15T08:02:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/84/25/d9db8be44e205a124f6c98bc0324b2bb149b7431c53877fc6d1038dddaf5/pytokens-0.3.0-py3-none-any.whl", hash = "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3", size = 12195, upload-time = "2025-11-05T13:36:33.183Z" }, ] [[package]]