diff --git a/frigate/api/export.py b/frigate/api/export.py index 2f4ca78da0..09ded84124 100644 --- a/frigate/api/export.py +++ b/frigate/api/export.py @@ -398,7 +398,7 @@ class _StreamingZipBuffer: def _unique_archive_name(export: Export, used: set[str]) -> str: base = sanitize_filename(export.name) if export.name else None if not base: - base = f"{export.camera}_{int(datetime.datetime.timestamp(export.date))}" + base = f"{export.camera}_{int(export.date)}" candidate = f"{base}.mp4" counter = 1 diff --git a/frigate/jobs/debug_replay.py b/frigate/jobs/debug_replay.py index 99007920ad..3dd7a02bf6 100644 --- a/frigate/jobs/debug_replay.py +++ b/frigate/jobs/debug_replay.py @@ -14,7 +14,6 @@ import threading import time from abc import ABC, abstractmethod from dataclasses import dataclass -from datetime import datetime from typing import TYPE_CHECKING, Any, Optional, cast from peewee import ModelSelect @@ -209,7 +208,9 @@ class ExportDebugReplaySource(DebugReplaySource): def __init__(self, export: Export, duration: float) -> None: self._camera = cast(str, export.camera) - self._start_ts = datetime.timestamp(cast(datetime, export.date)) + # Export.date is declared DateTimeField but Frigate writes raw unix + # timestamps to the column. + self._start_ts = float(cast(Any, export.date)) self._video_path = cast(str, export.video_path) self._duration = duration diff --git a/frigate/test/test_media_auth.py b/frigate/test/test_media_auth.py index 80dc6fb8b0..d025fea614 100644 --- a/frigate/test/test_media_auth.py +++ b/frigate/test/test_media_auth.py @@ -230,7 +230,7 @@ class TestExportResolution(unittest.TestCase): id=export_id, camera=camera, name=f"export-{export_id}", - date=datetime.datetime.now(), + date=int(datetime.datetime.now().timestamp()), video_path=f"/media/frigate/exports/{filename}", thumb_path=f"/media/frigate/exports/{filename}.jpg", in_progress=False,