//! Playlist. use serde::Deserialize; use crate::creator::Creator; /// A playlist. #[derive(Debug, Deserialize, Clone)] pub struct Playlist { /// The playlist's Deezer id. pub id: u64, /// The playlist's title. pub title: String, /// The playlist description. pub description: String, /// The playlist's duration (seconds). pub duration: u64, /// If the playlist is public or not. pub public: bool, /// If the playlist is the love tracks playlist. pub is_loved_track: bool, /// If the playlist is collaborative or not. pub collaborative: bool, /// Nb tracks in the playlist. pub nb_tracks: u64, /// Nb tracks not seen. pub unseen_track_count: Option, /// The number of playlist's fans. pub fans: u64, /// The url of the playlist on Deezer. pub link: String, /// The share link of the playlist on Deezer. pub share: String, /// The url of the playlist's cover. Add 'size' parameter to the url to change size. /// Can be 'small', 'medium', 'big', 'xl'. pub picture: String, /// The url of the playlist's cover in size small. pub picture_small: String, /// The url of the playlist's cover in size medium. pub picture_medium: String, /// The url of the playlist's cover in size big. pub picture_big: String, /// The url of the playlist's cover in size xl. pub picture_xl: String, /// The checksum for the track list. pub checksum: String, /// The creator of the playlist. pub creator: Creator, /// List of tracks. pub tracks: PlaylistTracks, } /// A track in a playlist. #[derive(Debug, Deserialize, Clone)] pub struct PlaylistTrack { /// The track's Deezer id pub id: u64, /// true if the track is readable in the player for the current user pub readable: bool, /// The track's fulltitle pub title: String, /// The track's short title pub title_short: String, /// The track version pub title_version: String, /// The track unseen status pub unseen: Option, /// The url of the track on Deezer pub link: String, /// The track's duration in seconds pub duration: u64, /// The track's Deezer rank pub rank: u64, /// Whether the track contains explicit lyrics pub explicit_lyrics: bool, /// The url of track's preview file. This file contains the first 30 seconds of the /// track pub preview: String, /// The time when the track has been added to the playlist pub time_add: u64, /// The track's artist. pub artist: PlaylistTrackArtist, /// The track's album. pub album: PlaylistTrackAlbum, } /// The artist of a playlist track. #[derive(Debug, Deserialize, Clone)] pub struct PlaylistTrackArtist { /// Artist id. pub id: u64, /// Artist name. pub name: String, /// Artist url. pub link: String, } /// The album of a playlist track. #[derive(Debug, Deserialize, Clone)] pub struct PlaylistTrackAlbum { /// Album id. pub id: u64, /// Album title. pub title: String, /// Album cover. pub cover: String, /// Album cover in size small. pub cover_small: String, /// Album cover in size medium. pub cover_medium: String, /// Album cover in size big. pub cover_big: String, /// Album cover in side xl. pub cover_xl: String, } /// Tracks in a playlist. #[derive(Debug, Deserialize, Clone)] pub struct PlaylistTracks { /// Tracks. pub data: Vec, }