45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
|
from src.fw_api import get_radios, post_radio_session, get_track_radio, concatinate_endpoint
|
||
|
from src.mpv_control import player
|
||
|
from pyfzf.pyfzf import FzfPrompt
|
||
|
|
||
|
fzf = FzfPrompt()
|
||
|
|
||
|
|
||
|
def list_radios():
|
||
|
radios = get_radios()
|
||
|
count = radios.get('count')
|
||
|
|
||
|
results = radios.get('results')
|
||
|
view = []
|
||
|
for i in results:
|
||
|
index = results.index(i)
|
||
|
id_radio = i.get('id')
|
||
|
name = i.get('name')
|
||
|
view.append(f'{index}.{name}')
|
||
|
|
||
|
selected = fzf.prompt(view, f'--header \'Found {count} radios\'')[0].split('.')[0]
|
||
|
id_radio = results[int(selected)].get('id')
|
||
|
radio_load(id_radio)
|
||
|
|
||
|
|
||
|
def radio_load(id_radio):
|
||
|
requested_radio = {
|
||
|
'custom_radio': id_radio,
|
||
|
'radio_type': 'custom',
|
||
|
'related_object_id': None
|
||
|
}
|
||
|
radio_session_id = post_radio_session(requested_radio).get('id')
|
||
|
for i in range(0, 10):
|
||
|
radio_get_track(radio_session_id)
|
||
|
player.playlist_pos = 0
|
||
|
player.wait_for_playback()
|
||
|
|
||
|
|
||
|
def radio_get_track(radio_session_id):
|
||
|
radio_context = get_track_radio({'session': radio_session_id})
|
||
|
track = radio_context.get('track')
|
||
|
listen_url = track.get('listen_url')
|
||
|
player.playlist_append(concatinate_endpoint(listen_url))
|
||
|
|
||
|
|