95% of time I use Music Assistant either to listen to internet radio or single podcast that is automatically downloaded into machine.
What I wanted to achieve (and managed to) is to easily pick one of latest podcast episodes and start streaming without going into Music Assistant.
Recently I used NodeRed for automations and I’m quite fluent in using it but now I’m slowly migrating to HA automations and have some issues.
Here is my code of pushing entries into input_select:
alias: Załaduj ostatnie Rosiaki
sequence:
- action: mass.get_library
metadata: {}
data:
limit: 5
media_type: track
search: Rosiak
order_by: timestamp_added_desc
response_variable: library_list
- variables:
size: "{{ library_list.tracks| list |count }}"
list: "{{[]}}"
- action: input_select.set_options
data:
options:
- Wybierz
target:
entity_id: input_select.raport_rosiaka_ostatnie
- repeat:
count: "{{size}}"
sequence:
- action: input_select.set_options
data:
options: >-
{{state_attr('input_select.raport_rosiaka_ostatnie',
'options')|list + [library_list.tracks[repeat.index-1].name~'
<'~library_list.tracks[repeat.index-1].uri~'>']}}
target:
entity_id: input_select.raport_rosiaka_ostatnie
description: ""
Maybe you would be able to tell me how to do it better.
- Don’t call
input_select.set_options
in loop. Makelist
variable global, and push entries into input_select at very end - Is there better way to keep technical id than having it as a part of text?
- Use
for_each
loop. Loop onlibrary_list.tracks| list
was resulting in only 1 iteration. Service call output is like:
tracks:
- item_id: "59"
provider: library
name: OPOWIEŚCI ARABSKIE S03E01 Strefa Gazy
version: ""
sort_name: opowieści arabskie s03e01 strefa gazy
uri: library://track/59
.......
track_number: 586
- item_id: "63"
provider: library
name: OPOWIEŚCI ARABSKIE S03E02 Jordania
version: ""
sort_name: opowieści arabskie s03e02 jordania
uri: library://track/63
.....
track_number: 590
- item_id: "60"
provider: library
name: Raport na dziś - 13 listopada 2024
version: ""
sort_name: raport na dziś - 13 listopada 2024
uri: library://track/60
.....
track_number: 587
- item_id: "64"
provider: library
name: Raport na dziś - 20 listopada 2024
version: ""
sort_name: raport na dziś - 20 listopada 2024
uri: library://track/64
.....
As a bonus it’s the way I use it. I’m ok with it but if any suggestions please let me know:
alias: Obsługa raportu rosiaka
description: ""
triggers:
- trigger: state
entity_id:
- input_select.raport_rosiaka_ostatnie
id: wybor
conditions: []
actions:
sequence:
- variables:
st: "{{trigger.to_state.state}}"
uri: "{{st[st.find('<')+1:st.rfind('>')]}}"
- if:
- condition: template
value_template: "{{'library' in uri}}"
then:
- action: mass.play_media
metadata: {}
data:
media_id: "{{uri}}"
media_type: track
enqueue: replace
target:
entity_id: media_player.archos_hello_7
mode: single