From a495f4d4d77a0b2a7f6aa23bec3202b5fa8093f5 Mon Sep 17 00:00:00 2001 From: Jan-Peter von Hunnius Date: Sat, 19 Oct 2024 15:46:32 +0200 Subject: [PATCH] Introduced switch for detailed track output --- src/main.rs | 61 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index 89d6cd7..d952f66 100644 --- a/src/main.rs +++ b/src/main.rs @@ -99,19 +99,25 @@ fn parse_best_car(text: String) -> Car { } fn parse_tracks(file_name: &str) -> HashMap { - let mut result: HashMap = HashMap::new(); + let mut result: HashMap = HashMap::new(); for line in read_to_string(file_name).unwrap().lines() { let (index, track) = line.split_once(' ').unwrap(); result.insert(index.parse::().unwrap(), String::from(track)); } - result + result } #[tokio::main] async fn main() { - let args: Vec<_> = env::args().collect(); + let mut args: Vec<_> = env::args().collect(); + + let mut detailed = false; + if let Some(index_detailed) = args.iter().position(|x| *x == String::from("-d")) { + detailed = true; + args.swap_remove(index_detailed); + } let mut min_track = 4; let mut max_track = 278; @@ -146,22 +152,22 @@ async fn main() { for track in min_track..max_track + 1 { let track_name = match tracks.get(&track) { - None => { String::from("NO TRACK NAME") } - Some(name) => { name.clone() } + None => String::from("NO TRACK NAME"), + Some(name) => name.clone(), }; - let best_car = get_best_car(track, track_name.clone(), max_rq).await; + let best_car = get_best_car(track, track_name.clone(), max_rq, detailed).await; if best_car.len() > 10 { for level in min_rq..max_rq + 1 { - let best_car = get_best_car(track, track_name.clone(), level).await; + let best_car = get_best_car(track, track_name.clone(), level, detailed).await; if best_car.len() > 10 { -// println!("Best Car under RQ {} for track {} ({}): {}", level, track, track_name, best_car); + // println!("Best Car under RQ {} for track {} ({}): {}", level, track, track_name, best_car); keepers.insert(best_car); } } } } -// println!("Keepers:"); + // println!("Keepers:"); for car in keepers { println!("{}", car); } @@ -185,23 +191,38 @@ fn parse_argument(args: &Vec, index: usize, min: u16, max: u16) -> u16 { } } -async fn get_best_car(track: u16, track_name: String, max_level: u16) -> String { +async fn get_best_car(track: u16, track_name: String, max_level: u16, detailed: bool) -> String { let url = format!("https://topdrives.club/ajax/load-best-vehicles?sort_by=level&sortorder=desc&prize=all&level=10%3B{}&acceleration=1%3B50&grip=40%3B110&year=1900%3B2030&seats_count=1%3B9&track={}&page=0", max_level, track); // println!("Getting {}", url); let text = get_page(&url).await; if text.len() > 10 { let best_car = parse_best_car(text); - format!( - "{}{} {} {} {}: {} ({})", - best_car.class, - best_car.rq, - best_car.manufacturer, - best_car.model, - best_car.year, - track_name, - best_car.upgrade, - ) + + match detailed { + true => { + format!( + "{}{} {} {} {}: {} ({})", + best_car.class, + best_car.rq, + best_car.manufacturer, + best_car.model, + best_car.year, + track_name, + best_car.upgrade, + ) + } + false => { + format!( + "{}{} {} {} {}", + best_car.class, + best_car.rq, + best_car.manufacturer, + best_car.model, + best_car.year, + ) + } + } } else { String::from("") }