From b17bec2b0aadd733a87af4efc7161c1444ff15d8 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 25 Dec 2023 21:03:35 -1000 Subject: [PATCH] Cache media player url hashing (#106400) --- homeassistant/components/media_player/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 706539664ec..977c7cbf0f3 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -8,6 +8,7 @@ from contextlib import suppress import datetime as dt from enum import StrEnum import functools as ft +from functools import lru_cache import hashlib from http import HTTPStatus import logging @@ -496,6 +497,12 @@ CACHED_PROPERTIES_WITH_ATTR_ = { } +@lru_cache +def _url_hash(url: str) -> str: + """Create hash for media image url.""" + return hashlib.sha256(url.encode("utf-8")).hexdigest()[:16] + + class MediaPlayerEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_): """ABC for media player entities.""" @@ -636,7 +643,7 @@ class MediaPlayerEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_): return self._attr_media_image_hash if (url := self.media_image_url) is not None: - return hashlib.sha256(url.encode("utf-8")).hexdigest()[:16] + return _url_hash(url) return None