Added the tracks a car ist best for to the output plus the car's configuration
This commit is contained in:
parent
3a826e3903
commit
abda9a3313
2 changed files with 302 additions and 12 deletions
39
src/main.rs
39
src/main.rs
|
|
@ -1,6 +1,7 @@
|
|||
use scraper::{Html, Selector};
|
||||
use std::collections::HashSet;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::env;
|
||||
use std::fs::read_to_string;
|
||||
use std::str::FromStr;
|
||||
use tokio;
|
||||
|
||||
|
|
@ -10,7 +11,7 @@ struct Car {
|
|||
manufacturer: String,
|
||||
model: String,
|
||||
year: u16,
|
||||
// upgrade: String,
|
||||
upgrade: String,
|
||||
}
|
||||
async fn get_page(url: &str) -> String {
|
||||
match reqwest::Client::builder()
|
||||
|
|
@ -42,7 +43,7 @@ fn parse_best_car(text: String) -> Car {
|
|||
manufacturer: String::from(""),
|
||||
model: String::from(""),
|
||||
year: 1900,
|
||||
// upgrade: String::from("000"),
|
||||
upgrade: String::from("000"),
|
||||
};
|
||||
|
||||
let document = Html::parse_document(&text);
|
||||
|
|
@ -86,17 +87,28 @@ fn parse_best_car(text: String) -> Car {
|
|||
Some(rq) => rq.text().collect::<Vec<_>>()[0],
|
||||
};
|
||||
car.rq = u8::from_str(rq).unwrap();
|
||||
/*
|
||||
|
||||
let upgrade_selector = Selector::parse(".carList__item-upgrade ").unwrap();
|
||||
let upgrade_raw = match document.select(&upgrade_selector).next() {
|
||||
None => "",
|
||||
Some(model) => model.text().collect::<Vec<_>>()[0],
|
||||
};
|
||||
car.upgrade = String::from(upgrade_raw).trim().parse().unwrap();
|
||||
*/
|
||||
|
||||
car
|
||||
}
|
||||
|
||||
fn parse_tracks(file_name: &str) -> HashMap<u16, String> {
|
||||
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
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let args: Vec<_> = env::args().collect();
|
||||
|
|
@ -128,15 +140,18 @@ async fn main() {
|
|||
_ => panic!("Too many arguemnts."),
|
||||
}
|
||||
|
||||
let tracks = parse_tracks("tracks.txt");
|
||||
|
||||
let mut keepers: HashSet<String> = HashSet::new();
|
||||
|
||||
for track in min_track..max_track + 1 {
|
||||
let best_car = get_best_car(track, 10).await;
|
||||
let track_name = tracks[&track].clone();
|
||||
let best_car = get_best_car(track, track_name.clone(), 10).await;
|
||||
if best_car.len() > 10 {
|
||||
for level in min_rq..max_rq + 1 {
|
||||
let best_car = get_best_car(track, level).await;
|
||||
let best_car = get_best_car(track, track_name.clone(), level).await;
|
||||
if best_car.len() > 10 {
|
||||
// println!("Best Car under RQ {} for track {}: {}", level, track, best_car);
|
||||
// println!("Best Car under RQ {} for track {} ({}): {}", level, track, track_name, best_car);
|
||||
keepers.insert(best_car);
|
||||
}
|
||||
}
|
||||
|
|
@ -167,7 +182,7 @@ fn parse_argument(args: &Vec<String>, index: usize, min: u16, max: u16) -> u16 {
|
|||
}
|
||||
}
|
||||
|
||||
async fn get_best_car(track: u16, max_level: u16) -> String {
|
||||
async fn get_best_car(track: u16, track_name: String, max_level: u16) -> 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);
|
||||
|
|
@ -175,14 +190,14 @@ async fn get_best_car(track: u16, max_level: u16) -> String {
|
|||
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,
|
||||
// best_car.upgrade,
|
||||
track_name,
|
||||
best_car.upgrade,
|
||||
)
|
||||
} else {
|
||||
String::from("")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue