aboutsummaryrefslogtreecommitdiffstats
path: root/src/deserialize.rs
diff options
context:
space:
mode:
authoralyx <alyx@aleteoryx.me>2024-04-01 19:00:57 -0400
committeralyx <alyx@aleteoryx.me>2024-04-01 19:00:57 -0400
commit22c2e4e2db9ad9d892ed5fb63d92254677f6dafd (patch)
treec3132945f32d1ca5741848a504b48f09a599bafb /src/deserialize.rs
parentdc6875ce18a48d314f0576528ebd7dc9e5e2a1b8 (diff)
downloadlfm_embed-22c2e4e2db9ad9d892ed5fb63d92254677f6dafd.tar.gz
lfm_embed-22c2e4e2db9ad9d892ed5fb63d92254677f6dafd.tar.bz2
lfm_embed-22c2e4e2db9ad9d892ed5fb63d92254677f6dafd.zip
Reliable user info; Font refactor
Hit a few more endpoints to fix missing images, fallback to default album art just in case. Refactor the font cache into its own file.
Diffstat (limited to 'src/deserialize.rs')
-rw-r--r--src/deserialize.rs66
1 files changed, 43 insertions, 23 deletions
diff --git a/src/deserialize.rs b/src/deserialize.rs
index b31fe35..9606258 100644
--- a/src/deserialize.rs
+++ b/src/deserialize.rs
@@ -62,15 +62,10 @@ pub struct TimeStamp {
#[derive(Deserialize, Debug)]
pub struct Artist {
- #[serde(rename = "mbid")]
- pub uuid: Arc<str>,
#[serde(alias = "#text")]
pub name: Arc<str>,
#[serde(default)]
- #[serde(rename = "image")]
- pub images: Vec<Image>,
- #[serde(default)]
pub url: Option<Arc<str>>
}
@@ -97,43 +92,68 @@ pub struct Album {
pub uuid: Arc<str>,
#[serde(rename = "#text")]
pub name: Arc<str>,
-}
-
-#[derive(Default, Deserialize, Debug)]
-pub struct TrackAttr {
#[serde(default)]
- #[serde(deserialize_with = "str_bool")]
- pub nowplaying: bool,
- #[serde(flatten)]
- pub rest: HashMap<Arc<str>, Value>,
+ #[serde(rename = "image")]
+ pub images: Vec<Image>,
+
}
+
#[derive(Deserialize, Debug)]
pub struct Track {
pub artist: Artist,
- #[serde(deserialize_with = "str_bool")]
- pub streamable: bool,
#[serde(rename = "image")]
pub images: Vec<Image>,
- #[serde(rename = "mbid")]
- pub uuid: Arc<str>,
+ pub mbid: Arc<str>,
pub album: Album,
pub name: Arc<str>,
- #[serde(rename = "@attr")]
- #[serde(default)]
- pub attr: TrackAttr,
pub url: Arc<str>,
+ #[serde(deserialize_with = "str_num")]
+ pub duration: u64,
+ #[serde(deserialize_with = "str_num")]
+ pub listeners: u64,
+ #[serde(deserialize_with = "str_num")]
+ pub playcount: u64,
#[serde(default)]
+ #[serde(rename = "userloved")]
#[serde(deserialize_with = "str_bool")]
pub loved: Option<bool>,
- #[serde(default)]
- pub date: Option<TimeStamp>
+ #[serde(deserialize_with = "str_num")]
+ pub userplaycount: u64,
+}
+
+#[derive(Deserialize, Debug)]
+pub struct GetTrackInfo {
+ pub track: Track
}
+#[derive(Default, Deserialize, Debug)]
+pub struct TrackAttr {
+ #[serde(default)]
+ #[serde(deserialize_with = "str_bool")]
+ pub nowplaying: bool,
+ #[serde(flatten)]
+ pub rest: HashMap<Arc<str>, Value>,
+}
+#[derive(Deserialize, Debug)]
+pub struct ArtistStub {
+ #[serde(rename = "#text")]
+ pub name: Arc<str>
+}
+#[derive(Deserialize, Debug)]
+pub struct TrackStub {
+ pub name: Arc<str>,
+ pub artist: ArtistStub,
+ #[serde(default)]
+ pub date: Option<TimeStamp>,
+ #[serde(rename = "@attr")]
+ #[serde(default)]
+ pub attr: TrackAttr,
+}
#[derive(Deserialize, Debug)]
pub struct RecentTracks {
- pub track: Vec<Track>
+ pub track: Vec<TrackStub>
}
#[derive(Deserialize, Debug)]
pub struct GetRecentTracks {