aboutsummaryrefslogtreecommitdiffstats
path: root/src/deserialize.rs
diff options
context:
space:
mode:
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 {