diff options
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 { |