ramdl/api/
webplayback.rs

1#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
2#[serde(rename_all = "camelCase")]
3pub struct WebPlayBack {
4    pub song_list: Vec<Song>,
5    pub status: u8,
6}
7
8#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
9#[serde(rename_all = "camelCase")]
10pub struct Song {
11    #[serde(rename = "artwork-urls")]
12    pub artwork_urls: ArtworkUrls,
13    pub assets: Vec<Asset>,
14    #[serde(rename = "hls-key-cert-url")]
15    pub hls_key_cert_url: String,
16    #[serde(rename = "hls-key-server-url")]
17    pub hls_key_server_url: String,
18    #[serde(rename = "is-itunes-stream")]
19    pub is_itunes_stream: bool,
20    pub song_id: String,
21    #[serde(rename = "widevine-cert-url")]
22    pub widevine_cert_url: String,
23}
24
25#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
26#[serde(rename_all = "camelCase")]
27pub struct Asset {
28    #[serde(rename = "URL")]
29    pub url: String,
30    #[serde(rename = "artworkURL")]
31    pub artwork_url: String,
32    pub chunks: Chunks,
33    pub download_key: String,
34    #[serde(rename = "file-size")]
35    pub file_size: u64,
36    pub flavor: String,
37    pub md5: String,
38    pub metadata: Metadata,
39}
40
41#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
42#[serde(rename_all = "camelCase")]
43pub struct Chunks {
44    pub chunk_size: u64,
45}
46
47#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
48#[serde(rename_all = "camelCase")]
49pub struct Metadata {
50    pub artist_id: String,
51    pub artist_name: String,
52    pub bit_rate: u32,
53    pub compilation: bool,
54    pub composer_id: String,
55    pub composer_name: String,
56    pub copyright: String,
57    pub disc_count: u32,
58    pub disc_number: u32,
59    pub duration: u64,
60    pub explicit: u8,
61    pub file_extension: String,
62    pub gapless: bool,
63    pub genre: String,
64    pub genre_id: u32,
65    pub is_mastered_for_itunes: bool,
66    pub item_id: String,
67    pub item_name: String,
68    pub kind: String,
69    pub playlist_artist_name: String,
70    pub playlist_id: String,
71    pub playlist_name: String,
72    pub rank: u32,
73    pub release_date: String,
74    pub s: u32,
75    pub sample_rate: u32,
76    #[serde(rename = "sort-album")]
77    pub sort_album: String,
78    #[serde(rename = "sort-artist")]
79    pub sort_artist: String,
80    #[serde(rename = "sort-composer")]
81    pub sort_composer: String,
82    #[serde(rename = "sort-name")]
83    pub sort_name: String,
84    pub track_count: u32,
85    pub track_number: u32,
86    pub vendor_id: u32,
87    pub xid: String,
88    pub year: u32,
89}
90
91#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
92pub struct ArtworkUrls {
93    pub default: ArtWorkUrlDefault,
94    #[serde(rename = "default@2x")]
95    pub defaultx2: ArtWorkUrlDefaultx2,
96    #[serde(rename = "image-type")]
97    pub image_type: String,
98}
99
100#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
101pub struct ArtWorkUrlDefault {
102    pub url: String,
103}
104
105#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
106pub struct ArtWorkUrlDefaultx2 {
107    pub url: String,
108}