guess region from timezone

This commit is contained in:
Robin Appelman 2025-04-15 21:33:43 +02:00
commit cf17647408
4 changed files with 4209 additions and 1 deletions

View file

@ -177,7 +177,7 @@ impl Parser for TeamParser {
})? })?
.to_string(); .to_string();
let region = division let mut region = division
.split(' ') .split(' ')
.find_map(|part| Region::from_str(part).ok()) .find_map(|part| Region::from_str(part).ok())
.or_else(|| Region::from_str(division.trim_end_matches("New Teams").trim()).ok()) .or_else(|| Region::from_str(division.trim_end_matches("New Teams").trim()).ok())
@ -185,6 +185,12 @@ impl Parser for TeamParser {
let timezone = select_text(root, &self.selector_team_timezone).map(String::from); let timezone = select_text(root, &self.selector_team_timezone).map(String::from);
if let Some(timezone) = timezone.as_deref() {
if region.is_none() {
region = Region::from_str(timezone).ok();
}
}
let description = select_text(root, &self.selector_team_description) let description = select_text(root, &self.selector_team_description)
.unwrap_or_default() .unwrap_or_default()
.replace('\n', " "); .replace('\n', " ");

4100
tests/data/team_32595.html Normal file

File diff suppressed because it is too large Load diff

View file

@ -41,6 +41,7 @@ fn test_parse_player_details_html(input: &str, name: &str) {
#[test_case("team_2909.html", "team_1v1_sol")] #[test_case("team_2909.html", "team_1v1_sol")]
#[test_case("team_5058.html", "team_empty_name_change2")] #[test_case("team_5058.html", "team_empty_name_change2")]
#[test_case("team_11789.html", "team_space_region")] #[test_case("team_11789.html", "team_space_region")]
#[test_case("team_32595.html", "team_asia_placement")]
#[cfg(feature = "serde")] #[cfg(feature = "serde")]
fn test_parse_team_html(input: &str, name: &str) { fn test_parse_team_html(input: &str, name: &str) {
let body = read_to_string(format!("tests/data/{input}")).unwrap(); let body = read_to_string(format!("tests/data/{input}")).unwrap();

View file

@ -0,0 +1,101 @@
---
source: tests/snapshot.rs
expression: parsed
---
{
"name": "devilish blossom",
"tag": "deBL",
"image": "clan_avatars/32595_thumbnail.jpg",
"format": "6v6",
"region": "asia",
"timezone": "Asia",
"steam_group": "https://steamcommunity.com/groups/ornaminCgroup",
"division": "Waiting for Placement",
"description": "Our time zone is GMT +9 and syn#5501 for schedule :)",
"titles": [],
"members": [
{
"name": "highschoolgirl",
"steam_id": "76561198161465467",
"role": "member",
"since": "+002023-03-04T00:00:00.000000000Z"
},
{
"name": "NoName",
"steam_id": "76561198098224358",
"role": "member",
"since": "+002023-03-04T00:00:00.000000000Z"
},
{
"name": "sinyeon",
"steam_id": "76561198125363469",
"role": "member",
"since": "+002023-03-05T00:00:00.000000000Z"
},
{
"name": "starshopping",
"steam_id": "76561198300632504",
"role": "member",
"since": "+002023-03-05T00:00:00.000000000Z"
},
{
"name": "GreenistFalcon",
"steam_id": "76561198101187664",
"role": "member",
"since": "+002023-03-05T00:00:00.000000000Z"
},
{
"name": "SICSIN",
"steam_id": "76561198083923462",
"role": "member",
"since": "+002023-03-06T00:00:00.000000000Z"
},
{
"name": "Akash",
"steam_id": "76561198066517317",
"role": "member",
"since": "+002023-03-07T00:00:00.000000000Z"
},
{
"name": "1TOP",
"steam_id": "76561198123717811",
"role": "member",
"since": "+002023-03-08T00:00:00.000000000Z"
},
{
"name": "c1earlove",
"steam_id": "76561199165441114",
"role": "member",
"since": "+002023-05-21T00:00:00.000000000Z"
},
{
"name": "ukk",
"steam_id": "76561198178372977",
"role": "member",
"since": "+002023-05-21T00:00:00.000000000Z"
}
],
"results": [
{
"season": 42,
"division": "Waiting for Placement",
"wins": 0,
"losses": 0
},
{
"season": 40,
"division": "Waiting for Placement",
"wins": 6,
"losses": 10
}
],
"name_changes": [
{
"from_tag": "deBL",
"from": "devilish blossom",
"to_tag": "deBL",
"to": "devilish blossom",
"date": "2023-03-04"
}
]
}