mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-04 20:09:12 +01:00
* use latest preview frame for latest image when camera is offline * remove frame extraction logic * tests * frontend * add description to api endpoint
81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
import os
|
|
import shutil
|
|
import unittest
|
|
|
|
from frigate.output.preview import (
|
|
PREVIEW_CACHE_DIR,
|
|
PREVIEW_FRAME_TYPE,
|
|
get_most_recent_preview_frame,
|
|
)
|
|
|
|
|
|
class TestPreviewLoader(unittest.TestCase):
|
|
def setUp(self):
|
|
if os.path.exists(PREVIEW_CACHE_DIR):
|
|
shutil.rmtree(PREVIEW_CACHE_DIR)
|
|
os.makedirs(PREVIEW_CACHE_DIR)
|
|
|
|
def tearDown(self):
|
|
if os.path.exists(PREVIEW_CACHE_DIR):
|
|
shutil.rmtree(PREVIEW_CACHE_DIR)
|
|
|
|
def test_get_most_recent_preview_frame_missing(self):
|
|
self.assertIsNone(get_most_recent_preview_frame("test_camera"))
|
|
|
|
def test_get_most_recent_preview_frame_exists(self):
|
|
camera = "test_camera"
|
|
# create dummy preview files
|
|
for ts in ["1000.0", "2000.0", "1500.0"]:
|
|
with open(
|
|
os.path.join(
|
|
PREVIEW_CACHE_DIR, f"preview_{camera}-{ts}.{PREVIEW_FRAME_TYPE}"
|
|
),
|
|
"w",
|
|
) as f:
|
|
f.write(f"test_{ts}")
|
|
|
|
expected_path = os.path.join(
|
|
PREVIEW_CACHE_DIR, f"preview_{camera}-2000.0.{PREVIEW_FRAME_TYPE}"
|
|
)
|
|
self.assertEqual(get_most_recent_preview_frame(camera), expected_path)
|
|
|
|
def test_get_most_recent_preview_frame_before(self):
|
|
camera = "test_camera"
|
|
# create dummy preview files
|
|
for ts in ["1000.0", "2000.0"]:
|
|
with open(
|
|
os.path.join(
|
|
PREVIEW_CACHE_DIR, f"preview_{camera}-{ts}.{PREVIEW_FRAME_TYPE}"
|
|
),
|
|
"w",
|
|
) as f:
|
|
f.write(f"test_{ts}")
|
|
|
|
# Test finding frame before or at 1500
|
|
expected_path = os.path.join(
|
|
PREVIEW_CACHE_DIR, f"preview_{camera}-1000.0.{PREVIEW_FRAME_TYPE}"
|
|
)
|
|
self.assertEqual(
|
|
get_most_recent_preview_frame(camera, before=1500.0), expected_path
|
|
)
|
|
|
|
# Test finding frame before or at 999
|
|
self.assertIsNone(get_most_recent_preview_frame(camera, before=999.0))
|
|
|
|
def test_get_most_recent_preview_frame_other_camera(self):
|
|
camera = "test_camera"
|
|
other_camera = "other_camera"
|
|
with open(
|
|
os.path.join(
|
|
PREVIEW_CACHE_DIR, f"preview_{other_camera}-3000.0.{PREVIEW_FRAME_TYPE}"
|
|
),
|
|
"w",
|
|
) as f:
|
|
f.write("test")
|
|
|
|
self.assertIsNone(get_most_recent_preview_frame(camera))
|
|
|
|
def test_get_most_recent_preview_frame_no_directory(self):
|
|
shutil.rmtree(PREVIEW_CACHE_DIR)
|
|
self.assertIsNone(get_most_recent_preview_frame("test_camera"))
|