diff --git a/custom_components/mail_and_packages/config_flow.py b/custom_components/mail_and_packages/config_flow.py index 67087498..ea7277d4 100644 --- a/custom_components/mail_and_packages/config_flow.py +++ b/custom_components/mail_and_packages/config_flow.py @@ -24,6 +24,7 @@ CONF_CUSTOM_IMG_FILE, CONF_DURATION, CONF_FOLDER, + CONF_GENERATE_GRID, CONF_GENERATE_MP4, CONF_IMAGE_SECURITY, CONF_IMAP_SECURITY, @@ -230,6 +231,9 @@ def _get_default(key: str, fallback_default: Any = None) -> None: vol.Optional( CONF_DURATION, default=_get_default(CONF_DURATION) ): vol.Coerce(int), + vol.Optional( + CONF_GENERATE_GRID, default=_get_default(CONF_GENERATE_GRID) + ): cv.boolean, vol.Optional( CONF_GENERATE_MP4, default=_get_default(CONF_GENERATE_MP4) ): cv.boolean, @@ -384,6 +388,7 @@ async def _show_config_2(self, user_input): CONF_DURATION: DEFAULT_GIF_DURATION, CONF_IMAGE_SECURITY: DEFAULT_IMAGE_SECURITY, CONF_IMAP_TIMEOUT: DEFAULT_IMAP_TIMEOUT, + CONF_GENERATE_GRID: False, CONF_GENERATE_MP4: False, CONF_ALLOW_EXTERNAL: DEFAULT_ALLOW_EXTERNAL, CONF_CUSTOM_IMG: DEFAULT_CUSTOM_IMG, diff --git a/custom_components/mail_and_packages/const.py b/custom_components/mail_and_packages/const.py index 9b7c8a45..de213f53 100644 --- a/custom_components/mail_and_packages/const.py +++ b/custom_components/mail_and_packages/const.py @@ -27,6 +27,7 @@ ATTR_AMAZON_IMAGE = "amazon_image" ATTR_COUNT = "count" ATTR_CODE = "code" +ATTR_GRID_IMAGE_NAME = "grid_image" ATTR_ORDER = "order" ATTR_TRACKING = "tracking" ATTR_TRACKING_NUM = "tracking_#" @@ -52,6 +53,7 @@ CONF_SCAN_INTERVAL = "scan_interval" CONF_IMAGE_SECURITY = "image_security" CONF_IMAP_TIMEOUT = "imap_timeout" +CONF_GENERATE_GRID = "generate_grid" CONF_GENERATE_MP4 = "generate_mp4" CONF_AMAZON_FWDS = "amazon_fwds" CONF_AMAZON_DAYS = "amazon_days" @@ -1213,6 +1215,13 @@ key="usps_mail_image_url", entity_category=EntityCategory.DIAGNOSTIC, ), + "usps_mail_grid_image_path": SensorEntityDescription( + name="Mail Grid Image Path", + icon="mdi:folder-multiple-image", + key="usps_mail_grid_image_path", + entity_category=EntityCategory.DIAGNOSTIC, + entity_registry_enabled_default=False, + ), } BINARY_SENSORS: Final[dict[str, MailandPackagesBinarySensorEntityDescription]] = { @@ -1221,12 +1230,14 @@ key="usps_update", device_class=BinarySensorDeviceClass.UPDATE, selectable=False, + entity_registry_enabled_default=False, ), "amazon_update": MailandPackagesBinarySensorEntityDescription( name="Amazon Image Updated", key="amazon_update", device_class=BinarySensorDeviceClass.UPDATE, selectable=False, + entity_registry_enabled_default=False, ), "usps_mail_delivered": MailandPackagesBinarySensorEntityDescription( name="USPS Mail Delivered", diff --git a/custom_components/mail_and_packages/helpers.py b/custom_components/mail_and_packages/helpers.py index 68ac1af0..132ba0b9 100644 --- a/custom_components/mail_and_packages/helpers.py +++ b/custom_components/mail_and_packages/helpers.py @@ -61,6 +61,7 @@ ATTR_CODE, ATTR_COUNT, ATTR_EMAIL, + ATTR_GRID_IMAGE_NAME, ATTR_IMAGE_NAME, ATTR_IMAGE_PATH, ATTR_ORDER, @@ -77,6 +78,7 @@ CONF_CUSTOM_IMG_FILE, CONF_DURATION, CONF_FOLDER, + CONF_GENERATE_GRID, CONF_GENERATE_MP4, CONF_IMAP_SECURITY, CONF_STORAGE, @@ -194,6 +196,7 @@ def process_emails(hass: HomeAssistant, config: ConfigEntry) -> dict: resources = config.get(CONF_RESOURCES) imap_security = config.get(CONF_IMAP_SECURITY) verify_ssl = config.get(CONF_VERIFY_SSL) + generate_grid = config.get(CONF_GENERATE_GRID) # Create the dict container data = {} @@ -217,6 +220,11 @@ def process_emails(hass: HomeAssistant, config: ConfigEntry) -> dict: _LOGGER.debug("Image name: %s", image_name) _image[ATTR_IMAGE_NAME] = image_name + if generate_grid: + png_file = image_name.replace(".gif", "_grid.png") + _LOGGER.debug("Grid image name: %s", png_file) + _image[ATTR_GRID_IMAGE_NAME] = png_file + # Amazon delivery image name image_name = image_file_name(hass, config, True) _LOGGER.debug("Amazon Image Name: %s", image_name) @@ -273,7 +281,9 @@ def copy_images(hass: HomeAssistant, config: ConfigEntry) -> None: def image_file_name( - hass: HomeAssistant, config: ConfigEntry, amazon: bool = False + hass: HomeAssistant, + config: ConfigEntry, + amazon: bool = False, ) -> str: """Determine if filename is to be changed or not. @@ -381,6 +391,7 @@ def fetch( img_out_path = f"{hass.config.path()}/{default_image_path(hass, config)}" gif_duration = config.get(CONF_DURATION) generate_mp4 = config.get(CONF_GENERATE_MP4) + generate_grid = config.get(CONF_GENERATE_GRID) amazon_fwds = cv.ensure_list_csv(config.get(CONF_AMAZON_FWDS)) image_name = data[ATTR_IMAGE_NAME] amazon_image_name = data[ATTR_AMAZON_IMAGE] @@ -404,6 +415,7 @@ def fetch( image_name, generate_mp4, nomail, + generate_grid, ) elif sensor == AMAZON_PACKAGES: count[sensor] = get_items( @@ -483,15 +495,15 @@ def login( try: if security == "SSL": if not verify: - context = ssl.client_context_no_verify() + context = ssl.get_default_no_verify_context() else: - context = ssl.client_context() + context = ssl.get_default_context() account = imaplib.IMAP4_SSL(host=host, port=port, ssl_context=context) elif security == "startTLS": if not verify: - context = ssl.client_context_no_verify() + context = ssl.get_default_no_verify_context() else: - context = ssl.client_context() + context = ssl.get_default_context() account = imaplib.IMAP4(host=host, port=port) account.starttls(context) else: @@ -661,6 +673,7 @@ def get_mails( image_name: str, gen_mp4: bool = False, custom_img: str = None, + gen_grid: bool = False, ) -> int: """Create GIF image based on the attachments in the inbox.""" image_count = 0 @@ -837,6 +850,8 @@ def get_mails( if gen_mp4: _generate_mp4(image_output_path, image_name) + if gen_grid: + generate_grid_img(image_output_path, image_name, image_count) return image_count @@ -875,6 +890,43 @@ def _generate_mp4(path: str, image_file: str) -> None: ) +def generate_grid_img(path: str, image_file: str, count: int) -> None: + """Generate png grid from gif. + + use a subprocess so we don't lock up the thread + comamnd: ffmpeg -f gif -i infile.gif outfile.mp4 + """ + count = max(count, 1) + if count % 2 == 0: + length = int(count / 2) + else: + length = int(count / 2) + count % 2 + + gif_image = os.path.join(path, image_file) + png_file = os.path.join(path, image_file.replace(".gif", "_grid.png")) + filecheck = os.path.isfile(png_file) + _LOGGER.debug("Generating png image grid: %s", png_file) + if filecheck: + cleanup_images(os.path.split(png_file)) + _LOGGER.debug("Removing old png grid: %s", png_file) + + # TODO: find a way to call ffmpeg the right way from HA + subprocess.call( + [ + "ffmpeg", + "-i", + gif_image, + "-r", + "0.20", + "-filter_complex", + f"tile=2x{length}:padding=10:color=black", + png_file, + ], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + + def resize_images(images: list, width: int, height: int) -> list: """Resize images. @@ -933,6 +985,9 @@ def cleanup_images(path: str, image: Optional[str] = None) -> None: Only supose to delete .gif, .mp4, and .jpg files """ + if isinstance(path, tuple): + path = path[0] + image = path[1] if image is not None: try: os.remove(path + image) @@ -941,7 +996,12 @@ def cleanup_images(path: str, image: Optional[str] = None) -> None: return for file in os.listdir(path): - if file.endswith(".gif") or file.endswith(".mp4") or file.endswith(".jpg"): + if ( + file.endswith(".gif") + or file.endswith(".mp4") + or file.endswith(".jpg") + or file.endswith(".png") + ): try: os.remove(path + file) except Exception as err: diff --git a/custom_components/mail_and_packages/sensor.py b/custom_components/mail_and_packages/sensor.py index ac6d8643..9cf97c42 100644 --- a/custom_components/mail_and_packages/sensor.py +++ b/custom_components/mail_and_packages/sensor.py @@ -20,6 +20,7 @@ AMAZON_EXCEPTION, AMAZON_EXCEPTION_ORDER, AMAZON_ORDER, + ATTR_GRID_IMAGE_NAME, ATTR_IMAGE, ATTR_IMAGE_NAME, ATTR_IMAGE_PATH, @@ -186,17 +187,18 @@ def native_value(self) -> Optional[str]: image = "" the_path = None - if ATTR_IMAGE_NAME in self.coordinator.data.keys(): - image = self.coordinator.data[ATTR_IMAGE_NAME] + image = self.coordinator.data.get(ATTR_IMAGE_NAME) - if ATTR_IMAGE_PATH in self.coordinator.data.keys(): - path = self.coordinator.data[ATTR_IMAGE_PATH] - else: - path = self._config.data[CONF_PATH] + grid_image = self.coordinator.data.get(ATTR_GRID_IMAGE_NAME) + + path = self.coordinator.data.get(ATTR_IMAGE_PATH, self._config.data[CONF_PATH]) if self.type == "usps_mail_image_system_path": _LOGGER.debug("Updating system image path to: %s", path) the_path = f"{self.hass.config.path()}/{path}{image}" + elif self.type == "usps_mail_grid_image_path": + _LOGGER.debug("Updating grid image path to: %s", path) + the_path = f"{self.hass.config.path()}/{path}{grid_image}" elif self.type == "usps_mail_image_url": if ( self.hass.config.external_url is None diff --git a/custom_components/mail_and_packages/strings.json b/custom_components/mail_and_packages/strings.json index fcf3015b..7eee9a69 100644 --- a/custom_components/mail_and_packages/strings.json +++ b/custom_components/mail_and_packages/strings.json @@ -35,6 +35,7 @@ "gif_duration": "Image Duration (seconds)", "image_security": "Random Image Filename", "imap_timeout": "Time in seconds before connection timeout (seconds, minimum 10)", + "generate_grid": "Create image grid for LLM vision models", "generate_mp4": "Create mp4 from images", "allow_external": "Create image for notification apps", "custom_img": "Use custom 'no image' image?" @@ -77,6 +78,7 @@ "image_path": "Image Path", "gif_duration": "Image Duration (seconds)", "image_security": "Random Image Filename", + "generate_grid": "Create image grid for LLM vision models", "generate_mp4": "Create mp4 from images", "resources": "Sensors List", "imap_timeout": "Time in seconds before connection timeout (seconds, minimum 10)", diff --git a/custom_components/mail_and_packages/translations/ca.json b/custom_components/mail_and_packages/translations/ca.json index b845d5a9..0772e208 100644 --- a/custom_components/mail_and_packages/translations/ca.json +++ b/custom_components/mail_and_packages/translations/ca.json @@ -37,7 +37,8 @@ "imap_timeout": "Temps en segons abans de l'expiració de la connexió (segons, mínim 10)", "generate_mp4": "Crea mp4 a partir d’imatges", "allow_external": "Crea una imatge per a aplicacions de notificacions", - "custom_img": "Utilitza la imatge personalitzada 'no hi ha imatge'?" + "custom_img": "Utilitza la imatge personalitzada 'no hi ha imatge'?", + "generate_grid": "Crea una quadrícula d'imatges per a models de visió LLM" }, "description": "Finalitzeu la configuració personalitzant la següent en funció de la vostra instal·lació de correu electrònic i la instal·lació d’assistència a casa. \n\n Per obtenir més informació sobre les opcions [Integració de paquets i correus] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), reviseu les opcions [configuració, plantilles , secció i automatitzacions] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) a GitHub.", "title": "Correu i paquets (pas 2 de 2)" @@ -81,7 +82,8 @@ "resources": "Llista de sensors", "imap_timeout": "Temps en segons abans de l'expiració de la connexió (segons, mínim 10)", "allow_external": "Crea una imatge per a aplicacions de notificacions", - "custom_img": "Utilitza la imatge personalitzada 'no hi ha imatge'?" + "custom_img": "Utilitza la imatge personalitzada 'no hi ha imatge'?", + "generate_grid": "Crea una quadrícula d'imatges per a models de visió LLM" }, "description": "Acabeu la configuració personalitzant el següent en funció de l'estructura del vostre correu electrònic i de la instal·lació de Home Assistant.\n\nPer obtenir més detalls sobre les opcions d'[integració de correu i paquets](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), consulteu la [secció de configuració, plantilles i automatitzacions](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) a GitHub.\n\nSi utilitzeu correus electrònics reenviats d'Amazon, separeu cada adreça amb una coma o introduïu (cap) per esborrar aquesta configuració.", "title": "Correu i paquets (pas 2 de 2)" diff --git a/custom_components/mail_and_packages/translations/de.json b/custom_components/mail_and_packages/translations/de.json index a7dfb689..9a574621 100644 --- a/custom_components/mail_and_packages/translations/de.json +++ b/custom_components/mail_and_packages/translations/de.json @@ -37,7 +37,8 @@ "imap_timeout": "Zeit in Sekunden bis zum Timeout der Verbindung (Sekunden, mindestens 10)", "generate_mp4": "Erstellen Sie mp4 aus Bildern", "allow_external": "Bild für Benachrichtigungs-Apps erstellen", - "custom_img": "Benutzerdefiniertes Bild 'kein Bild' verwenden?" + "custom_img": "Benutzerdefiniertes Bild 'kein Bild' verwenden?", + "generate_grid": "Erstellen Sie ein Bildraster für LLM-Vision-Modelle" }, "description": "Beenden Sie die Konfiguration, indem Sie Folgendes basierend auf Ihrer E-Mail-Struktur und der Installation von Home Assistant anpassen. \n\n Weitere Informationen zu den Optionen [Mail- und Paketintegration] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) finden Sie in den [Konfiguration, Vorlagen und Abschnitt Automatisierungen] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) auf GitHub.", "title": "Briefe und Pakete (Schritt 2 von 2)" @@ -81,7 +82,8 @@ "resources": "Sensoren Liste", "imap_timeout": "Zeit in Sekunden bis zum Timeout der Verbindung (Sekunden, mindestens 10)", "allow_external": "Bild für Benachrichtigungs-Apps erstellen", - "custom_img": "Benutzerdefiniertes Bild 'kein Bild' verwenden?" + "custom_img": "Benutzerdefiniertes Bild 'kein Bild' verwenden?", + "generate_grid": "Erstellen Sie ein Bildraster für LLM-Vision-Modelle" }, "description": "Schließen Sie die Konfiguration ab, indem Sie das Folgende an Ihre E-Mail-Struktur und Home Assistant-Installation anpassen.\n\nWeitere Informationen zu den [Mail und Packages Integration](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) Optionen finden Sie im [Konfigurations-, Vorlagen- und Automatisierungsabschnitt](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) auf GitHub.\n\nWenn Sie weitergeleitete E-Mails von Amazon verwenden, trennen Sie bitte jede Adresse durch ein Komma oder geben Sie (keine) ein, um diese Einstellung zu löschen.", "title": "Briefe und Pakete (Schritt 2 von 2)" diff --git a/custom_components/mail_and_packages/translations/en.json b/custom_components/mail_and_packages/translations/en.json index fcf3015b..d65ec181 100644 --- a/custom_components/mail_and_packages/translations/en.json +++ b/custom_components/mail_and_packages/translations/en.json @@ -37,7 +37,8 @@ "imap_timeout": "Time in seconds before connection timeout (seconds, minimum 10)", "generate_mp4": "Create mp4 from images", "allow_external": "Create image for notification apps", - "custom_img": "Use custom 'no image' image?" + "custom_img": "Use custom 'no image' image?", + "generate_grid": "Create image grid for LLM vision models" }, "description": "Finish the configuration by customizing the following based on your email structure and Home Assistant installation.\n\nFor details on the [Mail and Packages integration](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) options review the [configuration, templates, and automations section](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) on GitHub.\n\nIf using Amazon forwarded emails please separate each address with a comma.", "title": "Mail and Packages (Step 2 of 2)" @@ -81,7 +82,8 @@ "resources": "Sensors List", "imap_timeout": "Time in seconds before connection timeout (seconds, minimum 10)", "allow_external": "Create image for notification apps", - "custom_img": "Use custom 'no image' image?" + "custom_img": "Use custom 'no image' image?", + "generate_grid": "Create image grid for LLM vision models" }, "description": "Finish the configuration by customizing the following based on your email structure and Home Assistant installation.\n\nFor details on the [Mail and Packages integration](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) options review the [configuration, templates, and automations section](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) on GitHub.\n\nIf using Amazon forwarded emails please separate each address with a comma or enter (none) to clear this setting.", "title": "Mail and Packages (Step 2 of 2)" diff --git a/custom_components/mail_and_packages/translations/es.json b/custom_components/mail_and_packages/translations/es.json index 1bb6a75a..47fcd28a 100644 --- a/custom_components/mail_and_packages/translations/es.json +++ b/custom_components/mail_and_packages/translations/es.json @@ -37,7 +37,8 @@ "imap_timeout": "Tiempo en segundos antes del tiempo de espera de la conexión (segundos, mínimo 10)", "generate_mp4": "Crea mp4 a partir de imágenes", "allow_external": "Crea imagen para aplicaciones de notificación", - "custom_img": "¿Usar imagen personalizada para 'sin imagen'?" + "custom_img": "¿Usar imagen personalizada para 'sin imagen'?", + "generate_grid": "Crear cuadrícula de imágenes para modelos de visión LLM" }, "description": "Termine la configuración personalizando lo siguiente según su estructura de correo electrónico y la instalación de Home Assistant. \n\n Para obtener detalles sobre las opciones [Integración de correo y paquetes] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) revise las [configuración, plantillas , y la sección de automatizaciones] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) en GitHub.", "title": "Correo y paquetes (Paso 2 de 2)" @@ -81,7 +82,8 @@ "resources": "Lista de Sensores", "imap_timeout": "Tiempo en segundos antes del tiempo de espera de la conexión (segundos, mínimo 10)", "allow_external": "Crea imagen para aplicaciones de notificación", - "custom_img": "¿Usar imagen personalizada para 'sin imagen'?" + "custom_img": "¿Usar imagen personalizada para 'sin imagen'?", + "generate_grid": "Crear cuadrícula de imágenes para modelos de visión LLM" }, "description": "Finalice la configuración personalizando lo siguiente en función de la estructura de su correo electrónico y la instalación de Home Assistant.\n\nPara obtener detalles sobre las opciones de [integración de correo y paquetes](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), revise la [sección de configuración, plantillas y automatizaciones](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) en GitHub.\n\nSi utiliza correos electrónicos reenviados de Amazon, separe cada dirección con una coma o ingrese (ninguno) para borrar esta configuración.", "title": "Correo y paquetes (Paso 2 de 2)" diff --git a/custom_components/mail_and_packages/translations/es_419.json b/custom_components/mail_and_packages/translations/es_419.json index 4a85988d..f5d8e041 100644 --- a/custom_components/mail_and_packages/translations/es_419.json +++ b/custom_components/mail_and_packages/translations/es_419.json @@ -37,7 +37,8 @@ "imap_timeout": "Tiempo en segundos antes del tiempo de espera de la conexión (segundos, mínimo 10)", "generate_mp4": "Crea mp4 a partir de imágenes", "allow_external": "Crea imagen para aplicaciones de notificación", - "custom_img": "¿Usar imagen personalizada para 'sin imagen'?" + "custom_img": "¿Usar imagen personalizada para 'sin imagen'?", + "generate_grid": "Crear cuadrícula de imágenes para modelos de visión LLM" }, "description": "Termine la configuración personalizando lo siguiente según su estructura de correo electrónico y la instalación de Home Assistant. \n\n Para obtener detalles sobre las opciones [Integración de correo y paquetes] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) revise las [configuración, plantillas , y la sección de automatizaciones] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) en GitHub.", "title": "Correo y paquetes (Paso 2 de 2)" @@ -81,7 +82,8 @@ "resources": "Lista de Sensores", "imap_timeout": "Tiempo en segundos antes del tiempo de espera de la conexión (segundos, mínimo 10)", "allow_external": "Crea imagen para aplicaciones de notificación", - "custom_img": "¿Usar imagen personalizada para 'sin imagen'?" + "custom_img": "¿Usar imagen personalizada para 'sin imagen'?", + "generate_grid": "Crear cuadrícula de imágenes para modelos de visión LLM" }, "description": "Finalice la configuración personalizando lo siguiente en función de la estructura de su correo electrónico y la instalación de Home Assistant.\n\nPara obtener detalles sobre las opciones de [integración de correo y paquetes](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), revise la [sección de configuración, plantillas y automatizaciones](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) en GitHub.\n\nSi utiliza correos electrónicos reenviados de Amazon, separe cada dirección con una coma o ingrese (ninguno) para borrar esta configuración.", "title": "Correo y paquetes (Paso 2 de 2)" diff --git a/custom_components/mail_and_packages/translations/fi.json b/custom_components/mail_and_packages/translations/fi.json index 42117186..6b4ceeef 100644 --- a/custom_components/mail_and_packages/translations/fi.json +++ b/custom_components/mail_and_packages/translations/fi.json @@ -37,7 +37,8 @@ "imap_timeout": "Aika sekunneissa ennen yhteyden aikakatkaisua (sekuntia, vähintään 10)", "generate_mp4": "Luo mp4 kuvista", "allow_external": "Luo kuva ilmoitussovelluksille", - "custom_img": "Käytä mukautettua 'ei kuvaa' kuvaa?" + "custom_img": "Käytä mukautettua 'ei kuvaa' kuvaa?", + "generate_grid": "Luo kuvaverkko LLM-näkömalleille" }, "description": "Viimeistele kokoonpano mukauttamalla seuraava sähköpostirakenteen ja Home Assistant -asennuksen perusteella. \n\n Lisätietoja [Posti ja paketit-integroinnista] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) -asetuksista on [kokoonpano, mallit , ja automaatiot-osio] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) GitHubissa.", "title": "Posti ja paketit (vaihe 2\/2)" @@ -81,7 +82,8 @@ "resources": "Anturiluettelo", "imap_timeout": "Aika sekunneissa ennen yhteyden aikakatkaisua (sekuntia, vähintään 10)", "allow_external": "Luo kuva ilmoitussovelluksille", - "custom_img": "Käytä mukautettua 'ei kuvaa' kuvaa?" + "custom_img": "Käytä mukautettua 'ei kuvaa' kuvaa?", + "generate_grid": "Luo kuvaverkko LLM-näkömalleille" }, "description": "Suorita määritys loppuun mukauttamalla seuraavat sähköpostirakenteeseesi ja Home Assistant -asennukseesi perustuen.\n\nLisätietoja [Mail and Packages -integraation](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) vaihtoehdoista löydät GitHubista [määritys-, mallit- ja automaatiot-osiossa](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration).\n\nJos käytät Amazonin välittämiä sähköposteja, erottele jokainen osoite pilkulla tai syötä (none) tyhjentääksesi tämän asetuksen.", "title": "Posti ja paketit (vaihe 2\/2)" diff --git a/custom_components/mail_and_packages/translations/fr.json b/custom_components/mail_and_packages/translations/fr.json index 4244a473..e141618e 100644 --- a/custom_components/mail_and_packages/translations/fr.json +++ b/custom_components/mail_and_packages/translations/fr.json @@ -37,7 +37,8 @@ "imap_timeout": "Temps en secondes avant la fin de la connexion (secondes, minimum 10)", "generate_mp4": "Créer mp4 à partir d'images", "allow_external": "Créer une image pour les applications de notification", - "custom_img": "Utiliser une image personnalisée 'pas d'image' ?" + "custom_img": "Utiliser une image personnalisée 'pas d'image' ?", + "generate_grid": "Créer une grille d'images pour les modèles de vision LLM" }, "description": "Terminez la configuration en personnalisant les éléments suivants en fonction de votre structure de messagerie et de l'installation de Home Assistant. \n\n Pour plus de détails sur les [Intégration de messagerie et de packages] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), passez en revue les [configuration, modèles et section automatisations] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) sur GitHub.", "title": "Courrier et colis (étape 2 sur 2)" @@ -81,7 +82,8 @@ "resources": "Liste des capteurs", "imap_timeout": "Temps en secondes avant la fin de la connexion (secondes, minimum 10)", "allow_external": "Créer une image pour les applications de notification", - "custom_img": "Utiliser une image personnalisée 'pas d'image' ?" + "custom_img": "Utiliser une image personnalisée 'pas d'image' ?", + "generate_grid": "Créer une grille d'images pour les modèles de vision LLM" }, "description": "Terminez la configuration en personnalisant ce qui suit en fonction de la structure de votre courrier électronique et de l'installation de Home Assistant.\n\nPour plus de détails sur les options d'[intégration de courrier et de colis](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), consultez la [section configuration, modèles et automatisations](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) sur GitHub.\n\nSi vous utilisez des courriels transférés par Amazon, veuillez séparer chaque adresse par une virgule ou entrer (aucun) pour effacer ce paramètre.", "title": "Courrier et colis (étape 2 sur 2)" diff --git a/custom_components/mail_and_packages/translations/hu.json b/custom_components/mail_and_packages/translations/hu.json index 035c0fb1..85c4552d 100644 --- a/custom_components/mail_and_packages/translations/hu.json +++ b/custom_components/mail_and_packages/translations/hu.json @@ -37,7 +37,8 @@ "imap_timeout": "A kapcsolat időtúllépése előtti idő másodpercben (másodperc, minimum 10)", "generate_mp4": "Készítsen mp4-et a képekből", "allow_external": "Kép létrehozása értesítési alkalmazásokhoz", - "custom_img": "Használjon egyéni 'nincs kép' képet?" + "custom_img": "Használjon egyéni 'nincs kép' képet?", + "generate_grid": "Kép rács létrehozása LLM látásmodellekhez" }, "description": "Végezze el a konfigurációt az alábbiak testreszabásával az e-mail struktúrája és a Home Assistant telepítése alapján. \n\n A [Levelek és csomagok integrációja] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) opciókkal kapcsolatban tekintse meg a [konfiguráció, sablonok , és az automatizálás szakasz] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) a GitHubon.", "title": "Levél és csomagok (2. lépés a 2-ből)" @@ -81,7 +82,8 @@ "resources": "Érzékelők listája", "imap_timeout": "A kapcsolat időtúllépése előtti idő másodpercben (másodperc, minimum 10)", "allow_external": "Kép létrehozása értesítési alkalmazásokhoz", - "custom_img": "Használjon egyéni 'nincs kép' képet?" + "custom_img": "Használjon egyéni 'nincs kép' képet?", + "generate_grid": "Kép rács létrehozása LLM látásmodellekhez" }, "description": "Fejezze be a konfigurációt a következők testreszabásával az e-mail struktúrája és a Home Assistant telepítése alapján.\n\nA [Mail and Packages integráció](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) lehetőségeinek részleteiről a GitHub-on található [konfiguráció, sablonok és automatizálások szekcióban](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) található információkat.\n\nHa Amazon továbbított e-maileket használ, kérjük, válassza el minden címet vesszővel, vagy írja be a (none) opciót, hogy törölje ezt a beállítást.", "title": "Levél és csomagok (2. lépés a 2-ből)" diff --git a/custom_components/mail_and_packages/translations/it.json b/custom_components/mail_and_packages/translations/it.json index ea087d44..3abbd879 100644 --- a/custom_components/mail_and_packages/translations/it.json +++ b/custom_components/mail_and_packages/translations/it.json @@ -37,7 +37,8 @@ "imap_timeout": "Tempo in secondi prima del timeout di connessione (secondi, minimo 10)", "generate_mp4": "Crea mp4 dalle immagini", "allow_external": "Crea immagine per le app di notifica", - "custom_img": "Usare l'immagine personalizzata 'nessuna immagine'?" + "custom_img": "Usare l'immagine personalizzata 'nessuna immagine'?", + "generate_grid": "Crea una griglia di immagini per i modelli di visione LLM" }, "description": "Termina la configurazione personalizzando quanto segue in base alla struttura della tua e-mail e all'installazione di Home Assistant. \n\n Per i dettagli sulle opzioni [Integrazione posta e pacchetti] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) rivedere le [configurazione, modelli e sezione automazioni] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) su GitHub.", "title": "Posta e pacchi (passaggio 2 di 2)" @@ -81,7 +82,8 @@ "resources": "Elenco dei sensori", "imap_timeout": "Tempo in secondi prima del timeout di connessione (secondi, minimo 10)", "allow_external": "Crea immagine per le app di notifica", - "custom_img": "Usare l'immagine personalizzata 'nessuna immagine'?" + "custom_img": "Usare l'immagine personalizzata 'nessuna immagine'?", + "generate_grid": "Crea una griglia di immagini per i modelli di visione LLM" }, "description": "Termina la configurazione personalizzando quanto segue in base alla struttura della tua email e all'installazione di Home Assistant.\n\nPer i dettagli sulle opzioni di [integrazione Mail e Pacchetti](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) consulta la [sezione configurazione, modelli e automazioni](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) su GitHub.\n\nSe utilizzi email inoltrate da Amazon, separa ogni indirizzo con una virgola o inserisci (nessuno) per cancellare questa impostazione.", "title": "Posta e pacchi (passaggio 2 di 2)" diff --git a/custom_components/mail_and_packages/translations/ko.json b/custom_components/mail_and_packages/translations/ko.json index 525c07fb..c1b60ed4 100644 --- a/custom_components/mail_and_packages/translations/ko.json +++ b/custom_components/mail_and_packages/translations/ko.json @@ -37,7 +37,8 @@ "imap_timeout": "연결 시간 초과 전 시간(초, 최소 10)", "generate_mp4": "이미지에서 mp4 만들기", "allow_external": "알림 앱용 이미지 생성", - "custom_img": "사용자 정의 '이미지 없음' 이미지를 사용하시겠습니까?" + "custom_img": "사용자 정의 '이미지 없음' 이미지를 사용하시겠습니까?", + "generate_grid": "LLM 비전 모델을 위한 이미지 그리드 생성" }, "description": "이메일 구조 및 Home Assistant 설치에 따라 다음을 사용자 정의하여 구성을 완료하십시오. \n\n [메일 및 패키지 통합] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) 옵션에 대한 자세한 내용은 [구성, 템플릿 및 자동화 섹션] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-and-Packages\/wiki\/Configuration-and-Email-Settings#configuration)", "title": "메일 및 패키지 (2\/2 단계)" @@ -81,7 +82,8 @@ "resources": "센서 목록", "imap_timeout": "연결 시간 초과 전 시간(초, 최소 10)", "allow_external": "알림 앱용 이미지 생성", - "custom_img": "사용자 정의 '이미지 없음' 이미지를 사용하시겠습니까?" + "custom_img": "사용자 정의 '이미지 없음' 이미지를 사용하시겠습니까?", + "generate_grid": "LLM 비전 모델을 위한 이미지 그리드 생성" }, "description": "이메일 구조와 Home Assistant 설치에 따라 다음을 사용자 정의하여 구성을 완료하십시오.\n\n[Mail and Packages 통합](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) 옵션에 대한 자세한 내용은 GitHub의 [구성, 템플릿, 자동화 섹션](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration)을 참조하십시오.\n\nAmazon에서 전달된 이메일을 사용하는 경우 각 주소를 쉼표로 구분하거나 이 설정을 지우려면 (none)을 입력하십시오.", "title": "메일 및 패키지 (2\/2 단계)" diff --git a/custom_components/mail_and_packages/translations/nl.json b/custom_components/mail_and_packages/translations/nl.json index 50c4f0ff..2b8ec4b3 100644 --- a/custom_components/mail_and_packages/translations/nl.json +++ b/custom_components/mail_and_packages/translations/nl.json @@ -37,7 +37,8 @@ "imap_timeout": "Tijd in seconden voordat de verbinding verloopt (seconden, minimaal 10)", "generate_mp4": "Maak mp4 van afbeeldingen", "allow_external": "Maak afbeelding voor meldingsapps", - "custom_img": "Gebruik aangepaste 'geen afbeelding' afbeelding?" + "custom_img": "Gebruik aangepaste 'geen afbeelding' afbeelding?", + "generate_grid": "Maak een afbeeldingsraster voor LLM-visiemodellen" }, "description": "Voltooi de configuratie door het volgende aan te passen op basis van uw e-mailstructuur en Home Assistant-installatie. \n\n Voor meer informatie over de [E-mail en pakketten integratie] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) opties bekijk de [configuratie, sjablonen , en automatisering sectie] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) op GitHub.", "title": "Mail en pakketten (stap 2 van 2)" @@ -81,7 +82,8 @@ "resources": "Lijst van sensoren", "imap_timeout": "Tijd in seconden voordat de verbinding verloopt (seconden, minimaal 10)", "allow_external": "Maak afbeelding voor meldingsapps", - "custom_img": "Gebruik aangepaste 'geen afbeelding' afbeelding?" + "custom_img": "Gebruik aangepaste 'geen afbeelding' afbeelding?", + "generate_grid": "Maak een afbeeldingsraster voor LLM-visiemodellen" }, "description": "Rond de configuratie af door het volgende aan te passen op basis van uw e-mailstructuur en Home Assistant-installatie.\n\nVoor details over de [Mail en Packages integratie](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) opties, bekijk de [configuratie, sjablonen en automatiseringen sectie](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) op GitHub.\n\nAls u doorgestuurde e-mails van Amazon gebruikt, scheid dan elk adres met een komma of voer (geen) in om deze instelling te wissen.", "title": "Mail en pakketten (stap 2 van 2)" diff --git a/custom_components/mail_and_packages/translations/no.json b/custom_components/mail_and_packages/translations/no.json index 8f1958a1..d9745ca1 100644 --- a/custom_components/mail_and_packages/translations/no.json +++ b/custom_components/mail_and_packages/translations/no.json @@ -37,7 +37,8 @@ "imap_timeout": "Tid i sekunder før tilkoblingen tidsavbrudd (sekunder, minimum 10)", "generate_mp4": "Lag mp4 fra bilder", "allow_external": "Lag bilde for varslingsapper", - "custom_img": "Bruk tilpasset 'ingen bilde' bilde?" + "custom_img": "Bruk tilpasset 'ingen bilde' bilde?", + "generate_grid": "Opprett bildegitter for LLM-visjonsmodeller" }, "description": "Fullfør konfigurasjonen ved å tilpasse følgende basert på e-poststrukturen og Home Assistant-installasjonen. \n\n For detaljer om alternativene [Mail and Packages] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), les gjennom [konfigurasjon, maler , og automatiseringsdel] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) på GitHub.", "title": "E-post og pakker (trinn 2 av 2)" @@ -81,7 +82,8 @@ "resources": "Sensorliste", "imap_timeout": "Tid i sekunder før tilkoblingen tidsavbrudd (sekunder, minimum 10)", "allow_external": "Lag bilde for varslingsapper", - "custom_img": "Bruk tilpasset 'ingen bilde' bilde?" + "custom_img": "Bruk tilpasset 'ingen bilde' bilde?", + "generate_grid": "Opprett bildegitter for LLM-visjonsmodeller" }, "description": "Fullfør konfigurasjonen ved å tilpasse følgende basert på din e-poststruktur og Home Assistant-installasjon.\n\nFor detaljer om [Mail and Packages-integrasjonen](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) alternativene, se gjennom [konfigurasjon, maler og automatiseringsseksjonen](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) på GitHub.\n\nHvis du bruker Amazon videresendte e-poster, vennligst skill hver adresse med et komma eller skriv inn (ingen) for å tømme denne innstillingen.", "title": "E-post og pakker (trinn 2 av 2)" diff --git a/custom_components/mail_and_packages/translations/pl.json b/custom_components/mail_and_packages/translations/pl.json index 69b0c345..1d7010ea 100644 --- a/custom_components/mail_and_packages/translations/pl.json +++ b/custom_components/mail_and_packages/translations/pl.json @@ -37,7 +37,8 @@ "imap_timeout": "Czas w sekundach przed wygaśnięciem połączenia (sekundy, minimum 10)", "generate_mp4": "Utwórz mp4 z obrazów", "allow_external": "Utwórz obraz dla aplikacji powiadomień", - "custom_img": "Użyć niestandardowego obrazu 'brak obrazu'?" + "custom_img": "Użyć niestandardowego obrazu 'brak obrazu'?", + "generate_grid": "Utwórz siatkę obrazów dla modeli wizji LLM" }, "description": "Zakończ konfigurację, dostosowując następujące elementy w oparciu o strukturę poczty e-mail i instalację Home Assistant. \n\n Aby uzyskać szczegółowe informacje na temat opcji [Integracja poczty i pakietów] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) sprawdź opcje [konfiguracja, szablony i sekcja automatyzacji] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) na GitHub.", "title": "Poczta i paczki (krok 2 z 2)" @@ -81,7 +82,8 @@ "resources": "Lista czujników", "imap_timeout": "Czas w sekundach przed wygaśnięciem połączenia (sekundy, minimum 10)", "allow_external": "Utwórz obraz dla aplikacji powiadomień", - "custom_img": "Użyć niestandardowego obrazu 'brak obrazu'?" + "custom_img": "Użyć niestandardowego obrazu 'brak obrazu'?", + "generate_grid": "Utwórz siatkę obrazów dla modeli wizji LLM" }, "description": "Zakończ konfigurację, dostosowując następujące elementy do struktury swojego e-maila i instalacji Home Assistant.\n\nAby uzyskać szczegółowe informacje na temat opcji [integracji Mail and Packages](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), zapoznaj się z [sekcją konfiguracji, szablonów i automatyzacji](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) na GitHubie.\n\nJeśli korzystasz z przekierowanych e-maili Amazon, oddziel każdy adres przecinkiem lub wprowadź (brak), aby wyczyścić to ustawienie.", "title": "Poczta i paczki (krok 2 z 2)" diff --git a/custom_components/mail_and_packages/translations/pt.json b/custom_components/mail_and_packages/translations/pt.json index 8b9ddc70..bf1eea52 100644 --- a/custom_components/mail_and_packages/translations/pt.json +++ b/custom_components/mail_and_packages/translations/pt.json @@ -37,7 +37,8 @@ "imap_timeout": "Tempo em segundos antes do tempo limite de conexão (segundos, mínimo 10)", "generate_mp4": "Crie mp4 a partir de imagens", "allow_external": "Crie imagem para aplicativos de notificação", - "custom_img": "Usar imagem personalizada 'sem imagem'?" + "custom_img": "Usar imagem personalizada 'sem imagem'?", + "generate_grid": "Criar grade de imagens para modelos de visão LLM" }, "description": "Conclua a configuração, personalizando o seguinte com base na sua estrutura de email e instalação do Home Assistant. \n\n Para obter detalhes sobre as opções [integração de Mail e Pacotes] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), revise as opções de [configuração, modelos e seção de automações] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) no GitHub.", "title": "Correio e pacotes (Etapa 2 de 2)" @@ -81,7 +82,8 @@ "resources": "Lista de Sensores", "imap_timeout": "Tempo em segundos antes do tempo limite de conexão (segundos, mínimo 10)", "allow_external": "Crie imagem para aplicativos de notificação", - "custom_img": "Usar imagem personalizada 'sem imagem'?" + "custom_img": "Usar imagem personalizada 'sem imagem'?", + "generate_grid": "Criar grade de imagens para modelos de visão LLM" }, "description": "Conclua a configuração personalizando o seguinte com base na estrutura do seu email e na instalação do Home Assistant.\n\nPara detalhes sobre as opções de [integração de Correio e Pacotes](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), consulte a [seção de configuração, modelos e automações](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) no GitHub.\n\nSe estiver usando emails encaminhados da Amazon, separe cada endereço com uma vírgula ou insira (nenhum) para limpar essa configuração.", "title": "Correio e pacotes (Etapa 2 de 2)" diff --git a/custom_components/mail_and_packages/translations/pt_BR.json b/custom_components/mail_and_packages/translations/pt_BR.json index 3255aab2..a54fb758 100644 --- a/custom_components/mail_and_packages/translations/pt_BR.json +++ b/custom_components/mail_and_packages/translations/pt_BR.json @@ -37,7 +37,8 @@ "imap_timeout": "Tempo em segundos antes do tempo limite de conexão (segundos, mínimo 10)", "generate_mp4": "Crie mp4 a partir de imagens", "allow_external": "Crie imagem para aplicativos de notificação", - "custom_img": "Usar imagem personalizada para 'sem imagem'?" + "custom_img": "Usar imagem personalizada para 'sem imagem'?", + "generate_grid": "Criar grade de imagens para modelos de visão LLM" }, "description": "Conclua a configuração, personalizando o seguinte com base na sua estrutura de email e instalação do Home Assistant. \n\n Para obter detalhes sobre as opções [integração de Mail e Pacotes] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), revise as opções de [configuração, modelos e seção de automações] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) no GitHub.", "title": "Correio e pacotes (Etapa 2 de 2)" @@ -81,7 +82,8 @@ "resources": "Lista de Sensores", "imap_timeout": "Tempo em segundos antes do tempo limite de conexão (segundos, mínimo 10)", "allow_external": "Crie imagem para aplicativos de notificação", - "custom_img": "Usar imagem personalizada para 'sem imagem'?" + "custom_img": "Usar imagem personalizada para 'sem imagem'?", + "generate_grid": "Criar grade de imagens para modelos de visão LLM" }, "description": "Conclua a configuração personalizando o seguinte com base na estrutura do seu email e na instalação do Home Assistant.\n\nPara detalhes sobre as opções de [integração de Mail e Pacotes](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration), consulte a [seção de configuração, modelos e automações](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) no GitHub.\n\nSe estiver usando emails encaminhados da Amazon, separe cada endereço com uma vírgula ou insira (nenhum) para limpar essa configuração.", "title": "Correio e pacotes (Etapa 2 de 2)" diff --git a/custom_components/mail_and_packages/translations/ru.json b/custom_components/mail_and_packages/translations/ru.json index 53a8ddd3..82a7ab35 100644 --- a/custom_components/mail_and_packages/translations/ru.json +++ b/custom_components/mail_and_packages/translations/ru.json @@ -37,7 +37,8 @@ "imap_timeout": "Время в секундах до тайм-аута соединения (секунды, минимум 10)", "generate_mp4": "Создать mp4 из изображений", "allow_external": "Создать изображение для приложений уведомлений", - "custom_img": "Использовать пользовательское изображение 'нет изображения'?" + "custom_img": "Использовать пользовательское изображение 'нет изображения'?", + "generate_grid": "Создать сетку изображений для моделей зрения LLM" }, "description": "Завершите настройку, настроив следующие параметры в зависимости от структуры электронной почты и установки Home Assistant. \n\n Подробнее о параметрах [Интеграция с почтой и пакетами] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) см. В разделе [конфигурация, шаблоны и раздел автоматизации] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) на GitHub.", "title": "Почта и пакеты (шаг 2 из 2)" @@ -81,7 +82,8 @@ "resources": "Список датчиков", "imap_timeout": "Время в секундах до тайм-аута соединения (секунды, минимум 10)", "allow_external": "Создать изображение для приложений уведомлений", - "custom_img": "Использовать пользовательское изображение 'нет изображения'?" + "custom_img": "Использовать пользовательское изображение 'нет изображения'?", + "generate_grid": "Создать сетку изображений для моделей зрения LLM" }, "description": "Завершите настройку, настроив следующее в соответствии со структурой вашей электронной почты и установкой Home Assistant.\n\nДля получения подробной информации о вариантах [интеграции Почта и Пакеты](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) ознакомьтесь с [разделом конфигурации, шаблонов и автоматизации](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) на GitHub.\n\nЕсли вы используете переадресованные электронные письма Amazon, разделите каждый адрес запятой или введите (none), чтобы очистить эту настройку.", "title": "Почта и пакеты (шаг 2 из 2)" diff --git a/custom_components/mail_and_packages/translations/sk.json b/custom_components/mail_and_packages/translations/sk.json index 6f768ca9..2dc060c1 100644 --- a/custom_components/mail_and_packages/translations/sk.json +++ b/custom_components/mail_and_packages/translations/sk.json @@ -37,7 +37,8 @@ "imap_timeout": "Čas v sekundách pred časovým limitom pripojenia (sekundy, minimálne 10)", "generate_mp4": "Vytvorte mp4 z obrázkov", "allow_external": "Vytvorte obrázok pre aplikácie upozornení", - "custom_img": "Použiť vlastný obrázok 'bez obrázka'?" + "custom_img": "Použiť vlastný obrázok 'bez obrázka'?", + "generate_grid": "Vytvoriť mriežku obrázkov pre modely videnia LLM" }, "description": "Dokončite konfiguráciu prispôsobením nasledujúcich položiek na základe štruktúry e-mailu a inštalácie Home Assistant.\n\nPodrobnosti nájdete na [Pošta a balíky integrácia](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) možnosti si pozrite v časti [konfigurácia, šablóny a automatizácie](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) na GitHube.", "title": "Pošta a balíky (krok 2 z 2)" @@ -81,7 +82,8 @@ "resources": "Zoznam senzorov", "imap_timeout": "Čas v sekundách pred časovým limitom pripojenia (sekundy, minimálne 10)", "allow_external": "Vytvorte obrázok pre aplikácie upozornení", - "custom_img": "Použiť vlastný obrázok 'bez obrázka'?" + "custom_img": "Použiť vlastný obrázok 'bez obrázka'?", + "generate_grid": "Vytvoriť mriežku obrázkov pre modely videnia LLM" }, "description": "Dokončite konfiguráciu prispôsobením nasledujúceho na základe štruktúry vášho e-mailu a inštalácie Home Assistant.\n\nPre podrobnosti o možnostiach [integrácie Mail a Packages](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) si prečítajte [sekciu o konfigurácii, šablónach a automatizáciách](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) na GitHub.\n\nAk používate preposlané e-maily od Amazonu, oddelte každú adresu čiarkou alebo zadajte (none) na vymazanie tohto nastavenia.", "title": "Pošta a balíky (krok 2 z 2)" diff --git a/custom_components/mail_and_packages/translations/sl.json b/custom_components/mail_and_packages/translations/sl.json index 37dfc9ef..1859638d 100644 --- a/custom_components/mail_and_packages/translations/sl.json +++ b/custom_components/mail_and_packages/translations/sl.json @@ -37,7 +37,8 @@ "imap_timeout": "Čas v sekundah pred prekinitvijo povezave (sekunde, najmanj 10)", "generate_mp4": "Ustvari mp4 iz slik", "allow_external": "Ustvari sliko za aplikacije za obvestila", - "custom_img": "Uporabite prilagojeno sliko 'brez slike'?" + "custom_img": "Uporabite prilagojeno sliko 'brez slike'?", + "generate_grid": "Ustvari mrežo slik za vizualne modele LLM" }, "description": "Končajte konfiguracijo s prilagoditvijo naslednjih na podlagi strukture e-pošte in namestitve Home Assistant. \n\n Za podrobnosti o možnostih [Integracija pošte in paketov] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) preglejte [konfiguracijo, predloge in oddelku za avtomatizacije] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) na GitHubu.", "title": "Pošta in paketi (2. korak od 2)" @@ -81,7 +82,8 @@ "resources": "Seznam senzorjev", "imap_timeout": "Čas v sekundah pred prekinitvijo povezave (sekunde, najmanj 10)", "allow_external": "Ustvari sliko za aplikacije za obvestila", - "custom_img": "Uporabite prilagojeno sliko 'brez slike'?" + "custom_img": "Uporabite prilagojeno sliko 'brez slike'?", + "generate_grid": "Ustvari mrežo slik za vizualne modele LLM" }, "description": "Konfiguracijo dokončajte z prilagajanjem naslednjega glede na strukturo vašega e-poštnega sporočila in namestitev Home Assistant.\n\nZa podrobnosti o možnostih [integracije Mail and Packages](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) si oglejte [razdelek o konfiguraciji, predlogah in avtomatizacijah](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) na GitHubu.\n\nČe uporabljate preusmerjena e-poštna sporočila Amazon, ločite vsak naslov z vejico ali vnesite (noben) za izbris te nastavitve.", "title": "Pošta in paketi (2. korak od 2)" diff --git a/custom_components/mail_and_packages/translations/sv.json b/custom_components/mail_and_packages/translations/sv.json index 7ae0537a..1a798af3 100644 --- a/custom_components/mail_and_packages/translations/sv.json +++ b/custom_components/mail_and_packages/translations/sv.json @@ -37,7 +37,8 @@ "imap_timeout": "Tid i sekunder innan anslutningen kopplas från (sekunder, minst 10)", "generate_mp4": "Skapa mp4 från bilder", "allow_external": "Skapa bild för notifikationsappar", - "custom_img": "Använd anpassad 'ingen bild' bild?" + "custom_img": "Använd anpassad 'ingen bild' bild?", + "generate_grid": "Skapa bildrutnät för LLM-visionsmodeller" }, "description": "Avsluta konfigurationen genom att anpassa följande baserat på din e-poststruktur och installation av hemassistent. \n\n Mer information om alternativen [Mail and Packages] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) läser [konfiguration, mallar , och automatiseringsavsnitt] (https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) på GitHub.", "title": "Mail och paket (steg 2 av 2)" @@ -81,7 +82,8 @@ "resources": "Sensorlista", "imap_timeout": "Tid i sekunder innan anslutningen kopplas från (sekunder, minst 10)", "allow_external": "Skapa bild för notifikationsappar", - "custom_img": "Använd anpassad 'ingen bild' bild?" + "custom_img": "Använd anpassad 'ingen bild' bild?", + "generate_grid": "Skapa bildrutnät för LLM-visionsmodeller" }, "description": "Slutför konfigurationen genom att anpassa följande baserat på din e-poststruktur och Home Assistant-installation.\n\nFör detaljer om [Mail and Packages integration](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) alternativen granska [konfiguration, mallar och automatiseringssektionen](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration) på GitHub.\n\nOm du använder vidarebefordrade e-postmeddelanden från Amazon, separera varje adress med ett kommatecken eller ange (ingen) för att rensa denna inställning.", "title": "Mail och paket (steg 2 av 2)" diff --git a/custom_components/mail_and_packages/translations/zh_Hant_HK.json b/custom_components/mail_and_packages/translations/zh_Hant_HK.json index c7edce08..dc65b1ce 100644 --- a/custom_components/mail_and_packages/translations/zh_Hant_HK.json +++ b/custom_components/mail_and_packages/translations/zh_Hant_HK.json @@ -37,7 +37,8 @@ "imap_timeout": "連接超時前的時間(秒,最少10秒)", "generate_mp4": "從圖像創建mp4", "allow_external": "為通知應用程式創建圖像", - "custom_img": "使用自訂的「無圖片」圖像?" + "custom_img": "使用自訂的「無圖片」圖像?", + "generate_grid": "為LLM視覺模型創建圖像網格" }, "description": "通過根據您的電子郵件結構和Home Assistant安裝自定義以下內容來完成配置。 \n\n有關[郵件和軟件包集成](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration)選項的詳細信息,請查看[配置,模板和自動化部分](GitHub上的https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration)。", "title": "郵件和包裹(第2步,共2步)" @@ -81,7 +82,8 @@ "resources": "感應器列表", "imap_timeout": "連接超時前的時間(秒,最少10秒)", "allow_external": "為通知應用程式創建圖像", - "custom_img": "使用自訂的「無圖片」圖像?" + "custom_img": "使用自訂的「無圖片」圖像?", + "generate_grid": "為LLM視覺模型創建圖像網格" }, "description": "根據您的電郵結構和Home Assistant安裝來完成配置。\n\n有關[郵件和包裹整合](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration)選項的詳情,請查閱GitHub上的[配置、模板和自動化部分](https:\/\/github.com\/moralmunky\/Home-Assistant-Mail-And-Packages\/wiki\/Configuration-and-Email-Settings#configuration)。\n\n如果使用Amazon轉發的電郵,請用逗號分隔每個地址,或輸入(none)以清除此設定。", "title": "郵件和包裹(第2步,共2步)" diff --git a/tests/conftest.py b/tests/conftest.py index 379ecfd8..ae86431a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1211,6 +1211,14 @@ def mock_os_path_join(): yield mock_os_path_join +@pytest.fixture +def mock_os_path_join2(): + """Fixture to mock join.""" + with patch("os.path.join") as mock_os_path_join: + mock_os_path_join.return_value = "./testfile_grid.png" + yield mock_os_path_join + + @pytest.fixture def mock_os_path_split(): """Fixture to mock split.""" diff --git a/tests/test_binary_sensor.py b/tests/test_binary_sensor.py index dc1578c3..59fa6cab 100644 --- a/tests/test_binary_sensor.py +++ b/tests/test_binary_sensor.py @@ -26,10 +26,42 @@ async def test_binary_sensor_no_updates( assert "mail_and_packages" in hass.config.components + entity_entry = entity_registry.async_get("binary_sensor.usps_image_updated") + + assert entity_entry + assert entity_entry.disabled + assert entity_entry.disabled_by is er.RegistryEntryDisabler.INTEGRATION + + updated_entry = entity_registry.async_update_entity( + entity_entry.entity_id, disabled_by=None + ) + assert updated_entry != entity_entry + assert updated_entry.disabled is False + + await hass.config_entries.async_forward_entry_unload(entry, "binary_sensor") + await hass.config_entries.async_forward_entry_setups(entry, ["binary_sensor"]) + await hass.async_block_till_done() + state = hass.states.get("binary_sensor.usps_image_updated") assert state assert state.state == "off" + entity_entry = entity_registry.async_get("binary_sensor.amazon_image_updated") + + assert entity_entry + assert entity_entry.disabled + assert entity_entry.disabled_by is er.RegistryEntryDisabler.INTEGRATION + + updated_entry = entity_registry.async_update_entity( + entity_entry.entity_id, disabled_by=None + ) + assert updated_entry != entity_entry + assert updated_entry.disabled is False + + await hass.config_entries.async_forward_entry_unload(entry, "binary_sensor") + await hass.config_entries.async_forward_entry_setups(entry, ["binary_sensor"]) + await hass.async_block_till_done() + state = hass.states.get("binary_sensor.amazon_image_updated") assert state assert state.state == "off" @@ -73,10 +105,42 @@ async def test_binary_sensor_mail_delivered( assert "mail_and_packages" in hass.config.components + entity_entry = entity_registry.async_get("binary_sensor.usps_image_updated") + + assert entity_entry + assert entity_entry.disabled + assert entity_entry.disabled_by is er.RegistryEntryDisabler.INTEGRATION + + updated_entry = entity_registry.async_update_entity( + entity_entry.entity_id, disabled_by=None + ) + assert updated_entry != entity_entry + assert updated_entry.disabled is False + + await hass.config_entries.async_forward_entry_unload(entry, "binary_sensor") + await hass.config_entries.async_forward_entry_setups(entry, ["binary_sensor"]) + await hass.async_block_till_done() + state = hass.states.get("binary_sensor.usps_image_updated") assert state assert state.state == "off" + entity_entry = entity_registry.async_get("binary_sensor.amazon_image_updated") + + assert entity_entry + assert entity_entry.disabled + assert entity_entry.disabled_by is er.RegistryEntryDisabler.INTEGRATION + + updated_entry = entity_registry.async_update_entity( + entity_entry.entity_id, disabled_by=None + ) + assert updated_entry != entity_entry + assert updated_entry.disabled is False + + await hass.config_entries.async_forward_entry_unload(entry, "binary_sensor") + await hass.config_entries.async_forward_entry_setups(entry, ["binary_sensor"]) + await hass.async_block_till_done() + state = hass.states.get("binary_sensor.amazon_image_updated") assert state assert state.state == "off" diff --git a/tests/test_config_flow.py b/tests/test_config_flow.py index 2149e952..35ccc419 100644 --- a/tests/test_config_flow.py +++ b/tests/test_config_flow.py @@ -41,6 +41,7 @@ "allow_external": False, "custom_img": True, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -101,6 +102,7 @@ "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -231,6 +233,7 @@ async def test_form( "allow_external": False, "custom_img": True, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -291,6 +294,7 @@ async def test_form( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -420,6 +424,7 @@ async def test_form_no_fwds( "allow_external": False, "custom_img": True, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -476,6 +481,7 @@ async def test_form_no_fwds( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -637,6 +643,7 @@ async def test_form_connection_error(input_1, step_id_2, hass, mock_imap): { "allow_external": False, "folder": '"INBOX"', + "generate_grid": True, "generate_mp4": True, "gif_duration": 5, "imap_timeout": 30, @@ -686,6 +693,7 @@ async def test_form_connection_error(input_1, step_id_2, hass, mock_imap): "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -781,6 +789,7 @@ async def test_form_invalid_ffmpeg( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -836,6 +845,7 @@ async def test_form_invalid_ffmpeg( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -960,6 +970,7 @@ async def test_form_index_error( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -1015,6 +1026,7 @@ async def test_form_index_error( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -1137,6 +1149,7 @@ async def test_form_index_error_2( { "allow_external": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -1192,6 +1205,7 @@ async def test_form_index_error_2( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -1314,6 +1328,7 @@ async def test_form_mailbox_format2( { "allow_external": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -1369,6 +1384,7 @@ async def test_form_mailbox_format2( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -1528,6 +1544,7 @@ async def test_imap_login_error(mock_imap_login_error, caplog): "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -1652,6 +1669,7 @@ async def test_form_amazon_error( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -1762,6 +1780,7 @@ async def test_form_amazon_error_2( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, @@ -1818,6 +1837,7 @@ async def test_form_amazon_error_2( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_security": "SSL", @@ -1933,6 +1953,7 @@ async def test_form_storage_error( "allow_external": False, "custom_img": True, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 120, @@ -1993,6 +2014,7 @@ async def test_form_storage_error( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "image_name": "mail_today.gif", @@ -2133,6 +2155,7 @@ async def test_reconfigure( "allow_external": False, "custom_img": True, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 120, @@ -2185,6 +2208,7 @@ async def test_reconfigure( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "image_name": "mail_today.gif", @@ -2315,6 +2339,7 @@ async def test_reconfigure_no_amazon( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 120, @@ -2362,6 +2387,7 @@ async def test_reconfigure_no_amazon( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "image_name": "mail_today.gif", @@ -2485,6 +2511,7 @@ async def test_reconfigure_no_amazon_no_custom_image( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 120, @@ -2540,6 +2567,7 @@ async def test_reconfigure_no_amazon_no_custom_image( "username": "test@test.email", "password": "notarealpassword", "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "image_name": "mail_today.gif", @@ -2672,6 +2700,7 @@ async def test_reconfig_no_cust_img( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 120, @@ -2792,6 +2821,7 @@ async def test_reconfig_amazon_error( "allow_external": False, "custom_img": False, "folder": '"INBOX"', + "generate_grid": False, "generate_mp4": False, "gif_duration": 5, "imap_timeout": 30, diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 8bfa3976..4c45c81c 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -23,6 +23,7 @@ download_img, email_fetch, email_search, + generate_grid_img, get_count, get_formatted_date, get_items, @@ -1246,3 +1247,71 @@ async def test_get_resourcs(hass): "zpackages_delivered": "Mail Packages Delivered", "zpackages_transit": "Mail Packages In Transit", } + + +@pytest.mark.asyncio +async def test_generate_grid_image( + mock_osremove, mock_os_path_join2, mock_subprocess_call, mock_os_path_split +): + with patch("custom_components.mail_and_packages.helpers.cleanup_images"): + generate_grid_img("./", "testfile.gif", 5) + mock_os_path_join2.assert_called_with("./", "testfile_grid.png") + mock_subprocess_call.assert_called_with( + [ + "ffmpeg", + "-i", + "./testfile_grid.png", + "-r", + "0.20", + "-filter_complex", + "tile=2x3:padding=10:color=black", + "./testfile_grid.png", + ], + stdout=-3, + stderr=-3, + ) + generate_grid_img("./", "testfile.gif", 8) + mock_subprocess_call.assert_called_with( + [ + "ffmpeg", + "-i", + "./testfile_grid.png", + "-r", + "0.20", + "-filter_complex", + "tile=2x4:padding=10:color=black", + "./testfile_grid.png", + ], + stdout=-3, + stderr=-3, + ) + generate_grid_img("./", "testfile.gif", 1) + mock_subprocess_call.assert_called_with( + [ + "ffmpeg", + "-i", + "./testfile_grid.png", + "-r", + "0.20", + "-filter_complex", + "tile=2x1:padding=10:color=black", + "./testfile_grid.png", + ], + stdout=-3, + stderr=-3, + ) + generate_grid_img("./", "testfile.gif", 0) + mock_subprocess_call.assert_called_with( + [ + "ffmpeg", + "-i", + "./testfile_grid.png", + "-r", + "0.20", + "-filter_complex", + "tile=2x1:padding=10:color=black", + "./testfile_grid.png", + ], + stdout=-3, + stderr=-3, + )