File size: 3,535 Bytes
3374e90 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #[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)>,
}
|