Adds recently added and main artists to genre payload
This commit is contained in:
parent
071aced10a
commit
d1a0b836cf
1 changed files with 30 additions and 1 deletions
|
@ -335,13 +335,42 @@ pub struct Genre {
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub header: GenreHeader,
|
pub header: GenreHeader,
|
||||||
pub related_genres: HashMap<String, u32>,
|
pub related_genres: HashMap<String, u32>,
|
||||||
|
pub main_artists: Vec<ArtistHeader>,
|
||||||
|
pub recently_added: Vec<AlbumHeader>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<index::Genre> for Genre {
|
impl From<index::Genre> for Genre {
|
||||||
fn from(genre: index::Genre) -> Self {
|
fn from(mut genre: index::Genre) -> Self {
|
||||||
|
let main_artists = {
|
||||||
|
genre.artists.sort_by_key(|a| {
|
||||||
|
-(a.num_songs_by_genre
|
||||||
|
.get(&genre.header.name)
|
||||||
|
.copied()
|
||||||
|
.unwrap_or_default() as i32)
|
||||||
|
});
|
||||||
|
genre
|
||||||
|
.artists
|
||||||
|
.into_iter()
|
||||||
|
.take(20)
|
||||||
|
.map(|a| a.into())
|
||||||
|
.collect()
|
||||||
|
};
|
||||||
|
|
||||||
|
let recently_added = {
|
||||||
|
genre.albums.sort_by_key(|a| -a.date_added);
|
||||||
|
genre
|
||||||
|
.albums
|
||||||
|
.into_iter()
|
||||||
|
.take(20)
|
||||||
|
.map(|a| a.into())
|
||||||
|
.collect()
|
||||||
|
};
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
header: GenreHeader::from(genre.header),
|
header: GenreHeader::from(genre.header),
|
||||||
related_genres: genre.related_genres,
|
related_genres: genre.related_genres,
|
||||||
|
main_artists,
|
||||||
|
recently_added,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue