Browse and listen to thousands of radio stations across the globe right from your terminal ๐ŸŒŽ ๐Ÿ“ป ๐ŸŽตโœจ
radio rust tokio web-radio command-line-tool tui

main: cli: play: --volume

Changed files
+9 -4
src
+4 -2
src/main.rs
··· 45 45 .subcommand( 46 46 Command::new("play") 47 47 .about("Play a radio station") 48 - .arg(arg!(<station> "The station to play")), 48 + .arg(arg!(<station> "The station to play")) 49 + .arg(arg!(--volume "Set the initial volume (as a percent)").default_value("100")), 49 50 ) 50 51 .subcommand( 51 52 Command::new("browse") ··· 90 91 Some(("play", args)) => { 91 92 let station = args.value_of("station").unwrap(); 92 93 let provider = matches.value_of("provider").unwrap(); 93 - play::exec(station, provider).await?; 94 + let volume = args.value_of("volume").unwrap().parse::<f32>().unwrap(); 95 + play::exec(station, provider, volume).await?; 94 96 } 95 97 Some(("browse", args)) => { 96 98 let category = args.value_of("category");
+5 -2
src/play.rs
··· 11 11 tui, 12 12 }; 13 13 14 - pub async fn exec(name_or_id: &str, provider: &str) -> Result<(), Error> { 14 + pub async fn exec(name_or_id: &str, provider: &str, default_volume: f32) -> Result<(), Error> { 15 15 let _provider = provider; 16 16 let provider: Box<dyn Provider> = match provider { 17 17 "tunein" => Box::new(Tunein::new()), ··· 61 61 let response = client.get(stream_url).send().unwrap(); 62 62 63 63 let headers = response.headers(); 64 + let volume = Volume::new(default_volume, false); 65 + 64 66 cmd_tx 65 67 .send(State { 66 68 name: match headers ··· 91 93 .to_str() 92 94 .unwrap() 93 95 .to_string(), 94 - volume: Volume::default(), 96 + volume: volume.clone(), 95 97 }) 96 98 .unwrap(); 97 99 let location = response.headers().get("location"); ··· 110 112 111 113 let (_stream, handle) = rodio::OutputStream::try_default().unwrap(); 112 114 let sink = rodio::Sink::try_new(&handle).unwrap(); 115 + sink.set_volume(volume.volume_ratio()); 113 116 let decoder = Mp3Decoder::new(response, frame_tx).unwrap(); 114 117 sink.append(decoder); 115 118