v158
This commit is contained in:
@@ -285,12 +285,19 @@ async def update_camera(cam_id: str, request: Request) -> dict:
|
||||
@router.delete("/{cam_id}")
|
||||
async def delete_camera(cam_id: str, request: Request) -> dict:
|
||||
require_role(request, "admin")
|
||||
if not runtime.config.camera(cam_id):
|
||||
cams = runtime.config.cameras
|
||||
idx = next((i for i, c in enumerate(cams) if c.id == cam_id), None)
|
||||
if idx is None:
|
||||
raise HTTPException(404, "camera not found")
|
||||
runtime.config.cameras = [c for c in runtime.config.cameras if c.id != cam_id]
|
||||
# удаление из середины сдвигает слоты последующих камер → их папки записи
|
||||
# (номер слота) меняются. Перезапускаем запись, чтобы ffmpeg писал в новую папку.
|
||||
shifts = idx < len(cams) - 1
|
||||
runtime.config.cameras = [c for c in cams if c.id != cam_id]
|
||||
save_config(runtime.config)
|
||||
await runtime.supervisor.remove_camera(cam_id)
|
||||
await go2rtc.remove_camera_streams(runtime.config, cam_id)
|
||||
if shifts:
|
||||
await runtime.supervisor.restart_all()
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user