Browse and listen to thousands of radio stations across the globe right from your terminal ๐ ๐ป ๐ตโจ
radio
rust
tokio
web-radio
command-line-tool
tui
1use anyhow::Error;
2use owo_colors::OwoColorize;
3
4use crate::provider::{radiobrowser::Radiobrowser, tunein::Tunein, Provider};
5
6pub async fn exec(query: &str, provider: &str) -> Result<(), Error> {
7 let provider: Box<dyn Provider> = match provider {
8 "tunein" => Box::new(Tunein::new()),
9 "radiobrowser" => Box::new(Radiobrowser::new().await),
10 _ => {
11 return Err(anyhow::anyhow!(format!(
12 "Unsupported provider '{}'",
13 provider
14 )))
15 }
16 };
17 let results = provider.search(query.to_string()).await?;
18 let query = format!("\"{}\"", query);
19 println!("Results for {}:", query.bright_green());
20
21 if results.is_empty() {
22 println!("No results found");
23 return Ok(());
24 }
25
26 for result in results {
27 match result.playing {
28 Some(playing) => println!(
29 "{} | {} | id: {}",
30 result.name.magenta(),
31 playing,
32 result.id
33 ),
34 None => println!("{} | id: {}", result.name.magenta(), result.id),
35 }
36 }
37 Ok(())
38}