From 355743d349d8f63a5d98246c0f0265812fbb2482 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Tue, 4 Jun 2024 20:50:46 +0200 Subject: Initial spinner mpsc --- src/main.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 10c7d6f..19442a6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ use crate::channels::Channel; use channels::get_stream_url; use inquire::{InquireError, Select}; use spinners::{Spinner, Spinners}; +use tokio::sync::mpsc; mod audio; mod channels; @@ -15,6 +16,8 @@ async fn main() { let ans: Result = Select::new("Select channel from list:", channels).prompt(); + let (tx, mut rx) = mpsc::channel(5); + match ans { Ok(ch) => { let mut sp = Spinner::new(Spinners::Dots, "Fetching channel streams...".into()); @@ -22,8 +25,14 @@ async fn main() { let url = get_stream_url(&playlist).await.unwrap(); sp.stop_with_newline(); - let _sp = Spinner::new(Spinners::Arrow3, format!("Playing {}", ch.title)); - audio::get_backend().play(&url).await + sp = Spinner::new(Spinners::Arrow3, format!("Playing {}", ch.title)); + tokio::spawn(async move { + while let Some(title) = rx.recv().await { + sp.stop_with_newline(); + sp = Spinner::new(Spinners::Arrow3, title); + } + }); + audio::get_backend().play(&url, tx).await } Err(_e) => { println!("\nNo channel selected, exiting."); -- cgit v1.3.1