From 5bfe7364c25f954dbe75d00e8e532e8cc13ec691 Mon Sep 17 00:00:00 2001 From: Ivan Bushchik Date: Mon, 29 Jan 2024 08:45:22 +0300 Subject: [PATCH] 0.1.2: fix track picking Signed-off-by: Ivan Bushchik --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/main.rs | 20 ++++++++++++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a4b0066..21145c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -320,7 +320,7 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lonelyradio" -version = "0.1.1" +version = "0.1.2" dependencies = [ "chrono", "clap", diff --git a/Cargo.toml b/Cargo.toml index 4391675..274cc32 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "lonelyradio" description = "TCP radio for singles" -version = "0.1.1" +version = "0.1.2" edition = "2021" license = "MIT" authors = [ "Ivan Bushchik " ] diff --git a/src/main.rs b/src/main.rs index 5749676..eae6de4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,6 +33,21 @@ fn is_not_hidden(entry: &DirEntry) -> bool { entry.file_name().to_str().map(|s| entry.depth() == 0 || !s.starts_with('.')).unwrap_or(false) } +// Recursively finding music file +fn pick_track(tracklist: &Vec) -> &PathBuf { + let mut track = tracklist.choose(&mut thread_rng()).unwrap(); + while !track.metadata().unwrap().is_file() { + track = pick_track(tracklist) + } + // Skipping "images" (covers) + while "jpgjpegpngwebp" + .contains(&track.extension().unwrap().to_str().unwrap().to_ascii_lowercase()) + { + track = pick_track(tracklist) + } + track +} + async fn stream(mut s: TcpStream) { let tracklist = walkdir::WalkDir::new(Args::parse().dir) .into_iter() @@ -41,10 +56,7 @@ async fn stream(mut s: TcpStream) { .map(|x| x.into_path()) .collect::>(); 'track: loop { - let mut track = tracklist.choose(&mut thread_rng()).unwrap(); - while !track.metadata().unwrap().is_file() { - track = tracklist.choose(&mut thread_rng()).unwrap() - } + let track = pick_track(&tracklist); println!( "[{}] {} to {}", Local::now().to_rfc3339(),