mirror of
https://codeberg.org/icewind/ugc-scaper.git
synced 2026-06-03 10:14:11 +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]]
|
[[package]]
|
||||||
name = "ugc-scraper"
|
name = "ugc-scraper"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
source = "git+https://github.com/icewind1991/ugc-scaper#2d1565117d2b9e9933c0608f00809f6815420156"
|
source = "git+https://github.com/icewind1991/ugc-scaper#11fd39295c24cabb6198be51f0107df9cfb740e7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"regex",
|
"regex",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
|
|
@ -1979,7 +1979,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ugc-scraper-types"
|
name = "ugc-scraper-types"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/icewind1991/ugc-scaper#2d1565117d2b9e9933c0608f00809f6815420156"
|
source = "git+https://github.com/icewind1991/ugc-scaper#11fd39295c24cabb6198be51f0107df9cfb740e7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"steamid-ng",
|
"steamid-ng",
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ rustPlatform.buildRustPackage rec {
|
||||||
cargoLock = {
|
cargoLock = {
|
||||||
lockFile = ./api-server/Cargo.lock;
|
lockFile = ./api-server/Cargo.lock;
|
||||||
outputHashes = {
|
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 =
|
let image = document.select(&self.selector_image).next();
|
||||||
document
|
let image = image.and_then(|image| {
|
||||||
.select(&self.selector_image)
|
image
|
||||||
.next()
|
.attr("data-cfsrc")
|
||||||
.ok_or(ParseError::ElementNotFound {
|
.or_else(|| image.attr("src"))
|
||||||
selector: SELECTOR_TEAM_IMAGE,
|
.filter(|image| !image.ends_with("team_avatar_placeholder.png"))
|
||||||
role: "team image",
|
.map(String::from)
|
||||||
})?;
|
});
|
||||||
let image = image
|
|
||||||
.attr("data-cfsrc")
|
|
||||||
.or_else(|| image.attr("src"))
|
|
||||||
.unwrap_or_default()
|
|
||||||
.to_string();
|
|
||||||
|
|
||||||
let format = select_text(root, &self.selector_team_format)
|
let format = select_text(root, &self.selector_team_format)
|
||||||
.ok_or(ParseError::ElementNotFound {
|
.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 }
|
serde = { version = "1.0.215", features = ["derive"], optional = true }
|
||||||
time = { version = "0.3.36", features = ["parsing", "macros"] }
|
time = { version = "0.3.36", features = ["parsing", "macros"] }
|
||||||
thiserror = "2.0.12"
|
thiserror = "2.0.12"
|
||||||
|
sqlx = { version = "0.8.4", default-features = false, features = ["derive"], optional = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
serde = ["dep:serde", "time/serde", "time/formatting"]
|
serde = ["dep:serde", "time/serde", "time/formatting"]
|
||||||
|
sqlx = ["dep:sqlx"]
|
||||||
default = ["serde"]
|
default = ["serde"]
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ pub struct MembershipHistory {
|
||||||
pub struct Team {
|
pub struct Team {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub tag: String,
|
pub tag: String,
|
||||||
pub image: String,
|
pub image: Option<String>,
|
||||||
pub format: GameMode,
|
pub format: GameMode,
|
||||||
pub region: Option<Region>,
|
pub region: Option<Region>,
|
||||||
pub timezone: Option<String>,
|
pub timezone: Option<String>,
|
||||||
|
|
@ -125,7 +125,7 @@ pub struct Team {
|
||||||
pub name_changes: Vec<NameChange>,
|
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", derive(serde::Serialize, serde::Deserialize))]
|
||||||
#[cfg_attr(feature = "serde", serde(rename_all = "lowercase"))]
|
#[cfg_attr(feature = "serde", serde(rename_all = "lowercase"))]
|
||||||
pub enum Class {
|
pub enum Class {
|
||||||
|
|
@ -179,9 +179,12 @@ pub struct Membership {
|
||||||
pub since: OffsetDateTime,
|
pub since: OffsetDateTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
|
||||||
#[cfg_attr(feature = "serde", serde(rename_all = "lowercase"))]
|
#[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 {
|
pub enum MembershipRole {
|
||||||
Leader,
|
Leader,
|
||||||
Member,
|
Member,
|
||||||
|
|
@ -316,6 +319,9 @@ pub struct InvalidGameMode {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[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 {
|
pub enum GameMode {
|
||||||
Highlander,
|
Highlander,
|
||||||
Eights,
|
Eights,
|
||||||
|
|
@ -405,6 +411,9 @@ pub struct InvalidRegion {
|
||||||
#[derive(Copy, Clone, Debug)]
|
#[derive(Copy, Clone, Debug)]
|
||||||
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
#[serde(rename_all = "kebab-case")]
|
#[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 {
|
pub enum Region {
|
||||||
Europe,
|
Europe,
|
||||||
NorthAmerica,
|
NorthAmerica,
|
||||||
|
|
@ -526,7 +535,6 @@ mod serde_steam_id_as_string {
|
||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
let id = u64::deserialize(deserializer)?;
|
SteamID::deserialize(deserializer)
|
||||||
Ok(SteamID::from(id))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue