Compare commits
3 Commits
12c80c2f79
...
7ec174ed65
Author | SHA1 | Date | |
---|---|---|---|
7ec174ed65 | |||
bf17d5abf6 | |||
1b1c7708ef |
562
anime.rs
562
anime.rs
@ -1,562 +0,0 @@
|
|||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct Anime {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub images: AnimeImages,
|
|
||||||
pub trailer: TrailerBase,
|
|
||||||
pub approved: bool,
|
|
||||||
pub titles: Vec<Title>,
|
|
||||||
pub title: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub title_english: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub title_japanese: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub title_synonyms: Vec<String>,
|
|
||||||
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub anime_type: Option<AnimeType>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub source: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub episodes: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub status: Option<AnimeStatus>,
|
|
||||||
pub airing: bool,
|
|
||||||
pub aired: DateRange,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub duration: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub rating: Option<AnimeRating>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub score: Option<f32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub scored_by: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub rank: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub popularity: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub members: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub favorites: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub synopsis: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub background: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub season: Option<AnimeSeason>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub year: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub broadcast: Option<Broadcast>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub producers: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub licensors: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub studios: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub genres: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub explicit_genres: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub themes: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub demographics: Vec<MalUrl>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeFull {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub images: AnimeImages,
|
|
||||||
pub trailer: TrailerBase,
|
|
||||||
pub approved: bool,
|
|
||||||
pub titles: Vec<Title>,
|
|
||||||
pub title: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub title_english: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub title_japanese: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub title_synonyms: Vec<String>,
|
|
||||||
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub anime_type: Option<AnimeType>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub source: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub episodes: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub status: Option<AnimeStatus>,
|
|
||||||
pub airing: bool,
|
|
||||||
pub aired: DateRange,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub duration: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub rating: Option<AnimeRating>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub score: Option<f32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub scored_by: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub rank: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub popularity: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub members: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub favorites: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub synopsis: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub background: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub season: Option<AnimeSeason>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub year: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub broadcast: Option<Broadcast>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub producers: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub licensors: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub studios: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub genres: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub explicit_genres: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub themes: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub demographics: Vec<MalUrl>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub relations: Vec<Relation>,
|
|
||||||
pub theme: Theme,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub external: Vec<ExternalLink>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub streaming: Vec<ExternalLink>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeCharacters = Vec<AnimeCharacter>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeCharacter {
|
|
||||||
pub character: CharacterMeta,
|
|
||||||
pub role: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub voice_actors: Vec<VoiceActor>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct CharacterMeta {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub images: CharacterImages,
|
|
||||||
pub name: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct VoiceActor {
|
|
||||||
pub person: PersonMeta,
|
|
||||||
pub language: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct PersonMeta {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub images: PeopleImages,
|
|
||||||
pub name: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeStaff = Vec<StaffRole>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct StaffRole {
|
|
||||||
pub person: PersonMeta,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub positions: Vec<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeEpisodes = Vec<AnimeEpisode>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeEpisode {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub title: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub title_japanese: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub title_romanji: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub duration: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub aired: Option<String>,
|
|
||||||
pub filler: bool,
|
|
||||||
pub recap: bool,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub forum_url: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeNews = Vec<AnimeNewsMeta>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeNewsMeta {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub title: String,
|
|
||||||
pub date: String,
|
|
||||||
pub author_username: String,
|
|
||||||
pub author_url: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub forum_url: Option<String>,
|
|
||||||
pub images: CommonImages,
|
|
||||||
pub comments: u32,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub excerpt: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeForumPosts = Vec<AnimeForumPost>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeForumPost {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub title: String,
|
|
||||||
pub date: Timestamp,
|
|
||||||
pub author_username: String,
|
|
||||||
pub author_url: String,
|
|
||||||
pub comments: u32,
|
|
||||||
pub last_comment: LastComment,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct LastComment {
|
|
||||||
pub url: String,
|
|
||||||
pub author_username: String,
|
|
||||||
pub author_url: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub date: Option<Timestamp>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeVideos {
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub promo: Vec<PromoVideo>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub episodes: Vec<EpisodeVideo>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub music_videos: Vec<MusicVideo>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct PromoVideo {
|
|
||||||
pub title: String,
|
|
||||||
pub trailer: Trailer,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeVideosEpisodes = Vec<EpisodeVideo>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct EpisodeVideo {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub title: String,
|
|
||||||
pub episode: String,
|
|
||||||
pub images: CommonImages,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct MusicVideo {
|
|
||||||
pub title: String,
|
|
||||||
pub video: Trailer,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub meta: Option<MusicVideoMeta>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct MusicVideoMeta {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub title: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub author: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimePictures = Vec<AnimePicture>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimePicture {
|
|
||||||
pub images: CommonImages,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeStatistics {
|
|
||||||
pub watching: u32,
|
|
||||||
pub completed: u32,
|
|
||||||
pub on_hold: u32,
|
|
||||||
pub dropped: u32,
|
|
||||||
pub plan_to_watch: u32,
|
|
||||||
pub total: u32,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub scores: Vec<Score>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct Score {
|
|
||||||
pub score: u32,
|
|
||||||
pub votes: u32,
|
|
||||||
pub percentage: f32,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeMoreInfo {
|
|
||||||
pub moreinfo: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeRecommendations = Vec<AnimeRecommendation>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeRecommendation {
|
|
||||||
pub mal_id: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub entry: Vec<EntryMeta>,
|
|
||||||
pub content: String,
|
|
||||||
pub user: UserById,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct EntryMeta {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
pub images: AnimeImages,
|
|
||||||
pub title: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct UserById {
|
|
||||||
pub url: String,
|
|
||||||
pub username: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeUserUpdates = Vec<AnimeUserUpdate>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeUserUpdate {
|
|
||||||
pub user: UserMeta,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub score: Option<u32>,
|
|
||||||
pub status: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub episodes_seen: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub episodes_total: Option<u32>,
|
|
||||||
pub date: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct UserMeta {
|
|
||||||
pub username: String,
|
|
||||||
pub url: String,
|
|
||||||
pub images: UserImages,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct ImageUrl {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub image_url: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeReviews = Vec<AnimeReview>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeReview {
|
|
||||||
pub mal_id: u32,
|
|
||||||
pub url: String,
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
pub review_type: String,
|
|
||||||
pub reactions: Reactions,
|
|
||||||
pub date: String,
|
|
||||||
pub review: String,
|
|
||||||
pub score: u32,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub tags: Vec<String>,
|
|
||||||
pub is_spoiler: bool,
|
|
||||||
pub is_preliminary: bool,
|
|
||||||
pub episodes_watched: u32,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct Reactions {
|
|
||||||
pub overall: u32,
|
|
||||||
pub nice: u32,
|
|
||||||
pub love_it: u32,
|
|
||||||
pub funny: u32,
|
|
||||||
pub confusing: u32,
|
|
||||||
pub informative: u32,
|
|
||||||
pub well_written: u32,
|
|
||||||
pub creative: u32,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeRelations = Vec<AnimeRelation>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeRelation {
|
|
||||||
pub relation: String,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub entry: Vec<MalUrl>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct MalUrl {
|
|
||||||
pub mal_id: u32,
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
pub url_type: String,
|
|
||||||
pub name: String,
|
|
||||||
pub url: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeThemes {
|
|
||||||
pub data: Theme,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct Theme {
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub openings: Vec<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
|
||||||
pub endings: Vec<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeExternal = Vec<ExternalLink>;
|
|
||||||
pub type AnimeStreaming = Vec<ExternalLink>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct ExternalLink {
|
|
||||||
pub name: String,
|
|
||||||
pub url: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type AnimeSearchResults = Vec<Anime>;
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct ImageUrls {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub image_url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub small_image_url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub large_image_url: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct TrailerBase {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub youtube_id: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub embed_url: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct Trailer {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub youtube_id: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub embed_url: Option<String>,
|
|
||||||
pub images: TrailerImages,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct DateRange {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub from: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub to: Option<String>,
|
|
||||||
pub prop: DateProp,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct DateProp {
|
|
||||||
pub from: DatePropDetail,
|
|
||||||
pub to: DatePropDetail,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub string: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct DatePropDetail {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub day: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub month: Option<u32>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub year: Option<u32>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct Broadcast {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub day: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub time: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub timezone: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub string: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct Title {
|
|
||||||
#[serde(rename = "type")]
|
|
||||||
pub title_type: String,
|
|
||||||
pub title: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct CommonImages {
|
|
||||||
pub jpg: ImageUrl,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct CharacterImages {
|
|
||||||
pub jpg: ImageUrl,
|
|
||||||
pub webp: ImageUrl,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct PeopleImages {
|
|
||||||
pub jpg: ImageUrl,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct AnimeImages {
|
|
||||||
pub jpg: ImageUrls,
|
|
||||||
pub webp: ImageUrls,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct UserImages {
|
|
||||||
pub jpg: ImageUrl,
|
|
||||||
pub webp: ImageUrl,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
|
||||||
pub struct TrailerImages {
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub image_url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub small_image_url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub medium_image_url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub large_image_url: Option<String>,
|
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
||||||
pub maximum_image_url: Option<String>,
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user