Introduced switch for detailed track output
This commit is contained in:
parent
e2efe052b5
commit
a495f4d4d7
1 changed files with 41 additions and 20 deletions
61
src/main.rs
61
src/main.rs
|
|
@ -99,19 +99,25 @@ fn parse_best_car(text: String) -> Car {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_tracks(file_name: &str) -> HashMap<u16, String> {
|
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() {
|
for line in read_to_string(file_name).unwrap().lines() {
|
||||||
let (index, track) = line.split_once(' ').unwrap();
|
let (index, track) = line.split_once(' ').unwrap();
|
||||||
result.insert(index.parse::<u16>().unwrap(), String::from(track));
|
result.insert(index.parse::<u16>().unwrap(), String::from(track));
|
||||||
}
|
}
|
||||||
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn 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 min_track = 4;
|
||||||
let mut max_track = 278;
|
let mut max_track = 278;
|
||||||
|
|
@ -146,22 +152,22 @@ async fn main() {
|
||||||
|
|
||||||
for track in min_track..max_track + 1 {
|
for track in min_track..max_track + 1 {
|
||||||
let track_name = match tracks.get(&track) {
|
let track_name = match tracks.get(&track) {
|
||||||
None => { String::from("NO TRACK NAME") }
|
None => String::from("NO TRACK NAME"),
|
||||||
Some(name) => { name.clone() }
|
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 {
|
if best_car.len() > 10 {
|
||||||
for level in min_rq..max_rq + 1 {
|
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 {
|
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);
|
keepers.insert(best_car);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// println!("Keepers:");
|
// println!("Keepers:");
|
||||||
for car in keepers {
|
for car in keepers {
|
||||||
println!("{}", car);
|
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",
|
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);
|
max_level, track);
|
||||||
// println!("Getting {}", url);
|
// println!("Getting {}", url);
|
||||||
let text = get_page(&url).await;
|
let text = get_page(&url).await;
|
||||||
if text.len() > 10 {
|
if text.len() > 10 {
|
||||||
let best_car = parse_best_car(text);
|
let best_car = parse_best_car(text);
|
||||||
format!(
|
|
||||||
"{}{} {} {} {}: {} ({})",
|
match detailed {
|
||||||
best_car.class,
|
true => {
|
||||||
best_car.rq,
|
format!(
|
||||||
best_car.manufacturer,
|
"{}{} {} {} {}: {} ({})",
|
||||||
best_car.model,
|
best_car.class,
|
||||||
best_car.year,
|
best_car.rq,
|
||||||
track_name,
|
best_car.manufacturer,
|
||||||
best_car.upgrade,
|
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 {
|
} else {
|
||||||
String::from("")
|
String::from("")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue