From 3ac58f15753ad15e15eb68759872d754449c6052 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 11:51:38 -0400 Subject: [PATCH 01/13] Add missing services to readme --- README.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/README.md b/README.md index e4fd0e4..d4a8e13 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,113 @@ media_player.music_assistant_speaker: | `data` | dict | No | None | Any data to send with the command | | `config_entry_id` | dict | No | None | The ID of the used `mass_queue` integration | +`mass_queue.clear_queue_from_here`: Clear the items in a queue after the currently playing item. + +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------------------------| +| `entity` | str | Yes | n/a | Music assistant player entity | + +`mass_queue.unfavorite_current_item`: Unfavorite the currently playing item + +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------------------------| +| `entity` | str | Yes | n/a | Music assistant player entity | + +`mass_queue.set_group_volume`: Sets the volume for the group which the provided player belongs to. + +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------------------------| +| `entity` | str | Yes | n/a | Music assistant player entity | + +`mass_queue.get_group_volume`: Returns the volume for a player group. + +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------------------------| +| `entity` | str | Yes | n/a | Music assistant player entity | + +`mass_queue.get_recommendations`: Get recommendations from your music providers. + +| Parameter | Type | Required | Default | Description | +|--------------|-------------|----------|---------|----------------------------------------------------| +| `entity` | str | Yes | n/a | Music assistant player entity | +| `providers` | list of str | No | n/a | Limit recommendations to the specified provider(s) | + +`mass_queue.get_album`: Returns information about an album from the MA server. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|---------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the playlist | + +`mass_queue.get_album_tracks`: Returns some or all tracks for the album given by the URI. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|----------------------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the album | +| `page` | int | No | None | Page of results to return. If not provided, returns all. | +`mass_queue.get_artist`: Returns information about an artist from the MA server. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|---------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the playlist | + +`mass_queue.get_artist_tracks`: Returns the top tracks for the artist given by the URI. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|----------------------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the artist | +| `page` | int | No | None | Page of results to return. If not provided, returns all. | + +`mass_queue.get_playlist`: Returns information about a playlist from the MA server. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|---------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the playlist | + +`mass_queue.get_playlist_tracks`: Returns some or all tracks for the playlist given by the URI. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|----------------------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the playlist | +| `page` | int | No | None | Page of results to return. If not provided, returns all. | + +`mass_queue.remove_playlist_tracks`: Removes one or more tracks from a playlist based on their position. **IMPORTANT: SEE WARNING BELOW** + +| Parameter | Type | Required | Default | Description | +|-----------------------|-------------|----------|---------|---------------------------------------------------| +| `config_entry_id` | str | Yes | n/a | The ID of the used `mass_queue` integration | +| `playlist_id` | str | Yes | n/a | The ID of the playlist | +| `positions_to_remove` | list of str | Yes | n/a | Position(s) of items to remove from the playlist. | + +### ⚠️WARNING: mass_queue.remove_playlist_tracks is bad for your health.⚠️ + +`mass_queue.remove_playlist_tracks` is **dangerous**. + +Music Assistant will use the positions in a playlist to determine which tracks to remove. However, it does not provide an updated playlist immediately, instead waiting for the next refresh. + +You must be **VERY** careful if you are using this action. You should **NOT** rely on proper feedback from Music Assistant. If you plan on using this, you MUST plan to work around this. + +`mass_queue.get_podcast`: Returns information about a podcast from the MA server. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|---------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the playlist | + +`mass_queue.get_podcast_episodes`: Returns some or all episodes for the podcast given by the URI. + +| Parameter | Type | Required | Default | Description | +|-------------------|------|----------|---------|----------------------------------------------------------| +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | +| `uri` | str | Yes | n/a | The URI for the podcast | +| `page` | int | No | None | Page of results to return. If not provided, returns all. | + + ## Installation 1. Download and install the integration by using the button above. From 734419e723b8c21a66ae6611231fd18f10a15813 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 11:52:18 -0400 Subject: [PATCH 02/13] Use collapsed groups to simplify readme --- README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/README.md b/README.md index d4a8e13..3767804 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,10 @@ Designed to work with [Music Assistant Player Card](https://github.com/droans/ma ## New actions: --- + +
+Queue Actions + `mass_queue.get_queue_items`: Returns the items (songs, podcast episods, etc.) within a queue | Parameter | Type | Required | Default | Description | @@ -117,6 +121,11 @@ media_player.music_assistant_speaker: |-----------|------|----------|---------|-------------------------------| | `entity` | str | Yes | n/a | Music assistant player entity | + + +
+Group Actions + `mass_queue.set_group_volume`: Sets the volume for the group which the provided player belongs to. | Parameter | Type | Required | Default | Description | @@ -129,6 +138,11 @@ media_player.music_assistant_speaker: |-----------|------|----------|---------|-------------------------------| | `entity` | str | Yes | n/a | Music assistant player entity | + + +
+Collection Actions + `mass_queue.get_recommendations`: Get recommendations from your music providers. | Parameter | Type | Required | Default | Description | @@ -136,6 +150,8 @@ media_player.music_assistant_speaker: | `entity` | str | Yes | n/a | Music assistant player entity | | `providers` | list of str | No | n/a | Limit recommendations to the specified provider(s) | +--- +### Albums `mass_queue.get_album`: Returns information about an album from the MA server. | Parameter | Type | Required | Default | Description | @@ -150,6 +166,9 @@ media_player.music_assistant_speaker: | `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | | `uri` | str | Yes | n/a | The URI for the album | | `page` | int | No | None | Page of results to return. If not provided, returns all. | + +--- +### Artists `mass_queue.get_artist`: Returns information about an artist from the MA server. | Parameter | Type | Required | Default | Description | @@ -165,6 +184,8 @@ media_player.music_assistant_speaker: | `uri` | str | Yes | n/a | The URI for the artist | | `page` | int | No | None | Page of results to return. If not provided, returns all. | +--- +### Playlists `mass_queue.get_playlist`: Returns information about a playlist from the MA server. | Parameter | Type | Required | Default | Description | @@ -196,6 +217,9 @@ Music Assistant will use the positions in a playlist to determine which tracks t You must be **VERY** careful if you are using this action. You should **NOT** rely on proper feedback from Music Assistant. If you plan on using this, you MUST plan to work around this. +--- + +### Podcasts `mass_queue.get_podcast`: Returns information about a podcast from the MA server. | Parameter | Type | Required | Default | Description | @@ -211,6 +235,7 @@ You must be **VERY** careful if you are using this action. You should **NOT** re | `uri` | str | Yes | n/a | The URI for the podcast | | `page` | int | No | None | Page of results to return. If not provided, returns all. | + ## Installation From cf5252208c1ae9d640daf64dcced786eb4e449b5 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 11:55:42 -0400 Subject: [PATCH 03/13] Small formatting fixes --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3767804..f0db8d4 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ Designed to work with [Music Assistant Player Card](https://github.com/droans/ma `mass_queue.get_queue_items`: Returns the items (songs, podcast episods, etc.) within a queue -| Parameter | Type | Required | Default | Description | -|-----------|------|----------|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Parameter | Type | Required | Default | Description | +|-----------------|------|----------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `entity` | str | Yes | n/a | Music assistant player entity | | `limit` | int | No | 500 | Number of items in queue to return | | `offset` | int | No | n/a | Location in queue to start where zero equals the first item in queue, not the current item. By default, will start with five items before actively playing item. | @@ -107,7 +107,7 @@ media_player.music_assistant_speaker: |-------------------|------|----------|---------|---------------------------------------------| | `command` | str | Yes | n/a | The command to send to Music Assistant | | `data` | dict | No | None | Any data to send with the command | -| `config_entry_id` | dict | No | None | The ID of the used `mass_queue` integration | +| `config_entry_id` | str | No | None | The ID of the used `mass_queue` integration | `mass_queue.clear_queue_from_here`: Clear the items in a queue after the currently playing item. From ce03deb644a6184d4a06f970f37df74c5451c837 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 13:18:17 -0400 Subject: [PATCH 04/13] Add WebSocket commands --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index f0db8d4..b33137f 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,24 @@ You must be **VERY** careful if you are using this action. You should **NOT** re +## New Websocket Commands: + +The WebSocket commands below can be used by custom cards/integrations along with whatever personal use you may discern. + +`mass_queue/get_info`: Returns basic information about a Music Assistant player. + +| Parameter | Type | Required | Description | +|-------------------|------|----------|---------|----------------------| +| `type` | str | Yes | Must be `mass_queue/get_info` | +| `entity_id` | str | Yes | Music assistant player entity | + +`mass_queue/download_and_encode_image`: Returns a single image for a media item as a Base64 encoded string. Useful when avoiding mixed-content or when accessing local media outside of your network + +| Parameter | Type | Required | Description | +|-------------------|------|----------|---------|---------------------------------------| +| `type` | str | Yes | Must be `mass_queue/download_and_encode_image` | +| `url` | str | Yes | URL of media to download. | + ## Installation 1. Download and install the integration by using the button above. From f7a5fc4af898f3fd29acc8b6436687e9dd674e8d Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 13:19:36 -0400 Subject: [PATCH 05/13] Add response schemas --- README.md | 2 + docs/response_schemas.md | 164 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 docs/response_schemas.md diff --git a/README.md b/README.md index b33137f..341c8c9 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,8 @@ Designed to work with [Music Assistant Player Card](https://github.com/droans/ma ## New actions: +The response schemas for all new actions and WebSocket commands can be found at [docs/response_schemas.md](docs/response_schemas.md) + ---
diff --git a/docs/response_schemas.md b/docs/response_schemas.md new file mode 100644 index 0000000..d7cd99f --- /dev/null +++ b/docs/response_schemas.md @@ -0,0 +1,164 @@ +# Schemas + +## Service Schemas + +### GetQueueItemsResponseSchema + +```yaml +[player_name: str]: QueueItemSchema[] +``` + +### GetGroupVolumeResponseSchema + +```yaml +volume_level: int +``` + + +### SendCommandResponseSchema + +```yaml +response: any +``` + +### GetRecommendationsResponseSchema + +```yaml +response: RecommendationFolder[] +``` + +### GetAlbumResponseSchema + +*See [music_assistant_models.media_items.Album](https://github.com/music-assistant/models/blob/0f2ad708ab26d2cc2ae008872afc00cd4a795380/music_assistant_models/media_items/media_item.py#L208)* + + +### GetArtistResponseSchema + +*See [music_assistant_models.media_items.Artist](https://github.com/music-assistant/models/blob/0f2ad708ab26d2cc2ae008872afc00cd4a795380/music_assistant_models/media_items/media_item.py#L198)* + +### GetPlaylistResponseSchema + +*See [music_assistant_models.media_items.Playlist](https://github.com/music-assistant/models/blob/0f2ad708ab26d2cc2ae008872afc00cd4a795380/music_assistant_models/media_items/media_item.py#L254)* + +### GetPodcastResponseSchema + +*See [music_assistant_models.media_items.Podcast](https://github.com/music-assistant/models/blob/0f2ad708ab26d2cc2ae008872afc00cd4a795380/music_assistant_models/media_items/media_item.py#L323)* + +### GetAlbumTracksResponseSchema + +```yaml +tracks: TrackSchame[] +``` + +### GetArtistTracksResponseSchema + +```yaml +tracks: TrackSchame[] +``` + +### GetPlaylistTracksResponseSchema + +```yaml +tracks: PlaylistTrackSchema[] +``` + +### GetPodcastEpisodesResponseSchema + +```yaml +episodes: PodcastEpisodeSchema[] +``` + +## WebSocket Schemas + +### GetInfoResponseSchema + +```yaml +available: bool +can_group_with: str[] # List of player IDs that can be natively synced using `media_player.join` +connection: + configuration_url: str # URL to configure the player from Music Assistant + url: str # IP Address for player +entries: # Config Entry IDs for the player's HA integrations + music_assistant: str + mass_queue: str +features: str[] # List of features which the player supports +manufacturer: str +model: str +name: str +player_id: str # ID of player in Music Assistant +provider: str +queue_id: str # ID for queue currently playing on player +server: + connection: + url: str # URL to access Music Assistant integration + websocket: str # WebSocket address to interact with player +synced_to: str| None # Player(s) which are currently synced/grouped/joined with the player +type: str +``` + +### DownloadAndEncodeImageResponseSchema + +```yaml + +``` + +## Sub-schemas + +### QueueItemSchema + +```yaml +queue_item_id: str +media_title: str +media_album_name: str +media_artist: str +media_content_id: str +media_image: str +favorite: bool +``` + +### TrackSchema + +```yaml +media_title: str +media_content_id: str +duration?: int +media_image: str +local_image_encoded?: str +favorite: bool +media_album_name: str +media_artist: str +``` + +### PlaylistTrackSchema + +```yaml +media_title: str +media_content_id: str +duration?: int +media_image: str +local_image_encoded?: str +favorite: bool +media_album_name: str +media_artist: str +position: int +``` + +### PodcastEpisodeSchema + +```yaml +media_title: str +media_content_id: str +duration?: int +media_image: str +local_image_encoded?: str +favorite: bool +media_album_name: str +media_artist: str +release_date: str +``` + +*Note: release date is a string representation of a date, formatted as `YYYY-MM-DDTHH:MM:SS`.* + +### RecommendationFolder + +*See [music_assistant_models.media_items.RecommendationFolder](https://github.com/music-assistant/models/blob/0f2ad708ab26d2cc2ae008872afc00cd4a795380/music_assistant_models/media_items/media_item.py#L389)* From b1756ff5102dd753f80245ed8a3764bd3a2084ae Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 13:20:30 -0400 Subject: [PATCH 06/13] Improve error message --- custom_components/mass_queue/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/mass_queue/utils.py b/custom_components/mass_queue/utils.py index eda3601..b7402b0 100644 --- a/custom_components/mass_queue/utils.py +++ b/custom_components/mass_queue/utils.py @@ -75,7 +75,7 @@ def find_mass_queue_entry_from_unique_id(hass: HomeAssistant, unique_id: str): for entry in entries: if entry.unique_id == unique_id: return entry - msg = f"Cannot find entry for Music Assistant with unique ID {unique_id}" + msg = f"Cannot find entry for Music Assistant Queue Actions with unique ID {unique_id}. Are the integrations for Music Assistant and Music Assistant Queue Actions configured?" raise ServiceValidationError(msg) From 14256fce628fbf6e0330db5b906dcf76fff92471 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 13:20:48 -0400 Subject: [PATCH 07/13] Ensure strings reference Music Assistant Queue Actions --- custom_components/mass_queue/translations/en.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/mass_queue/translations/en.json b/custom_components/mass_queue/translations/en.json index 1e04102..952238a 100644 --- a/custom_components/mass_queue/translations/en.json +++ b/custom_components/mass_queue/translations/en.json @@ -8,13 +8,13 @@ }, "manual": { "title": "Manually add Music Assistant server", - "description": "Enter the URL to your already running Music Assistant server. If you do not have the Music Assistant server running, you should install it first.", + "description": "Enter the URL to your already running Music Assistant server for Music Assistant Queue Actions to use. If you do not have the Music Assistant server running, you should install it first.", "data": { "url": "URL of the Music Assistant server" } }, "discovery_confirm": { - "description": "Do you want to add the Music Assistant server `{url}` to Home Assistant?", + "description": "Do you want to add Music Assistant Queue Actions (via the Music Assistant server `{url}`) to Home Assistant?", "title": "Discovered Music Assistant server" } }, @@ -26,7 +26,7 @@ "abort": { "already_configured": "[%key:common::config_flow::abort::already_configured_device%]", "already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]", - "reconfiguration_successful": "Successfully reconfigured the Music Assistant integration.", + "reconfiguration_successful": "Successfully reconfigured the Music Assistant Queue Action integration.", "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", "reconfigure_successful": "[%key:common::config_flow::abort::reconfigure_successful%]" } @@ -43,7 +43,7 @@ "issues": { "invalid_server_version": { "title": "The Music Assistant server is not the correct version", - "description": "Check if there are updates available for the Music Assistant server and/or integration." + "description": "Check if there are updates available for the Music Assistant server and/or MA Queue Actions integration." } }, "services": { From 8b2790885f757345e068567545705833bb7a5917 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 14:06:53 -0400 Subject: [PATCH 08/13] Add support for getting user info --- README.md | 8 +++++++ custom_components/mass_queue/__init__.py | 2 ++ custom_components/mass_queue/utils.py | 9 ++++++++ .../mass_queue/websocket_commands.py | 23 +++++++++++++++++++ docs/response_schemas.md | 4 ++++ 5 files changed, 46 insertions(+) diff --git a/README.md b/README.md index 341c8c9..38c363f 100644 --- a/README.md +++ b/README.md @@ -257,6 +257,14 @@ The WebSocket commands below can be used by custom cards/integrations along with | `type` | str | Yes | Must be `mass_queue/download_and_encode_image` | | `url` | str | Yes | URL of media to download. | +`mass_queue/get_user_info`: Returns a single image for a media item as a Base64 encoded string. Useful when avoiding mixed-content or when accessing local media outside of your network + +| Parameter | Type | Required | Description | +|-------------------|------|----------|---------|-----------------------------| +| `type` | str | Yes | Must be `mass_queue/get_user_info` | +| `entity_id` | str | Yes | URL of media to download. | +| `username` | str | Yes | Username of user to return info for. | + ## Installation 1. Download and install the integration by using the button above. diff --git a/custom_components/mass_queue/__init__.py b/custom_components/mass_queue/__init__.py index fd929ec..1546f8c 100644 --- a/custom_components/mass_queue/__init__.py +++ b/custom_components/mass_queue/__init__.py @@ -43,6 +43,7 @@ api_download_and_encode_image, api_download_images, api_get_entity_info, + api_get_user_info, ) if TYPE_CHECKING: @@ -146,6 +147,7 @@ async def on_hass_stop(event: Event) -> None: # noqa: ARG001 websocket_api.async_register_command(hass, api_download_images) websocket_api.async_register_command(hass, api_download_and_encode_image) websocket_api.async_register_command(hass, api_get_entity_info) + websocket_api.async_register_command(hass, api_get_user_info) # If the listen task is already failed, we need to raise ConfigEntryNotReady if listen_task.done() and (listen_error := listen_task.exception()) is not None: diff --git a/custom_components/mass_queue/utils.py b/custom_components/mass_queue/utils.py index b7402b0..7f1c2d8 100644 --- a/custom_components/mass_queue/utils.py +++ b/custom_components/mass_queue/utils.py @@ -295,6 +295,15 @@ async def download_and_encode_image(url: str, hass: HomeAssistant): return f"data:image;base64,{base64.b64encode(read).decode('utf-8')}" +async def get_user_info(hass: HomeAssistant, entity_id: str, username: str): + """Returns the user information for the given username.""" + client = get_mass_client(hass, entity_id) + users = await client.auth.list_users() + LOGGER.debug(f"Client: {client}") + LOGGER.debug(f"Users: {users}") + return [user.to_dict() for user in users if user.username == username][0] + + def get_entity_info(hass: HomeAssistant, entity_id: str): """Gets the server and client info for a given player.""" client = get_mass_client(hass, entity_id) diff --git a/custom_components/mass_queue/websocket_commands.py b/custom_components/mass_queue/websocket_commands.py index 5402b83..2f5236e 100644 --- a/custom_components/mass_queue/websocket_commands.py +++ b/custom_components/mass_queue/websocket_commands.py @@ -16,6 +16,7 @@ download_and_encode_image, download_single_image_from_image_data, get_entity_info, + get_user_info, ) @@ -101,3 +102,25 @@ async def get_playlist_items( msg: dict, ) -> None: """Retrieves all playlist items.""" + + +@websocket_api.websocket_command( + { + vol.Required("type"): "mass_queue/get_user_info", + vol.Required("entity_id"): str, + vol.Required("username"): str, + }, +) +@websocket_api.async_response +async def api_get_user_info( + hass: HomeAssistant, + connection: websocket_api.ActiveConnection, + msg: dict, +) -> None: + """Returns the information for a given user.""" + entity_id = msg["entity_id"] + username = msg["username"] + LOGGER.debug(f"Received message {msg}") + result = await get_user_info(hass, entity_id, username) + LOGGER.debug(f"Sending result {result}") + connection.send_result(msg["id"], result) diff --git a/docs/response_schemas.md b/docs/response_schemas.md index d7cd99f..50ff763 100644 --- a/docs/response_schemas.md +++ b/docs/response_schemas.md @@ -96,6 +96,10 @@ synced_to: str| None # Player(s) which are currently synced/grouped/joine type: str ``` +### GetUser +*See [music_assistant_models.auth.User](https://github.com/music-assistant/models/blob/0f2ad708ab26d2cc2ae008872afc00cd4a795380/music_assistant_models/auth.py#L29)* + + ### DownloadAndEncodeImageResponseSchema ```yaml From 0d82b55c2d75b22b68ee1dbbbfbf6a6b323e8f6d Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 14:08:35 -0400 Subject: [PATCH 09/13] Update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 38c363f..69c376c 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ media_player.music_assistant_speaker: |-----------|------|----------|---------|-------------------------------| | `entity` | str | Yes | n/a | Music assistant player entity | - +
Group Actions @@ -140,7 +140,7 @@ media_player.music_assistant_speaker: |-----------|------|----------|---------|-------------------------------| | `entity` | str | Yes | n/a | Music assistant player entity | - +
Collection Actions @@ -237,7 +237,7 @@ You must be **VERY** careful if you are using this action. You should **NOT** re | `uri` | str | Yes | n/a | The URI for the podcast | | `page` | int | No | None | Page of results to return. If not provided, returns all. | - +
## New Websocket Commands: From 3f49667ca3eb09e90364f369cb5ebcf77fb983bf Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 14:10:48 -0400 Subject: [PATCH 10/13] Update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 69c376c..d938259 100644 --- a/README.md +++ b/README.md @@ -246,21 +246,21 @@ The WebSocket commands below can be used by custom cards/integrations along with `mass_queue/get_info`: Returns basic information about a Music Assistant player. | Parameter | Type | Required | Description | -|-------------------|------|----------|---------|----------------------| +|-------------------|------|----------|--------------------------------| | `type` | str | Yes | Must be `mass_queue/get_info` | | `entity_id` | str | Yes | Music assistant player entity | `mass_queue/download_and_encode_image`: Returns a single image for a media item as a Base64 encoded string. Useful when avoiding mixed-content or when accessing local media outside of your network | Parameter | Type | Required | Description | -|-------------------|------|----------|---------|---------------------------------------| +|-------------------|------|----------|-------------------------------------------------| | `type` | str | Yes | Must be `mass_queue/download_and_encode_image` | | `url` | str | Yes | URL of media to download. | `mass_queue/get_user_info`: Returns a single image for a media item as a Base64 encoded string. Useful when avoiding mixed-content or when accessing local media outside of your network | Parameter | Type | Required | Description | -|-------------------|------|----------|---------|-----------------------------| +|-------------------|------|----------|---------------------------------------| | `type` | str | Yes | Must be `mass_queue/get_user_info` | | `entity_id` | str | Yes | URL of media to download. | | `username` | str | Yes | Username of user to return info for. | From f0d81e41918b84adf7d4e8f3e06590c6dab396db Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 17 Apr 2026 14:12:20 -0400 Subject: [PATCH 11/13] Fix typo --- docs/response_schemas.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/response_schemas.md b/docs/response_schemas.md index 50ff763..a2eb90c 100644 --- a/docs/response_schemas.md +++ b/docs/response_schemas.md @@ -47,13 +47,13 @@ response: RecommendationFolder[] ### GetAlbumTracksResponseSchema ```yaml -tracks: TrackSchame[] +tracks: TrackSchema[] ``` ### GetArtistTracksResponseSchema ```yaml -tracks: TrackSchame[] +tracks: TrackSchema[] ``` ### GetPlaylistTracksResponseSchema From 936d18749845c0baa7a1e8d3738d78b97dec86a4 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 15 May 2026 16:10:06 -0400 Subject: [PATCH 12/13] Update FAQs in Readme --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index d938259..3ab8a06 100644 --- a/README.md +++ b/README.md @@ -286,6 +286,18 @@ You may enable the `download_local` option by navigating to the integration's li This option will then return a new attribute for these queue items labeled `local_image_encoded`. Custom cards can then utilize this in their code in place of the image URL. +## I'm having issues trying to authenticate! + +The OAuth flow for Music Assistant and Home Assistant can sometimes be finicky. In most instances, the issue is due to the differences in the expected and the used address for either Music Assistant or Home Assistant. However, there is fortunately a simple fix. + +First, complete the process as much as you can. When you receive an error, go to the navigation bar on your browser. Take a note at the address you currently are at and whether it is the address for Music Assistant or for Home Assistant. + +Then, simply change the base URL from whatever is displayed to the actual IP and port for MA or HA. + +## Where are the entities at? + +This integration does not create any new entities. It only provides new actions and WebSocket commands which can be used in scripts, automations, and custom cards. + ## I am the creator of a custom card. Can I use these actions in my own card, too? Of course - this is open-source! The only requirement is that you give credit. From 1f20629957a95b1b8163a2fcfdcde565b4384b78 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 15 May 2026 17:03:06 -0400 Subject: [PATCH 13/13] Version bump --- custom_components/mass_queue/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/mass_queue/manifest.json b/custom_components/mass_queue/manifest.json index facb84e..591fa8c 100644 --- a/custom_components/mass_queue/manifest.json +++ b/custom_components/mass_queue/manifest.json @@ -11,6 +11,6 @@ "issue_tracker": "https://github.com/droans/mass_queue/issues", "requirements": ["music-assistant-client"], "ssdp": [], - "version": "0.10.0", + "version": "0.10.1", "zeroconf": ["_mass._tcp.local."] }