mirror of
https://github.com/redstrate/Auracite.git
synced 2025-05-01 16:37:45 +00:00
Begin parsing free company, fix issue when parsing catgirls
This commit is contained in:
parent
0312725624
commit
75eca93f0d
3 changed files with 14 additions and 3 deletions
|
@ -53,6 +53,8 @@ pub struct CharacterData {
|
||||||
pub tribe: TribeValue,
|
pub tribe: TribeValue,
|
||||||
pub classjob_levels: Vec<ClassJobValue>,
|
pub classjob_levels: Vec<ClassJobValue>,
|
||||||
pub grand_company: GrandCompanyValue,
|
pub grand_company: GrandCompanyValue,
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
pub free_company: Option<String>,
|
||||||
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub currencies: Option<Currencies>,
|
pub currencies: Option<Currencies>,
|
||||||
|
|
|
@ -42,6 +42,7 @@ const FACE_IMG_SELECTOR: &str = ".frame__chara__face > img";
|
||||||
const PORTRAIT_IMG_SELECTOR: &str = ".character__detail__image > a > img";
|
const PORTRAIT_IMG_SELECTOR: &str = ".character__detail__image > a > img";
|
||||||
const NAMEDAY_SELECTOR: &str = ".character-block__birth";
|
const NAMEDAY_SELECTOR: &str = ".character-block__birth";
|
||||||
const CLASSJOB_SELECTOR: &str = ".character__level__list > ul > li";
|
const CLASSJOB_SELECTOR: &str = ".character__level__list > ul > li";
|
||||||
|
const FREE_COMPANY_SELECTOR: &str = ".character__freecompany__name > p";
|
||||||
|
|
||||||
/// Parses the HTML from `data` and returns `CharacterData`. The data may be incomplete.
|
/// Parses the HTML from `data` and returns `CharacterData`. The data may be incomplete.
|
||||||
pub fn parse_lodestone(data: &str) -> CharacterData {
|
pub fn parse_lodestone(data: &str) -> CharacterData {
|
||||||
|
@ -73,8 +74,9 @@ pub fn parse_lodestone(data: &str) -> CharacterData {
|
||||||
.select(&Selector::parse(CHARACTER_BLOCK_NAME_SELECTOR).unwrap())
|
.select(&Selector::parse(CHARACTER_BLOCK_NAME_SELECTOR).unwrap())
|
||||||
.nth(0)
|
.nth(0)
|
||||||
{
|
{
|
||||||
let re = Regex::new(r"(\w+)<br>(\w+)\s\/\s(\W)").unwrap();
|
let re = Regex::new(r"([^<]+)<br>([^\/]+)\s\/\s(\W)").unwrap();
|
||||||
let inner_html = block_name.inner_html();
|
let inner_html = block_name.inner_html();
|
||||||
|
dbg!(&inner_html);
|
||||||
let captures = re.captures(&inner_html).unwrap();
|
let captures = re.captures(&inner_html).unwrap();
|
||||||
|
|
||||||
char_data.race =
|
char_data.race =
|
||||||
|
@ -119,6 +121,13 @@ pub fn parse_lodestone(data: &str) -> CharacterData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(block_name) = element
|
||||||
|
.select(&Selector::parse(FREE_COMPANY_SELECTOR).unwrap())
|
||||||
|
.nth(0)
|
||||||
|
{
|
||||||
|
char_data.free_company = Some(block_name.inner_html().as_str().to_string());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for element in document.select(&Selector::parse(FACE_IMG_SELECTOR).unwrap()) {
|
for element in document.select(&Selector::parse(FACE_IMG_SELECTOR).unwrap()) {
|
||||||
|
|
|
@ -179,7 +179,7 @@ impl TryFrom<&str> for RaceValue {
|
||||||
"Hyur" => 1,
|
"Hyur" => 1,
|
||||||
"Elezen" => 2,
|
"Elezen" => 2,
|
||||||
"Lalafell" => 3,
|
"Lalafell" => 3,
|
||||||
"Miqote" => 4,
|
"Miqo'te" => 4,
|
||||||
"Roegadyn" => 5,
|
"Roegadyn" => 5,
|
||||||
"AuRa" => 6,
|
"AuRa" => 6,
|
||||||
"Hrothgar" => 7,
|
"Hrothgar" => 7,
|
||||||
|
@ -214,7 +214,7 @@ impl TryFrom<&str> for TribeValue {
|
||||||
"Plainsfolk" => 5,
|
"Plainsfolk" => 5,
|
||||||
"Dunesfolk" => 6,
|
"Dunesfolk" => 6,
|
||||||
"Seeker" => 7,
|
"Seeker" => 7,
|
||||||
"Keeper" => 8,
|
"Keeper of the Moon" => 8,
|
||||||
"SeaWolf" => 9,
|
"SeaWolf" => 9,
|
||||||
"Hellsguard" => 10,
|
"Hellsguard" => 10,
|
||||||
"Raen" => 11,
|
"Raen" => 11,
|
||||||
|
|
Loading…
Add table
Reference in a new issue