From 22c2e4e2db9ad9d892ed5fb63d92254677f6dafd Mon Sep 17 00:00:00 2001 From: alyx Date: Mon, 1 Apr 2024 19:00:57 -0400 Subject: 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. --- src/deserialize.rs | 66 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 23 deletions(-) (limited to 'src/deserialize.rs') diff --git a/src/deserialize.rs b/src/deserialize.rs index b31fe35..9606258 100644 --- a/src/deserialize.rs +++ b/src/deserialize.rs @@ -62,14 +62,9 @@ pub struct TimeStamp { #[derive(Deserialize, Debug)] pub struct Artist { - #[serde(rename = "mbid")] - pub uuid: Arc, #[serde(alias = "#text")] pub name: Arc, - #[serde(default)] - #[serde(rename = "image")] - pub images: Vec, #[serde(default)] pub url: Option> } @@ -97,43 +92,68 @@ pub struct Album { pub uuid: Arc, #[serde(rename = "#text")] pub name: Arc, -} - -#[derive(Default, Deserialize, Debug)] -pub struct TrackAttr { #[serde(default)] - #[serde(deserialize_with = "str_bool")] - pub nowplaying: bool, - #[serde(flatten)] - pub rest: HashMap, Value>, + #[serde(rename = "image")] + pub images: Vec, + } + #[derive(Deserialize, Debug)] pub struct Track { pub artist: Artist, - #[serde(deserialize_with = "str_bool")] - pub streamable: bool, #[serde(rename = "image")] pub images: Vec, - #[serde(rename = "mbid")] - pub uuid: Arc, + pub mbid: Arc, pub album: Album, pub name: Arc, - #[serde(rename = "@attr")] - #[serde(default)] - pub attr: TrackAttr, pub url: Arc, + #[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, - #[serde(default)] - pub date: Option + #[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, Value>, +} +#[derive(Deserialize, Debug)] +pub struct ArtistStub { + #[serde(rename = "#text")] + pub name: Arc +} +#[derive(Deserialize, Debug)] +pub struct TrackStub { + pub name: Arc, + pub artist: ArtistStub, + #[serde(default)] + pub date: Option, + #[serde(rename = "@attr")] + #[serde(default)] + pub attr: TrackAttr, +} #[derive(Deserialize, Debug)] pub struct RecentTracks { - pub track: Vec + pub track: Vec } #[derive(Deserialize, Debug)] pub struct GetRecentTracks { -- cgit v1.2.3-54-g00ecf