| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct Image { |
| pub url: String, pub layout: String, |
| pub width: Option<u32>, pub height: Option<u32>, pub blurhash: Option<String>, |
| } |
|
|
| #[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)] |
| pub struct ImageSet { |
| pub low: Option<Image>, pub medium: Option<Image>, pub high: Option<Image>, |
| pub backdrop: Option<Image>, pub logo: Option<Image>, |
| } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct LinkedId { pub source: String, pub id: String } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct MediaCard { |
| pub id: String, pub title: String, pub kind: Option<String>, |
| pub images: Option<ImageSet>, pub original_title: Option<String>, |
| pub tagline: Option<String>, pub year: Option<String>, |
| pub score: Option<u32>, pub genres: Vec<String>, |
| pub status: Option<String>, pub content_rating: Option<String>, |
| pub url: Option<String>, pub ids: Vec<LinkedId>, pub extra: Vec<(String, String)>, |
| } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct CategoryLink { pub id: String, pub title: String, pub subtitle: Option<String>, pub image: Option<Image> } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct HomeSection { |
| pub id: String, pub title: String, pub subtitle: Option<String>, |
| pub items: Vec<MediaCard>, pub next_page: Option<String>, |
| pub layout: String, pub show_rank: bool, |
| pub categories: Vec<CategoryLink>, pub extra: Vec<(String, String)>, |
| } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct PagedResult { pub items: Vec<MediaCard>, pub categories: Vec<CategoryLink>, pub next_page: Option<String> } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct SearchFilters { pub kind: Option<String>, pub page_token: Option<String>, pub fast_match: bool } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct Episode { |
| pub id: String, pub title: String, pub number: Option<f64>, pub season: Option<f64>, |
| pub images: Option<ImageSet>, pub description: Option<String>, |
| pub released: Option<String>, pub score: Option<u32>, |
| pub url: Option<String>, pub tags: Vec<String>, pub extra: Vec<(String, String)>, |
| } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct Season { |
| pub id: String, pub title: String, pub number: Option<f64>, |
| pub year: Option<u32>, pub episodes: Vec<Episode>, |
| } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct Person { pub id: String, pub name: String, pub image: Option<ImageSet>, pub role: Option<String>, pub url: Option<String> } |
|
|
| #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] |
| pub struct MediaInfo { |
| pub id: String, pub title: String, pub kind: String, |
| pub images: Option<ImageSet>, pub original_title: Option<String>, |
| pub description: Option<String>, pub score: Option<u32>, |
| pub scored_by: Option<u64>, pub year: Option<String>, |
| pub release_date: Option<String>, pub genres: Vec<String>, |
| pub tags: Vec<String>, pub status: Option<String>, |
| pub content_rating: Option<String>, pub seasons: Vec<Season>, |
| pub cast: Vec<Person>, pub crew: Vec<Person>, |
| pub runtime_minutes: Option<u32>, pub trailer_url: Option<String>, |
| pub ids: Vec<LinkedId>, pub studio: Option<String>, |
| pub country: Option<String>, pub language: Option<String>, |
| pub url: Option<String>, pub extra: Vec<(String, String)>, |
| } |
|
|