Cache media player url hashing (#106400)

This commit is contained in:
J. Nick Koston 2023-12-25 21:03:35 -10:00 committed by GitHub
parent 3eef1a3f6a
commit b17bec2b0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,7 @@ from contextlib import suppress
import datetime as dt import datetime as dt
from enum import StrEnum from enum import StrEnum
import functools as ft import functools as ft
from functools import lru_cache
import hashlib import hashlib
from http import HTTPStatus from http import HTTPStatus
import logging 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_): class MediaPlayerEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
"""ABC for media player entities.""" """ABC for media player entities."""
@ -636,7 +643,7 @@ class MediaPlayerEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
return self._attr_media_image_hash return self._attr_media_image_hash
if (url := self.media_image_url) is not None: if (url := self.media_image_url) is not None:
return hashlib.sha256(url.encode("utf-8")).hexdigest()[:16] return _url_hash(url)
return None return None