mirror of
https://codeberg.org/icewind/ugc-scaper.git
synced 2026-06-03 18:24:10 +02:00
optional team image
This commit is contained in:
parent
3b5d3f2efc
commit
f6e157363c
6 changed files with 980 additions and 21 deletions
4
api-server/Cargo.lock
generated
4
api-server/Cargo.lock
generated
|
|
@ -1964,7 +1964,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "ugc-scraper"
|
||||
version = "0.5.0"
|
||||
source = "git+https://github.com/icewind1991/ugc-scaper#2d1565117d2b9e9933c0608f00809f6815420156"
|
||||
source = "git+https://github.com/icewind1991/ugc-scaper#11fd39295c24cabb6198be51f0107df9cfb740e7"
|
||||
dependencies = [
|
||||
"regex",
|
||||
"reqwest",
|
||||
|
|
@ -1979,7 +1979,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "ugc-scraper-types"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/icewind1991/ugc-scaper#2d1565117d2b9e9933c0608f00809f6815420156"
|
||||
source = "git+https://github.com/icewind1991/ugc-scaper#11fd39295c24cabb6198be51f0107df9cfb740e7"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"steamid-ng",
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ rustPlatform.buildRustPackage rec {
|
|||
cargoLock = {
|
||||
lockFile = ./api-server/Cargo.lock;
|
||||
outputHashes = {
|
||||
"ugc-scraper-0.5.0" = "sha256-umMGHYKSSor5Co7eIb0lDpEUWS/qFscX7TpDGMXecRo=";
|
||||
"ugc-scraper-0.5.0" = "sha256-PvGlLEVS/C9j3TfhzFPtD2/0pDMqmZnaD2rm2xKgtw4=";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,19 +138,14 @@ impl Parser for TeamParser {
|
|||
_ => {}
|
||||
};
|
||||
|
||||
let image =
|
||||
document
|
||||
.select(&self.selector_image)
|
||||
.next()
|
||||
.ok_or(ParseError::ElementNotFound {
|
||||
selector: SELECTOR_TEAM_IMAGE,
|
||||
role: "team image",
|
||||
})?;
|
||||
let image = image
|
||||
.attr("data-cfsrc")
|
||||
.or_else(|| image.attr("src"))
|
||||
.unwrap_or_default()
|
||||
.to_string();
|
||||
let image = document.select(&self.selector_image).next();
|
||||
let image = image.and_then(|image| {
|
||||
image
|
||||
.attr("data-cfsrc")
|
||||
.or_else(|| image.attr("src"))
|
||||
.filter(|image| !image.ends_with("team_avatar_placeholder.png"))
|
||||
.map(String::from)
|
||||
});
|
||||
|
||||
let format = select_text(root, &self.selector_team_format)
|
||||
.ok_or(ParseError::ElementNotFound {
|
||||
|
|
|
|||
954
types/Cargo.lock
generated
954
types/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -12,7 +12,9 @@ steamid-ng = "1.0.0"
|
|||
serde = { version = "1.0.215", features = ["derive"], optional = true }
|
||||
time = { version = "0.3.36", features = ["parsing", "macros"] }
|
||||
thiserror = "2.0.12"
|
||||
sqlx = { version = "0.8.4", default-features = false, features = ["derive"], optional = true }
|
||||
|
||||
[features]
|
||||
serde = ["dep:serde", "time/serde", "time/formatting"]
|
||||
sqlx = ["dep:sqlx"]
|
||||
default = ["serde"]
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ pub struct MembershipHistory {
|
|||
pub struct Team {
|
||||
pub name: String,
|
||||
pub tag: String,
|
||||
pub image: String,
|
||||
pub image: Option<String>,
|
||||
pub format: GameMode,
|
||||
pub region: Option<Region>,
|
||||
pub timezone: Option<String>,
|
||||
|
|
@ -125,7 +125,7 @@ pub struct Team {
|
|||
pub name_changes: Vec<NameChange>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
#[cfg_attr(feature = "serde", serde(rename_all = "lowercase"))]
|
||||
pub enum Class {
|
||||
|
|
@ -179,9 +179,12 @@ pub struct Membership {
|
|||
pub since: OffsetDateTime,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||
#[cfg_attr(feature = "serde", serde(rename_all = "lowercase"))]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(type_name = "membership_role"))]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(rename_all = "lowercase"))]
|
||||
pub enum MembershipRole {
|
||||
Leader,
|
||||
Member,
|
||||
|
|
@ -316,6 +319,9 @@ pub struct InvalidGameMode {
|
|||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(type_name = "game_mode"))]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(rename_all = "lowercase"))]
|
||||
pub enum GameMode {
|
||||
Highlander,
|
||||
Eights,
|
||||
|
|
@ -405,6 +411,9 @@ pub struct InvalidRegion {
|
|||
#[derive(Copy, Clone, Debug)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||
#[serde(rename_all = "kebab-case")]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(type_name = "region"))]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(rename_all = "kebab-case"))]
|
||||
pub enum Region {
|
||||
Europe,
|
||||
NorthAmerica,
|
||||
|
|
@ -526,7 +535,6 @@ mod serde_steam_id_as_string {
|
|||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let id = u64::deserialize(deserializer)?;
|
||||
Ok(SteamID::from(id))
|
||||
SteamID::deserialize(deserializer)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue