somafm 0.5.1

A Rust-based command line player for SomaFM radio
use crate::channels::Channel;
use channels::get_stream_url;
use inquire::{InquireError, Select};
use spinners::{Spinner, Spinners};

mod audio;
mod channels;

#[tokio::main]
async fn main() {
    let mut sp = Spinner::new(Spinners::Dots, "Loading SomaFM channels...".into());
    let channels = channels::get_channels().await;
    sp.stop_with_newline();

    let ans: Result<Channel, InquireError> =
        Select::new("Select channel from list:", channels).prompt();

    match ans {
        Ok(ch) => {
            let mut sp = Spinner::new(Spinners::Dots, "Fetching channel streams...".into());
            let playlist = ch.get_playlist();
            let url = get_stream_url(&playlist).await.unwrap();
            sp.stop_with_newline();

            let mut sp = Spinner::new(Spinners::Arrow3, format!("Playing {} at {}", ch.title, url));
            sp.stop_with_newline();

            let _sp = Spinner::new(Spinners::Arrow3, String::new());
            audio::get_backend().play(&url).await
        }
        Err(_e) => {
            println!("\nNo channel selected, exiting.");
        }
    }
}