mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-04-18 16:28:55 +00:00
Parse an user with no history more elegantly
This commit is contained in:
parent
c5b304e3f6
commit
33637c9a7b
2 changed files with 37 additions and 34 deletions
|
@ -75,23 +75,26 @@ impl TryFrom<raw::User> for User {
|
||||||
username: raw.username,
|
username: raw.username,
|
||||||
joined: parse_date(&raw.join_date)?,
|
joined: parse_date(&raw.join_date)?,
|
||||||
country: raw.country,
|
country: raw.country,
|
||||||
count_300: parse_from_str(&raw.count300)?,
|
count_300: raw.count300.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
count_100: parse_from_str(&raw.count100)?,
|
count_100: raw.count100.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
count_50: parse_from_str(&raw.count50)?,
|
count_50: raw.count50.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
play_count: parse_from_str(&raw.playcount)?,
|
play_count: raw.playcount.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
played_time: parse_duration(&raw.total_seconds_played)?,
|
played_time: raw
|
||||||
ranked_score: parse_from_str(&raw.ranked_score)?,
|
.total_seconds_played
|
||||||
total_score: parse_from_str(&raw.total_score)?,
|
.map(parse_duration)
|
||||||
count_ss: parse_from_str(&raw.count_rank_ss)?,
|
.unwrap_or(Ok(Duration::from_secs(0)))?,
|
||||||
count_ssh: parse_from_str(&raw.count_rank_ssh)?,
|
ranked_score: raw.ranked_score.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
count_s: parse_from_str(&raw.count_rank_s)?,
|
total_score: raw.total_score.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
count_sh: parse_from_str(&raw.count_rank_sh)?,
|
count_ss: raw.count_rank_ss.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
count_a: parse_from_str(&raw.count_rank_a)?,
|
count_ssh: raw.count_rank_ssh.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
rank: parse_from_str(&raw.pp_rank)?,
|
count_s: raw.count_rank_s.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
country_rank: parse_from_str(&raw.pp_country_rank)?,
|
count_sh: raw.count_rank_sh.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
level: parse_from_str(&raw.level)?,
|
count_a: raw.count_rank_a.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
pp: Some(parse_from_str(&raw.pp_raw)?).filter(|v| *v != 0.0),
|
rank: raw.pp_rank.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
accuracy: parse_from_str(&raw.accuracy)?,
|
country_rank: raw.pp_country_rank.map(parse_from_str).unwrap_or(Ok(0))?,
|
||||||
|
level: raw.level.map(parse_from_str).unwrap_or(Ok(0.0))?,
|
||||||
|
pp: Some(raw.pp_raw.map(parse_from_str).unwrap_or(Ok(0.0))?).filter(|v| *v != 0.0),
|
||||||
|
accuracy: raw.accuracy.map(parse_from_str).unwrap_or(Ok(0.0))?,
|
||||||
events: {
|
events: {
|
||||||
let mut v = Vec::new();
|
let mut v = Vec::new();
|
||||||
for e in raw.events.into_iter() {
|
for e in raw.events.into_iter() {
|
||||||
|
|
|
@ -46,24 +46,24 @@ pub(crate) struct User {
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub username: String,
|
pub username: String,
|
||||||
pub join_date: String,
|
pub join_date: String,
|
||||||
pub count300: String,
|
|
||||||
pub count100: String,
|
|
||||||
pub count50: String,
|
|
||||||
pub playcount: String,
|
|
||||||
pub ranked_score: String,
|
|
||||||
pub total_score: String,
|
|
||||||
pub pp_rank: String,
|
|
||||||
pub level: String,
|
|
||||||
pub pp_raw: String,
|
|
||||||
pub accuracy: String,
|
|
||||||
pub count_rank_ss: String,
|
|
||||||
pub count_rank_ssh: String,
|
|
||||||
pub count_rank_s: String,
|
|
||||||
pub count_rank_sh: String,
|
|
||||||
pub count_rank_a: String,
|
|
||||||
pub country: String,
|
pub country: String,
|
||||||
pub total_seconds_played: String,
|
pub count300: Option<String>,
|
||||||
pub pp_country_rank: String,
|
pub count100: Option<String>,
|
||||||
|
pub count50: Option<String>,
|
||||||
|
pub playcount: Option<String>,
|
||||||
|
pub ranked_score: Option<String>,
|
||||||
|
pub total_score: Option<String>,
|
||||||
|
pub pp_rank: Option<String>,
|
||||||
|
pub level: Option<String>,
|
||||||
|
pub pp_raw: Option<String>,
|
||||||
|
pub accuracy: Option<String>,
|
||||||
|
pub count_rank_ss: Option<String>,
|
||||||
|
pub count_rank_ssh: Option<String>,
|
||||||
|
pub count_rank_s: Option<String>,
|
||||||
|
pub count_rank_sh: Option<String>,
|
||||||
|
pub count_rank_a: Option<String>,
|
||||||
|
pub total_seconds_played: Option<String>,
|
||||||
|
pub pp_country_rank: Option<String>,
|
||||||
pub events: Vec<UserEvent>,
|
pub events: Vec<UserEvent>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue