More time parsing improvements

This commit is contained in:
Nicolas Mowen 2026-02-12 20:21:40 -07:00
parent 45c6be47d2
commit eb9f16b4fa

View File

@ -3,6 +3,7 @@
import base64 import base64
import json import json
import logging import logging
import time
from datetime import datetime from datetime import datetime
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
@ -162,23 +163,26 @@ async def _execute_search_objects(
This searches for detected objects (events) in Frigate using the same This searches for detected objects (events) in Frigate using the same
logic as the events API endpoint. logic as the events API endpoint.
""" """
# Parse ISO 8601 timestamps to Unix timestamps if provided # Parse after/before as server local time; convert to Unix timestamp
after = arguments.get("after") after = arguments.get("after")
before = arguments.get("before") before = arguments.get("before")
def _parse_as_local_timestamp(s: str):
s = s.replace("Z", "").strip()[:19]
dt = datetime.strptime(s, "%Y-%m-%dT%H:%M:%S")
return time.mktime(dt.timetuple())
if after: if after:
try: try:
after_dt = datetime.fromisoformat(after.replace("Z", "+00:00")) after = _parse_as_local_timestamp(after)
after = after_dt.timestamp() except (ValueError, AttributeError, TypeError):
except (ValueError, AttributeError):
logger.warning(f"Invalid 'after' timestamp format: {after}") logger.warning(f"Invalid 'after' timestamp format: {after}")
after = None after = None
if before: if before:
try: try:
before_dt = datetime.fromisoformat(before.replace("Z", "+00:00")) before = _parse_as_local_timestamp(before)
before = before_dt.timestamp() except (ValueError, AttributeError, TypeError):
except (ValueError, AttributeError):
logger.warning(f"Invalid 'before' timestamp format: {before}") logger.warning(f"Invalid 'before' timestamp format: {before}")
before = None before = None