mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-19 01:17:06 +03:00
backend
This commit is contained in:
parent
a1ce9aacf2
commit
02e0133116
@ -40,3 +40,8 @@ class MediaMjpegFeedQueryParams(BaseModel):
|
|||||||
mask: Optional[int] = None
|
mask: Optional[int] = None
|
||||||
motion: Optional[int] = None
|
motion: Optional[int] = None
|
||||||
regions: Optional[int] = None
|
regions: Optional[int] = None
|
||||||
|
|
||||||
|
|
||||||
|
class MediaRecordingsSummaryQueryParams(BaseModel):
|
||||||
|
timezone: str = "utc"
|
||||||
|
cameras: Optional[str] = "all"
|
||||||
|
|||||||
@ -25,6 +25,7 @@ from frigate.api.defs.query.media_query_parameters import (
|
|||||||
MediaEventsSnapshotQueryParams,
|
MediaEventsSnapshotQueryParams,
|
||||||
MediaLatestFrameQueryParams,
|
MediaLatestFrameQueryParams,
|
||||||
MediaMjpegFeedQueryParams,
|
MediaMjpegFeedQueryParams,
|
||||||
|
MediaRecordingsSummaryQueryParams,
|
||||||
)
|
)
|
||||||
from frigate.api.defs.tags import Tags
|
from frigate.api.defs.tags import Tags
|
||||||
from frigate.config import FrigateConfig
|
from frigate.config import FrigateConfig
|
||||||
@ -356,6 +357,50 @@ def get_recordings_storage_usage(request: Request):
|
|||||||
return JSONResponse(content=camera_usages)
|
return JSONResponse(content=camera_usages)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/recordings/summary")
|
||||||
|
def all_recordings_summary(params: MediaRecordingsSummaryQueryParams = Depends()):
|
||||||
|
"""Returns true/false by day indicating if recordings exist"""
|
||||||
|
hour_modifier, minute_modifier, seconds_offset = get_tz_modifiers(params.timezone)
|
||||||
|
|
||||||
|
cameras = params.cameras
|
||||||
|
|
||||||
|
query = (
|
||||||
|
Recordings.select(
|
||||||
|
fn.strftime(
|
||||||
|
"%Y-%m-%d",
|
||||||
|
fn.datetime(
|
||||||
|
Recordings.start_time + seconds_offset,
|
||||||
|
"unixepoch",
|
||||||
|
hour_modifier,
|
||||||
|
minute_modifier,
|
||||||
|
),
|
||||||
|
).alias("day")
|
||||||
|
)
|
||||||
|
.group_by(
|
||||||
|
fn.strftime(
|
||||||
|
"%Y-%m-%d",
|
||||||
|
fn.datetime(
|
||||||
|
Recordings.start_time + seconds_offset,
|
||||||
|
"unixepoch",
|
||||||
|
hour_modifier,
|
||||||
|
minute_modifier,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.order_by(Recordings.start_time.desc())
|
||||||
|
)
|
||||||
|
|
||||||
|
if cameras != "all":
|
||||||
|
query = query.where(Recordings.camera << cameras.split(","))
|
||||||
|
|
||||||
|
print(query)
|
||||||
|
|
||||||
|
recording_days = query.namedtuples()
|
||||||
|
days = {day.day: True for day in recording_days}
|
||||||
|
|
||||||
|
return JSONResponse(content=days)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{camera_name}/recordings/summary")
|
@router.get("/{camera_name}/recordings/summary")
|
||||||
def recordings_summary(camera_name: str, timezone: str = "utc"):
|
def recordings_summary(camera_name: str, timezone: str = "utc"):
|
||||||
"""Returns hourly summary for recordings of given camera"""
|
"""Returns hourly summary for recordings of given camera"""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user