1use serde::{Deserialize, Serialize};
4use std::fmt::Display;
5
6#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq, Hash)]
8#[serde(rename_all = "camelCase", default)]
9pub struct PlayParameters {
10 pub id: String,
12 pub kind: String,
14}
15
16#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq, Hash)]
18#[serde(rename_all = "camelCase", default)]
19pub struct EditorialNotes {
20 pub name: Option<String>,
22 pub short: Option<String>,
24 pub standard: Option<String>,
26 pub tagline: Option<String>,
28}
29
30#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq, Hash)]
32#[serde(rename_all = "camelCase", default)]
33pub struct Preview {
34 pub url: String,
36}
37
38#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
40pub enum AudioVariant {
41 #[serde(rename = "dolby-atmos")]
43 DolbyAtmos,
44 #[serde(rename = "dolby-audio")]
46 DolbyAudio,
47 #[serde(rename = "hi-res-lossless")]
49 HiResLossless,
50 #[serde(rename = "lossless")]
52 Lossless,
53 #[serde(rename = "lossy-stereo")]
55 LossyStereo,
56}
57
58#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
60pub enum ContentRating {
61 #[serde(rename = "clean")]
63 Clean,
64 #[serde(rename = "explicit")]
66 Explicit,
67}
68
69#[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq, Eq, Hash)]
71pub enum TrackType {
72 #[serde(rename = "library-music-videos")]
76 LibraryMusicVideo,
77 #[serde(rename = "library-songs")]
81 LibrarySong,
82 #[serde(rename = "music-videos")]
86 MusicVideo,
87 #[serde(rename = "songs")]
91 Song,
92}
93
94impl Display for TrackType {
95 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
96 let string = match self {
97 TrackType::LibraryMusicVideo => "library-music-videos",
98 TrackType::LibrarySong => "library-songs",
99 TrackType::MusicVideo => "music-videos",
100 TrackType::Song => "songs",
101 };
102 write!(f, "{}", string)
103 }
104}