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("")
|
||||
|
|
|
|||
275
tracks.txt
Normal file
275
tracks.txt
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
4 0-100-0 Dry
|
||||
5 0-100-0 Wet
|
||||
6 0-100-0 Dirt
|
||||
7 0-100 Dry
|
||||
8 0-100 Wet
|
||||
9 0-100 Dirt
|
||||
10 0-100 Gravel
|
||||
11 0-120 Dry
|
||||
12 0-120 Wet
|
||||
13 0-150-0 Dry
|
||||
14 0-150 Dry
|
||||
15 0-150 Dirt
|
||||
16 0-150 Wet
|
||||
17 0-170 Dry
|
||||
18 0-200 Dry
|
||||
19 1 Mile Drag Dry
|
||||
20 1 Mile Drag Wet
|
||||
21 1 Mile Drag Dirt
|
||||
22 1 Mile Drag Gravel
|
||||
23 Mile Drag Sand
|
||||
24 Mile Drag Snow
|
||||
25 1 Mile Drag (R) Dry
|
||||
26 1/2 Mile Drag Dry
|
||||
27 1/2 Mile Drag Wet
|
||||
28 1/2 Mile Drag Dirt, Wet
|
||||
29 1/2 Mile Drag Gravel
|
||||
30 1/2 Mile Drag Sand
|
||||
31 1/2 Mile Drag Snow
|
||||
32 1/4 Mile Drag Dry
|
||||
33 1/4 Mile Drag Wet
|
||||
34 1/4 Mile Drag Dirt, Wet
|
||||
35 1/4 Mile Drag Gravel
|
||||
36 1/4 Mile Drag Sand
|
||||
37 1/4 Mile Drag Snow
|
||||
38 1/4 Mile Drag Ice
|
||||
39 1/4 Mile Drag (R) Dry
|
||||
40 100-150 (R) Dry
|
||||
41 30-130 (R) Dry
|
||||
42 50-150 (R) Dry
|
||||
43 75-125 (R) Dry
|
||||
44 75-125 (R) Wet
|
||||
45 Airplane Hangars Dry
|
||||
46 Airplane Hangars Wet
|
||||
47 Airplane Slalom Dirt
|
||||
48 Back Road Asphalt, Dirt, Wet
|
||||
49 Butte Asphalt, Dirt
|
||||
50 Canyon Butte Asphalt, Dirt, Wet
|
||||
51 Canyon Butte Sand, Dirt
|
||||
52 Canyon Dirt Road Asphalt, Dirt, Wet
|
||||
53 Canyon Dirt Road Sand, Dirt
|
||||
54 Canyon Lookout Dirt, Wet
|
||||
55 Canyon Lookout Sand
|
||||
56 Canyon Tour Wet
|
||||
57 Canyon Tour Dirt
|
||||
58 Canyon Tour Sand
|
||||
59 Canyon Tour Snow
|
||||
60 Car Park Dry
|
||||
61 Car Park Wet
|
||||
62 City Slalom Dry
|
||||
63 City Slalom Wet
|
||||
64 City Slalom Snow
|
||||
65 City Sprint Dry
|
||||
66 City Sprint Wet
|
||||
67 City Streets Medium Dry
|
||||
68 City Streets Medium Wet
|
||||
69 City Streets Medium Sand
|
||||
70 City Streets Medium Snow
|
||||
71 City Streets Small Dry
|
||||
72 City Streets Small Wet
|
||||
73 City Streets Small Sand
|
||||
74 City Streets Small Snow
|
||||
75 City Tour Dry
|
||||
76 City Tour Wet
|
||||
77 City Tour Snow
|
||||
78 Cross Country Asphalt, Grass, Dirt
|
||||
79 Desert Rally Big Asphalt, Dirt
|
||||
80 Desert Rally Dirt Asphalt, Dirt
|
||||
81 Desert Rally Hill Asphalt, Dirt
|
||||
82 Desert Rally Small Asphalt, Dirt
|
||||
83 Dirt Road Asphalt, Dirt
|
||||
84 Fast Circuit Dry
|
||||
85 Fast Circuit Wet
|
||||
86 Fast Circuit (R) Dry
|
||||
87 Field Slalom Asphalt, Grass, Dirt
|
||||
88 Field Slalom Grass
|
||||
89 Figure Of Eight Wet
|
||||
90 Figure Of Eight Asphalt, Sand
|
||||
91 Figure Of Eight Asphalt, Gravel
|
||||
92 Figure Of Eight Asphalt, Snow
|
||||
93 Forest River Crossing Asphalt, Dirt, Wet
|
||||
94 Forest River Crossing Asphalt, Dirt
|
||||
95 Forest River Crossing Asphalt, Gravel
|
||||
96 Forest Road Dry
|
||||
97 Forest Road Wet
|
||||
98 Forest Road Snow
|
||||
99 Forest Road Ice
|
||||
100 Forest Slalom Dirt
|
||||
101 Forest Slalom Dirt, Wet
|
||||
102 Forest Slalom Gravel
|
||||
103 Forest Slalom Snow
|
||||
104 Forest Slalom Ice
|
||||
105 Forest Slalom Grass
|
||||
106 Forest Slalom Grass, Wet
|
||||
107 Frozen Lake Asphalt, Snow
|
||||
108 Frozen River Slalom Ice
|
||||
109 G-Force Test Dry
|
||||
110 G-Force Test Wet
|
||||
111 G-Force Test Dirt
|
||||
112 G-Force Test Dirt, Wet
|
||||
113 G-Force Test Gravel
|
||||
114 G-Force Test Sand
|
||||
115 G-Force Test Snow
|
||||
116 G-Force Test Ice
|
||||
117 G-Force Test (R) Dry
|
||||
118 Hairpin Road Dry
|
||||
119 Hairpin Road Wet
|
||||
120 Hairpin Road Dirt
|
||||
121 Hairpin Road Gravel
|
||||
122 Hairpin Road Sand
|
||||
122 Hairpin Road Snow
|
||||
124 Hill Climb Dry
|
||||
125 Hill Climb Wet
|
||||
126 Hill Climb Dirt
|
||||
127 Hill Climb Dirt, Wet
|
||||
128 Hill Climb Gravel
|
||||
129 Hill Climb Sand
|
||||
130 Hill Climb Snow
|
||||
131 Hill Climb (R) Dirt
|
||||
132 Indoor Karting Dry
|
||||
133 Karting Circuit Dry
|
||||
134 Karting Circuit Wet
|
||||
135 L-Shape Drag Dry
|
||||
136 L-Shape Drag Wet
|
||||
137 Laguna Seca Dry
|
||||
138 Laguna Seca Wet
|
||||
139 Lookout Dirt
|
||||
140 Lumber Mill Twisty Circuit Asphalt, Dirt
|
||||
141 Monaco G-Force Test Dry
|
||||
142 Monaco G-Force Test Wet
|
||||
143 Monaco Hairpin Dry
|
||||
144 Monaco Hairpin Wet
|
||||
145 Monaco Hairpin Asphalt, Dirt, Wet
|
||||
146 Monaco Hairpin Asphalt, Dirt
|
||||
147 Monaco Narrow Streets Dry
|
||||
148 Monaco Narrow Streets Wet
|
||||
149 Monaco Streets Dry
|
||||
150 Monaco Streets Wet
|
||||
151 Monaco Streets Long Dry
|
||||
152 Monaco Streets Long Wet
|
||||
153 Motocross Track Dirt
|
||||
154 Motocross Track Wet
|
||||
155 Mountain Hairpin Dry
|
||||
156 Mountain Hairpin Wet
|
||||
157 Mountain Hairpin Dirt
|
||||
158 Mountain Hairpin Dirt, Wet
|
||||
159 Mountain Hairpin Snow
|
||||
160 Mountain Hill Climb Dry
|
||||
161 Mountain Hill Climb Wet
|
||||
162 Mountain Hill Climb Dirt
|
||||
163 Mountain Hill Climb Dirt, Wet
|
||||
164 Mountain Hill Climb Snow
|
||||
165 Mountain Incline Road Dry
|
||||
166 Mountain Incline Road Wet
|
||||
167 Mountain Incline Road Dirt
|
||||
168 Mountain Incline Road Dirt, Wet
|
||||
169 Mountain Incline Road Snow
|
||||
170 Mountain Slalom Dry
|
||||
171 Mountain Slalom Wet
|
||||
172 Mountain Slalom Dirt
|
||||
173 Mountain Slalom Dirt, Wet
|
||||
174 Mountain Slalom Snow
|
||||
175 Mountain Tour Dry
|
||||
176 Mountain Tour Wet
|
||||
177 Mountain Tour Dirt
|
||||
178 Mountain Tour Dirt, Wet
|
||||
179 Mountain Tour Snow
|
||||
180 Mountain Twisty Road Dry
|
||||
181 Mountain Twisty Road Wet
|
||||
182 Mountain Twisty Road Dirt
|
||||
183 Mountain Twisty Road Dirt, Wet
|
||||
184 Mountain Twisty Road Snow
|
||||
185 North Loop Dry
|
||||
186 North Loop Wet
|
||||
187 North Loop Relay 1 Dry
|
||||
188 North Loop Relay 1 Snow
|
||||
189 North Loop Relay 2 Dry
|
||||
190 North Loop Relay 2 Snow
|
||||
191 North Loop Relay 3 Dry
|
||||
192 North Loop Relay 3 Wet
|
||||
193 North Loop Relay 4 Dry
|
||||
194 North Loop Relay 4 Wet
|
||||
195 North Loop Relay 4 Snow
|
||||
196 North Loop Relay 5 Dry
|
||||
197 North Loop Relay 5 Wet
|
||||
198 North Loop Relay 5 Snow
|
||||
199 Ocean Beach Slalom Asphalt, Sand
|
||||
200 Ocean Beach Slalom Asphalt, Sand, Wet
|
||||
201 Ocean City Streets Dry
|
||||
202 Ocean City Streets Wet
|
||||
203 Ocean Highway Dry
|
||||
204 Ocean Highway Wet
|
||||
205 Ocean Long Drag Dry
|
||||
206 Ocean Long Drag Wet
|
||||
207 Ocean Parking Lot Dry
|
||||
208 Ocean Parking Lot Wet
|
||||
209 Ocean Short Drag Dry
|
||||
210 Ocean Short Drag Wet
|
||||
211 Rallycross Medium Asphalt, Dirt, Wet
|
||||
212 Rallycross Medium Asphalt, Dirt
|
||||
213 Rallycross Small Asphalt, Dirt, Wet
|
||||
214 Rallycross Small Asphalt, Dirt
|
||||
215 River Sprint Ice, Snow
|
||||
216 Runway Drag Dry
|
||||
217 Runway Drag Wet
|
||||
218 Runway Drag & Slalom Dry
|
||||
219 Runway Drag & Slalom Wet
|
||||
220 Runway Loop Dry
|
||||
221 Runway Loop Wet
|
||||
222 Service Roads Dry
|
||||
223 Service Roads Wet
|
||||
224 Service Roads Dirt
|
||||
225 Slalom Test Dry
|
||||
226 Slalom Test Wet
|
||||
227 Slalom Test Dirt
|
||||
228 Slalom Test Dirt, Wet
|
||||
229 Slalom Test Gravel
|
||||
230 Slalom Test Sand
|
||||
231 Slalom Test Snow
|
||||
232 Slalom Test Ice
|
||||
233 Slalom Test (R) Dry
|
||||
234 Speedbump 1/2km Dry
|
||||
235 Speedbump 1/2km Snow
|
||||
236 Speedbump 1km Dry
|
||||
237 Test Bowl Dry
|
||||
238 Test Bowl Wet
|
||||
239 Test Bowl Dirt
|
||||
240 Test Bowl Snow
|
||||
241 Test Bowl (R) Dry
|
||||
242 Test Bowl (R) Wet
|
||||
243 Test Bowl (R) Gravel
|
||||
244 Test Bowl (R) Snow
|
||||
245 Tokyo Bridge Dry
|
||||
246 Tokyo Bridge Wet
|
||||
247 Tokyo Drag Dry
|
||||
248 Tokyo Drag Wet
|
||||
249 Tokyo G-Force Test Dry
|
||||
250 Tokyo G-Force Test Wet
|
||||
251 Tokyo Loop (R) Dry
|
||||
252 Tokyo Loop (R) Wet
|
||||
253 Tokyo Off Ramp (R) Dry
|
||||
254 Tokyo Off Ramp (R) Wet
|
||||
255 Tokyo Overpass (R) Dry
|
||||
256 Tokyo Overpass (R) Wet
|
||||
257 Twisty Circuit Dry
|
||||
258 Twisty Circuit Wet
|
||||
259 Twisty Circuit Dirt
|
||||
260 Twisty Circuit Sand
|
||||
261 Twisty Circuit Snow
|
||||
262 Twisty Circuit (R) Dry
|
||||
263 Twisty Circuit (R) Wet
|
||||
264 Twisty Road Dry
|
||||
265 Twisty Road Wet
|
||||
266 Twisty Road Dirt
|
||||
267 Twisty Road Dirt, Wet
|
||||
268 Twisty Road Gravel
|
||||
269 Twisty Road Sand
|
||||
270 Twisty Road Snow
|
||||
271 Twisty Road Ice
|
||||
272 Waterfront Drag Dry
|
||||
273 Waterfront Drag Wet
|
||||
274 0-60 Gravel
|
||||
275 0-60-0 Wet
|
||||
276 0-60-0 Sand
|
||||
277 Lumber Mill Twisty Circuit Asphalt, Dirt, Wet
|
||||
278 Lumber Mill Twisty Circuit Snow, Dirt, Wet
|
||||
Loading…
Add table
Add a link
Reference in a new issue