From 573a5ede623cc55dc35294765e13d8aede0367c2 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Mon, 23 Mar 2026 15:49:41 -0600 Subject: [PATCH] Various Improvements (#22597) * Filter out cmdline items that we are not interested in * Add endpoint for easily pulling review clip --- frigate/api/media.py | 27 +++++++++++++++++++++++++++ frigate/util/services.py | 4 ++++ 2 files changed, 31 insertions(+) diff --git a/frigate/api/media.py b/frigate/api/media.py index 37c9bb3d0..fd48a11e1 100644 --- a/frigate/api/media.py +++ b/frigate/api/media.py @@ -1227,6 +1227,33 @@ async def event_clip( ) +@router.get( + "/review/{review_id}/clip.mp4", +) +async def review_clip( + request: Request, + review_id: str, + padding: int = Query(0, description="Padding to apply to clip."), +): + try: + review: ReviewSegment = ReviewSegment.get(ReviewSegment.id == review_id) + except DoesNotExist: + return JSONResponse( + content={"success": False, "message": "Review not found"}, status_code=404 + ) + + await require_camera_access(review.camera, request=request) + + end_ts = ( + datetime.now().timestamp() + if review.end_time is None + else review.end_time + padding + ) + return await recording_clip( + request, review.camera, review.start_time - padding, end_ts + ) + + @router.get( "/events/{event_id}/preview.gif", ) diff --git a/frigate/util/services.py b/frigate/util/services.py index db6e37540..52ce5a698 100644 --- a/frigate/util/services.py +++ b/frigate/util/services.py @@ -117,12 +117,16 @@ def get_cpu_stats() -> dict[str, dict]: "mem": str(system_mem.percent), } + keywords = ["ffmpeg", "go2rtc", "frigate.", "python3"] for process in psutil.process_iter(["pid", "name", "cpu_percent", "cmdline"]): pid = str(process.info["pid"]) try: cpu_percent = process.info["cpu_percent"] cmdline = " ".join(process.info["cmdline"]).rstrip() + if not any(keyword in cmdline for keyword in keywords): + continue + with open(f"/proc/{pid}/stat", "r") as f: stats = f.readline().split() utime = int(stats[13])