Introduced switch for detailed track output

This commit is contained in:
Jan-Peter von Hunnius 2024-10-19 15:46:32 +02:00
parent e2efe052b5
commit a495f4d4d7

View file

@ -99,19 +99,25 @@ fn parse_best_car(text: String) -> Car {
}
fn parse_tracks(file_name: &str) -> HashMap<u16, String> {
let mut result: HashMap<u16, String> = HashMap::new();
let mut result: HashMap<u16, String> = HashMap::new();
for line in read_to_string(file_name).unwrap().lines() {
let (index, track) = line.split_once(' ').unwrap();
result.insert(index.parse::<u16>().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<String>, 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("")
}