funkwlmpv/src/fw_radios.py

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))