Browse and listen to thousands of radio stations across the globe right from your terminal ๐ŸŒŽ ๐Ÿ“ป ๐ŸŽตโœจ
radio rust tokio web-radio command-line-tool tui
at main 1.1 kB view raw
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}