From ff5406828cee029b5b9cd4bdad77db164e676e93 Mon Sep 17 00:00:00 2001 From: sirmrak Date: Sun, 28 Jun 2026 17:53:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D1=8B?= =?UTF-8?q?=20=D0=BC=D0=B5=D0=B4=D0=B8=D0=B0-=D0=BF=D0=B0=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=BF=D1=80=D0=B8=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B8=D0=BD?= =?UTF-8?q?=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit — _ensure_media_dirs(): базовые archives/ и screenshots/ создаются сразу в async_initialize — _ensure_intercom_dirs(): подпапки per-intercom создаются после загрузки домофонов — Папки готовы до первого события, не нужно ждать download_event_* --- custom_components/rtkey/__init__.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/custom_components/rtkey/__init__.py b/custom_components/rtkey/__init__.py index b9766bd..8246f5a 100644 --- a/custom_components/rtkey/__init__.py +++ b/custom_components/rtkey/__init__.py @@ -228,6 +228,28 @@ class RTKeyCamerasApi: async def async_initialize(self): 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): try: @@ -862,6 +884,7 @@ class RTKeyCamerasApi: return await self._fetch_intercoms() + await self._ensure_intercom_dirs(self.intercom_ids) self._events_polling_task = asyncio.create_task(self._events_polling_loop())