diff options
author | alyx <alyx@aleteoryx.me> | 2024-04-01 19:00:57 -0400 |
---|---|---|
committer | alyx <alyx@aleteoryx.me> | 2024-04-01 19:00:57 -0400 |
commit | 22c2e4e2db9ad9d892ed5fb63d92254677f6dafd (patch) | |
tree | c3132945f32d1ca5741848a504b48f09a599bafb /src/deserialize.rs | |
parent | dc6875ce18a48d314f0576528ebd7dc9e5e2a1b8 (diff) | |
download | lfm_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.rs | 66 |
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 { |