summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2024-06-04 20:50:46 +0200
committerYuval Adam <_@yuv.al>2024-06-04 20:50:46 +0200
commit355743d349d8f63a5d98246c0f0265812fbb2482 (patch)
treec48c313ebad2949afa96e64d8ed48e1d2b16fdf7 /src/main.rs
parent482a942cd9e62fadee4ee7bc1fd7e8def8a85f71 (diff)
Initial spinner mpsc
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs13
1 files changed, 11 insertions, 2 deletions
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<Channel, InquireError> =
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.");