Skip to content

Commit

Permalink
Merge pull request #49 from music-assistant/TheFes-20250128-version_m…
Browse files Browse the repository at this point in the history
…anagement

Version management
  • Loading branch information
nikito authored Jan 28, 2025
2 parents ed1146d + 09d284e commit 5e55a7b
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 194 deletions.
7 changes: 7 additions & 0 deletions llm-enhanced-local-assist-blueprint/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
![Image](https://github.com/music-assistant/voice-support/blob/main/assets/music-assistant.png?raw=true)

# Changelog: Option 2 - LLM Enhanced automation

## 20250128

* Initial version when the changelog was created
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,7 @@ triggers:
actions:
- alias: Store input from blueprint in variables so they can be used in the prompt
variables:
version: 20250128
expose_areas: !input expose_areas
expose_players: !input expose_players
prompt:
Expand Down
7 changes: 7 additions & 0 deletions llm-script-blueprint/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
![Image](https://github.com/music-assistant/voice-support/blob/main/assets/music-assistant.png?raw=true)

# Changelog: Option 3 - Full LLM Script

## 20250128

* Initial version when the changelog was created
1 change: 1 addition & 0 deletions llm-script-blueprint/llm_voice_script.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ fields:
description: !input media_player_prompt
sequence:
- variables:
version: 20250128
default_player: !input default_player
player_data: "{% set ma = integration_entities('music_assistant') %}
Expand Down
7 changes: 7 additions & 0 deletions local-assist-blueprint/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
![Image](https://github.com/music-assistant/voice-support/blob/main/assets/music-assistant.png?raw=true)

# Changelog: Option 1 - Fully local automation

## 20250128

* Initial version when the changelog was created
121 changes: 24 additions & 97 deletions local-assist-blueprint/mass_assist_blueprint_de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,108 +84,35 @@ triggers:
conditions: []
actions:
- variables:
version: 20250128
default_player_entity_id: !input default_player_entity_id_input
trigger_id: "{{ trigger.id }}"
media_name: "{{ trigger.slots.media_name }}"
media_type: |
{% if 'radio' in media_name or 'Radio' in media_name %}
radio
{% else %}
{{ trigger_id }}
{% endif %}
artist: "{{ trigger.slots.artist }}"
area_or_player_name: "{{ trigger.slots.area_or_player_name }}"
area_or_player_name: "{{ trigger.slots.area_or_player_name | default }}"
assist_device_id: "{{ trigger.device_id }}"
radio_mode_str: "{{ trigger.slots.radio_mode or '' }}"
radio_mode: "{{ 'radio' in radio_mode_str.lower() }}"
action_data:
media_id: "{{ trigger.slots.media_name }}"
media_type: "{{ 'radio' if 'radio' in media_name | lower else trigger_id }}"
artist: "{{ trigger.slots.artist | default }}"
radio_mode: "{{ 'radio' in trigger.slots.radio_mode | default | lower }}"
player_entity_id_by_player_name: >
{{ expand(integration_entities('music_assistant')) |
selectattr("attributes.mass_player_type", 'defined') |
selectattr("attributes.friendly_name", 'equalto', area_or_player_name) |
join(', ', attribute="entity_id") }}
{{ integration_entities('music_assistant') | expand
| selectattr('name', 'match', area_or_player_name ~ '$', ignorecase=true)
| map(attribute='entity_id') | list }}
player_entity_id_by_area_name: >
{{ expand(area_entities(area_or_player_name)) |
selectattr("attributes.mass_player_type", 'defined') |
selectattr("attributes.friendly_name", 'equalto', area_or_player_name) |
join(', ', attribute="entity_id") }}
player_entity_id_by_assist_area: |
{% if assist_device_id and area_id(assist_device_id) %}
{{ expand(area_entities(area_id(assist_device_id))) | selectattr("attributes.mass_player_type", 'defined') | join(', ', attribute="entity_id") }}
{% else %}
None
{% endif %}
{{ areas() | map('area_name') | select('match', area_or_player_name ~ '$',
ignorecase=true) | map('area_entities') | sum(start=[]) | select('in',
integration_entities('music_assistant')) | list }}
player_entity_id_by_assist_area: >
{{ area_entities(area_id(trigger.device_id))
| select('in', integration_entities('music_assistant')) | list }}
mass_player_entity_id: |
{% if player_entity_id_by_player_name %}
{{ player_entity_id_by_player_name }}
{% elif player_entity_id_by_area_name %}
{{ player_entity_id_by_area_name }}
{% elif player_entity_id_by_assist_area %}
{{ player_entity_id_by_assist_area }}
{% else %}
{{ default_player_entity_id }}
{% endif %}
mass_player_name: "{{ state_attr(mass_player_entity_id, 'friendly_name') }}"
- choose:
- conditions:
- condition: template
value_template: "{{ media_type == 'album' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
artist: "{{ artist }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'track' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
artist: "{{ artist }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'artist' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'radio' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
media_type: "{{ media_type }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'playlist' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
{{ player_entity_id_by_player_name or player_entity_id_by_area_name
or player_entity_id_by_assist_area or [default_player_entity_id] }}
mass_player_name: "{{ mass_player_entity_id | map('state_attr', 'friendly_name') | join(', ') }}"
- alias: Send media to selected Music Assistant Player
action: music_assistant.play_media
data: "{{ dict(action_data.items() | selectattr('1')) }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- set_conversation_response: "{{ trigger.slots.media_name }} wird auf {{ mass_player_name }} abgespielt"
mode: single
1 change: 1 addition & 0 deletions local-assist-blueprint/mass_assist_blueprint_en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ triggers:
actions:
- alias: Define variables to be used in the automation
variables:
version: 20250128
default_player_entity_id: !input default_player_entity_id_input
trigger_id: "{{ trigger.id }}"
area_or_player_name: "{{ trigger.slots.area_or_player_name | default }}"
Expand Down
121 changes: 24 additions & 97 deletions local-assist-blueprint/mass_assist_blueprint_nl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,108 +85,35 @@ triggers:
conditions: []
actions:
- variables:
version: 20250128
default_player_entity_id: !input default_player_entity_id_input
trigger_id: "{{ trigger.id }}"
media_name: "{{ trigger.slots.media_name }}"
media_type: |
{% if 'radio' in media_name or 'Radio' in media_name %}
radio
{% else %}
{{ trigger_id }}
{% endif %}
artist: "{{ trigger.slots.artist }}"
area_or_player_name: "{{ trigger.slots.area_or_player_name }}"
area_or_player_name: "{{ trigger.slots.area_or_player_name | default }}"
assist_device_id: "{{ trigger.device_id }}"
radio_mode_str: "{{ trigger.slots.radio_mode or '' }}"
radio_mode: "{{ 'radio' in radio_mode_str.lower() }}"
action_data:
media_id: "{{ trigger.slots.media_name }}"
media_type: "{{ 'radio' if 'radio' in media_name | lower else trigger_id }}"
artist: "{{ trigger.slots.artist | default }}"
radio_mode: "{{ 'radio' in trigger.slots.radio_mode | default | lower }}"
player_entity_id_by_player_name: >
{{ expand(integration_entities('music_assistant')) |
selectattr("attributes.mass_player_type", 'defined') |
selectattr("attributes.friendly_name", 'equalto', area_or_player_name) |
join(', ', attribute="entity_id") }}
{{ integration_entities('music_assistant') | expand
| selectattr('name', 'match', area_or_player_name ~ '$', ignorecase=true)
| map(attribute='entity_id') | list }}
player_entity_id_by_area_name: >
{{ expand(area_entities(area_or_player_name)) |
selectattr("attributes.mass_player_type", 'defined') |
selectattr("attributes.friendly_name", 'equalto', area_or_player_name) |
join(', ', attribute="entity_id") }}
player_entity_id_by_assist_area: |
{% if assist_device_id and area_id(assist_device_id) %}
{{ expand(area_entities(area_id(assist_device_id))) | selectattr("attributes.mass_player_type", 'defined') | join(', ', attribute="entity_id") }}
{% else %}
None
{% endif %}
{{ areas() | map('area_name') | select('match', area_or_player_name ~ '$',
ignorecase=true) | map('area_entities') | sum(start=[]) | select('in',
integration_entities('music_assistant')) | list }}
player_entity_id_by_assist_area: >
{{ area_entities(area_id(trigger.device_id))
| select('in', integration_entities('music_assistant')) | list }}
mass_player_entity_id: |
{% if player_entity_id_by_player_name %}
{{ player_entity_id_by_player_name }}
{% elif player_entity_id_by_area_name %}
{{ player_entity_id_by_area_name }}
{% elif player_entity_id_by_assist_area %}
{{ player_entity_id_by_assist_area }}
{% else %}
{{ default_player_entity_id }}
{% endif %}
mass_player_name: "{{ state_attr(mass_player_entity_id, 'friendly_name') }}"
- choose:
- conditions:
- condition: template
value_template: "{{ media_type == 'album' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
artist: "{{ artist }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'track' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
artist: "{{ artist }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'artist' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'radio' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
media_type: "{{ media_type }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- conditions:
- condition: template
value_template: "{{ media_type == 'playlist' }}"
sequence:
- action: music_assistant.play_media
metadata: {}
data:
media_id: "{{ media_name }}"
media_type: "{{ media_type }}"
radio_mode: "{{ radio_mode }}"
target:
entity_id: "{{ mass_player_entity_id }}"
{{ player_entity_id_by_player_name or player_entity_id_by_area_name
or player_entity_id_by_assist_area or [default_player_entity_id] }}
mass_player_name: "{{ mass_player_entity_id | map('state_attr', 'friendly_name') | join(', ') }}"
- alias: Send media to selected Music Assistant Player
action: music_assistant.play_media
data: "{{ dict(action_data.items() | selectattr('1')) }}"
target:
entity_id: "{{ mass_player_entity_id }}"
- set_conversation_response: "{{ trigger.slots.media_name }} wordt afgespeeld op {{ mass_player_name }}"
mode: single

0 comments on commit 5e55a7b

Please sign in to comment.