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}