add steam group for teams

This commit is contained in:
Robin Appelman 2024-02-23 19:17:54 +01:00
commit e0c56056a4
7 changed files with 16 additions and 0 deletions

View file

@ -91,6 +91,7 @@ pub struct Team {
pub image: String, pub image: String,
pub format: String, pub format: String,
pub timezone: Option<String>, pub timezone: Option<String>,
pub steam_group: Option<String>,
pub division: String, pub division: String,
pub description: String, pub description: String,
pub titles: Vec<String>, pub titles: Vec<String>,

View file

@ -38,6 +38,8 @@ const SELECTOR_TEAM_NAME_TO_TAG: &str = "td:nth-child(3) small";
const SELECTOR_TEAM_NAME_TO_NAME: &str = "td:nth-child(4) small"; const SELECTOR_TEAM_NAME_TO_NAME: &str = "td:nth-child(4) small";
const SELECTOR_TEAM_NAME_DATE: &str = "td:nth-child(5) small"; const SELECTOR_TEAM_NAME_DATE: &str = "td:nth-child(5) small";
const SELECTOR_STEAM: &str = r#"a.btn.btn-xs.btn-default[href*="//steamcommunity.com/groups"]"#;
pub struct TeamParser { pub struct TeamParser {
selector_name: Selector, selector_name: Selector,
selector_tag: Selector, selector_tag: Selector,
@ -48,6 +50,7 @@ pub struct TeamParser {
selector_team_timezone: Selector, selector_team_timezone: Selector,
selector_team_description: Selector, selector_team_description: Selector,
selector_team_titles: Selector, selector_team_titles: Selector,
selector_steam_group: Selector,
selector_team_member_row: Selector, selector_team_member_row: Selector,
selector_team_member_link: Selector, selector_team_member_link: Selector,
@ -85,6 +88,7 @@ impl TeamParser {
selector_team_timezone: Selector::parse(SELECTOR_TEAM_TIMEZONE).unwrap(), selector_team_timezone: Selector::parse(SELECTOR_TEAM_TIMEZONE).unwrap(),
selector_team_description: Selector::parse(SELECTOR_TEAM_DESCRIPTION).unwrap(), selector_team_description: Selector::parse(SELECTOR_TEAM_DESCRIPTION).unwrap(),
selector_team_titles: Selector::parse(SELECTOR_TEAM_TITLES).unwrap(), selector_team_titles: Selector::parse(SELECTOR_TEAM_TITLES).unwrap(),
selector_steam_group: Selector::parse(SELECTOR_STEAM).unwrap(),
selector_team_member_row: Selector::parse(SELECTOR_TEAM_MEMBER_ROW).unwrap(), selector_team_member_row: Selector::parse(SELECTOR_TEAM_MEMBER_ROW).unwrap(),
selector_team_member_link: Selector::parse(SELECTOR_TEAM_MEMBER_LINK).unwrap(), selector_team_member_link: Selector::parse(SELECTOR_TEAM_MEMBER_LINK).unwrap(),
@ -147,6 +151,11 @@ impl Parser for TeamParser {
})? })?
.to_string(); .to_string();
let steam_group = root
.select(&self.selector_steam_group)
.next()
.and_then(|link| link.attr("href").map(String::from));
let division = select_text(root, &self.selector_team_division) let division = select_text(root, &self.selector_team_division)
.ok_or(ParseError::ElementNotFound { .ok_or(ParseError::ElementNotFound {
selector: SELECTOR_TEAM_DIVISION, selector: SELECTOR_TEAM_DIVISION,
@ -330,6 +339,7 @@ impl Parser for TeamParser {
division, division,
timezone, timezone,
format, format,
steam_group,
image, image,
tag, tag,
titles, titles,

View file

@ -8,6 +8,7 @@ expression: parsed
"image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f7/f75809d7774c917be9883370d772d3099bfe457d_full.jpg", "image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f7/f75809d7774c917be9883370d772d3099bfe457d_full.jpg",
"format": "TF2 Highlander", "format": "TF2 Highlander",
"timezone": "West-Euro", "timezone": "West-Euro",
"steam_group": "http://steamcommunity.com/groups/Melintongpotsss",
"division": "Euro Platinum", "division": "Euro Platinum",
"description": "", "description": "",
"titles": [], "titles": [],

View file

@ -8,6 +8,7 @@ expression: parsed
"image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/09/096a30b1025c586f9d41c686077129f6e86998d0_full.jpg", "image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/09/096a30b1025c586f9d41c686077129f6e86998d0_full.jpg",
"format": "TF2 6vs6", "format": "TF2 6vs6",
"timezone": "West-Euro", "timezone": "West-Euro",
"steam_group": null,
"division": "Europe", "division": "Europe",
"description": "Giel is Jesus", "description": "Giel is Jesus",
"titles": [ "titles": [

View file

@ -8,6 +8,7 @@ expression: parsed
"image": "clan_avatars/32437_thumbnail.jpg", "image": "clan_avatars/32437_thumbnail.jpg",
"format": "TF2 Highlander", "format": "TF2 Highlander",
"timezone": null, "timezone": null,
"steam_group": "http://https://steamcommunity.com/groups/xyxxx-",
"division": "North America", "division": "North America",
"description": "", "description": "",
"titles": [ "titles": [

View file

@ -8,6 +8,7 @@ expression: parsed
"image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbabbd8bab7ccf6d27a9d4ca2e73a76e085bb201_full.jpg", "image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbabbd8bab7ccf6d27a9d4ca2e73a76e085bb201_full.jpg",
"format": "TF2 Highlander", "format": "TF2 Highlander",
"timezone": "West-Euro", "timezone": "West-Euro",
"steam_group": "http://https://steamcommunity.com/groups/XenonxTF2",
"division": "Euro Platinum", "division": "Euro Platinum",
"description": "Contact Kimo or Icewind for everything.", "description": "Contact Kimo or Icewind for everything.",
"titles": [ "titles": [

View file

@ -8,6 +8,7 @@ expression: parsed
"image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/d7/d71ff4e1e2635c3d7c1be8d96bc40b499c665aad_full.jpg", "image": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/d7/d71ff4e1e2635c3d7c1be8d96bc40b499c665aad_full.jpg",
"format": "TF2 Highlander", "format": "TF2 Highlander",
"timezone": null, "timezone": null,
"steam_group": "http://steamcommunity.com/groups/BARNEYANDTHEGANKS",
"division": "NA Platinum", "division": "NA Platinum",
"description": "", "description": "",
"titles": [], "titles": [],