Создание структуры медиа-папок при инициализации интеграции

— _ensure_media_dirs(): базовые archives/ и screenshots/ создаются сразу в async_initialize
— _ensure_intercom_dirs(): подпапки per-intercom создаются после загрузки домофонов
— Папки готовы до первого события, не нужно ждать download_event_*
This commit is contained in:
2026-06-28 17:53:51 +03:00
parent c121261f3d
commit ff5406828c
+23
View File
@@ -228,6 +228,28 @@ class RTKeyCamerasApi:
async def async_initialize(self): async def async_initialize(self):
await self._check_ffmpeg() await self._check_ffmpeg()
await self._ensure_media_dirs()
async def _ensure_media_dirs(self):
"""Создаём базовую структуру папок для архивов и скриншотов."""
base = self._get_media_base_path() / self.archive_path
dirs_to_create = [
base / "archives",
base / "screenshots",
]
for dir_path in dirs_to_create:
await self.hass.async_add_executor_job(dir_path.mkdir, True, True)
_LOGGER.info(f"Медиа-папка: {dir_path}")
_LOGGER.info(f"Базовый путь для медиа: {base}")
async def _ensure_intercom_dirs(self, intercom_ids: list[str]):
"""Создаём подпапки для каждого домофона после загрузки их списка."""
for intercom_id in intercom_ids:
for dir_path in (self._get_archive_dir(intercom_id), self._get_screenshot_dir(intercom_id)):
await self.hass.async_add_executor_job(dir_path.mkdir, True, True)
async def _check_ffmpeg(self): async def _check_ffmpeg(self):
try: try:
@@ -862,6 +884,7 @@ class RTKeyCamerasApi:
return return
await self._fetch_intercoms() await self._fetch_intercoms()
await self._ensure_intercom_dirs(self.intercom_ids)
self._events_polling_task = asyncio.create_task(self._events_polling_loop()) self._events_polling_task = asyncio.create_task(self._events_polling_loop())