This commit is contained in:
parent
d1061daf11
commit
245e9c8628
1 changed files with 59 additions and 8 deletions
|
@ -1,10 +1,23 @@
|
||||||
use indexmap::IndexMap;
|
use indexmap::IndexMap;
|
||||||
use serde_json::Value;
|
use serde_derive::Deserialize;
|
||||||
|
use serde_json::{json, Value};
|
||||||
|
|
||||||
use crate::data_source::{DataSource, Stat};
|
use crate::data_source::{DataSource, Stat};
|
||||||
use crate::ChampInfo;
|
use crate::ChampInfo;
|
||||||
|
|
||||||
pub struct PBDataSource;
|
pub struct PBDataSource;
|
||||||
|
|
||||||
|
#[derive(Deserialize, Debug)]
|
||||||
|
struct ChampionResponse {
|
||||||
|
champions: Vec<Champion>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Debug)]
|
||||||
|
struct Champion {
|
||||||
|
key: String,
|
||||||
|
name: String
|
||||||
|
}
|
||||||
|
|
||||||
impl DataSource for PBDataSource {
|
impl DataSource for PBDataSource {
|
||||||
fn init(&self, _client: &ureq::Agent) {}
|
fn init(&self, _client: &ureq::Agent) {}
|
||||||
|
|
||||||
|
@ -13,22 +26,60 @@ impl DataSource for PBDataSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_timeout(&self) -> u64 {
|
fn get_timeout(&self) -> u64 {
|
||||||
0
|
300
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_champs_with_positions(
|
fn get_champs_with_positions(
|
||||||
&self,
|
&self,
|
||||||
_client: &ureq::Agent,
|
client: &ureq::Agent,
|
||||||
) -> IndexMap<u32, Vec<String>> {
|
) -> IndexMap<u32, Vec<String>> {
|
||||||
IndexMap::new()
|
let mut champs = IndexMap::new();
|
||||||
|
|
||||||
|
let page = client
|
||||||
|
.get("https://www.probuilds.net/ajax/championListNew")
|
||||||
|
.set("Accept", "application/json")
|
||||||
|
.call().unwrap().into_string().unwrap();
|
||||||
|
|
||||||
|
let data: ChampionResponse =
|
||||||
|
serde_json::from_str(&page).unwrap();
|
||||||
|
|
||||||
|
for champ in data.champions {
|
||||||
|
champs.insert(champ.key.parse::<u32>().unwrap(), vec!["ANY".to_owned()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
champs
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_champ_data_with_win_pourcentage(
|
fn get_champ_data_with_win_pourcentage(
|
||||||
&self,
|
&self,
|
||||||
_champ: &ChampInfo,
|
champ: &ChampInfo,
|
||||||
_positions: &[String],
|
positions: &[String],
|
||||||
_client: &ureq::Agent,
|
client: &ureq::Agent,
|
||||||
) -> Vec<(String, Vec<Value>, Stat)> {
|
) -> Vec<(String, Vec<Value>, Stat)> {
|
||||||
vec![]
|
|
||||||
|
let mut builds = vec![];
|
||||||
|
|
||||||
|
let page = client
|
||||||
|
.get(format!("https://www.probuilds.net/ajax/games?limit=1&sort=gameDate-desc&championId={}&olderThan=0&lane=®ion=", champ.key).as_str())
|
||||||
|
.set("Accept", "application/json")
|
||||||
|
.call().unwrap().into_string().unwrap();
|
||||||
|
|
||||||
|
let mut items = vec![];
|
||||||
|
let mut build = &page[page.find("'items'").unwrap()..];
|
||||||
|
while build.contains("items") {
|
||||||
|
let pos = build.find("data-id=").unwrap();
|
||||||
|
build = &build[pos+10..];
|
||||||
|
let end = build.find('\\').unwrap();
|
||||||
|
items.push(&build[..end]);
|
||||||
|
build = &build[pos+22..];
|
||||||
|
}
|
||||||
|
|
||||||
|
builds.push((positions[0].to_owned(), vec![json!({
|
||||||
|
"items": items.iter().map(|x| json!({"id": x.to_string(), "count": 1})).collect::<Vec<Value>>(),
|
||||||
|
"type": "Set"
|
||||||
|
})], Stat{win_rate:0.0,games:1,kda:0.0,patch:"".to_string()}));
|
||||||
|
|
||||||
|
|
||||||
|
builds
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue