@api_command("metadata/set_default_preferred_language")
def set_default_preferred_language(self, lang: str) -> None:
"""
- Set the (default) preferred language.
+ Set the default preferred language.
Reasoning behind this is that the backend can not make a wise choice for the default,
so relies on some external source that knows better to set this info, like the frontend
"""
if self.mass.config.get_raw_core_config_value(self.domain, CONF_LANGUAGE):
return # already set
+ self.set_preferred_language(lang)
+
+ @api_command("metadata/set_preferred_language")
+ def set_preferred_language(self, lang: str) -> None:
+ """
+ Set the preferred language.
+
+ Note that this will not modify any existing metadata,
+ but will be used for future lookups.
+ """
# prefer exact match
if lang in LOCALES:
self.mass.config.set_raw_core_config_value(self.domain, CONF_LANGUAGE, lang)
size: int = 0,
prefer_proxy: bool = False,
image_format: str = "png",
+ prefer_stream_server: bool = False,
) -> str:
"""Get (proxied) URL for MediaItemImage."""
if not image.remotely_accessible or prefer_proxy or size:
# return imageproxy url for images that need to be resolved
# the original path is double encoded
encoded_url = urllib.parse.quote_plus(urllib.parse.quote_plus(image.path))
+ base_url = (
+ self.mass.streams.base_url if prefer_stream_server else self.mass.webserver.base_url
+ )
return (
- f"{self.mass.streams.base_url}/imageproxy?provider={image.provider}"
+ f"{base_url}/imageproxy?provider={image.provider}"
f"&size={size}&fmt={image_format}&path={encoded_url}"
)
return image.path
album.name if (album := getattr(queue_item.media_item, "album", None)) else ""
)
if queue_item.image:
- media.image_url = self.mass.metadata.get_image_url(queue_item.image, size=512)
+ # the image format needs to be 500x500 jpeg for maximum compatibility with players
+ # we prefer the imageproxy on the streamserver here because this request is sent
+ # to the player itself which may not be able to reach the regular webserver
+ media.image_url = self.mass.metadata.get_image_url(
+ queue_item.image, size=500, prefer_stream_server=True
+ )
return media
async def get_artist_tracks(self, artist: Artist) -> list[Track]:
if active_queue and (current_item := active_queue.current_item):
item_image_url = (
# the image format needs to be 500x500 jpeg for maximum compatibility with players
- self.mass.metadata.get_image_url(current_item.image, size=500, image_format="png")
+ self.mass.metadata.get_image_url(current_item.image, size=500, image_format="jpeg")
if current_item.image
else None
)