pub struct Item {
pub content_type: ContentType,
pub content_id: String,
pub pub_date: chrono::naive::NaiveDate,
pub content_group_id: String,
pub title: Vec<Title>,
pub description: Option<Vec<Description>>,
pub genre: Option<Vec<Genre>>,
pub rating: Option<Vec<Rating>>,
pub advisory: Option<Vec<Advisory>>,
pub credit: Option<Vec<Credit>>,
pub external_content_id: Option<Vec<ExternalId>>,
pub artwork: Option<Vec<Artwork>>,
pub is_original: Option<bool>,
pub is_adult_only_content: bool,
pub original_spoken_locale: Option<Vec<String>>,
pub production_country: Option<Vec<String>>,
pub country_of_origin: Option<Vec<String>>,
pub copyright_line: Option<Vec<String>>,
pub additional_item_info: Option<Vec<AdditionalItemInfo>>,
pub movie_info: Option<Movie>,
pub tv_show_info: Option<TvShow>,
pub tv_season_info: Option<TvSeason>,
pub tv_episode_info:Option<TvEpisode>,
pub sporting_event_info:Option<SportEvent>,
pub extra_info:Option<Extra>
}
pub enum ContentType {
MOVIE,
TVSHOW,
TVSEASON,
TVEPISODE,
SPORTINGEVENT,
EXTRA,
}
pub struct Movie {
pub movie_type: MovieType,
pub duration: Option<i128>,
pub studio: Option<Vec<String>>,
pub original_release_date: Vec<ReleaseDateMovie>,
pub version: Option<MovieVersion>,
}
pub enum MovieType {
FEATURE,
TVMOVIE,
SHORT,
}
pub struct ReleaseDateMovie {
pub date: chrono::naive::NaiveDate,
pub country: Option<String>,
pub release_type: Option<ReleaseDateType>,
}
pub enum ReleaseDateType {
Theatrical,
Digital,
Physical,
Festival,
}
pub enum MovieVersion {
Standard,
Unrated,
Rated,
Uncut,
DirectorsCut,
Extended,
Remastered,
SpecialEdition,
AlternateEnding,
AlternateCut,
EditedForTv,
}
pub struct Title {
pub content: String,
pub locale: Option<String>,
pub text_type: Option<TitleType>,
pub is_phonetic: Option<bool>,
pub countries_restricted_to: Option<Vec<String>>,
}
pub enum TitleType {
Additional,
Descriptive,
}
pub struct Description {
pub content: String,
pub locale: Option<String>,
pub countries_restricted_to: Option<Vec<String>>,
}
pub enum Genre {
Action,
Adventure,
Animation,
Anime,
Biography,
Bollywood,
Classics,
Comedy,
Crime,
Documentary,
Drama,
Educational,
Fantasy,
GameShow,
History,
Holiday,
Horror,
Independent,
Interview,
KidsAndFamily,
LGBTQ,
Music,
Musical,
Mystery,
News,
Novelas,
Reality,
Romance,
SciFi,
ShortFilms,
SpecialInterest,
Sports,
TalkShow,
Teens,
Thriller,
Travel,
Variety,
War,
Western,
}
pub struct Rating {
pub system_code: String,
pub value: String,
pub reason: Option<Vec<Reason>>,
}
pub struct Reason {
pub value: String,
pub locale: String,
}
pub struct Advisory {
pub value: String,
pub system_code: String,
pub level: Option<String>,
}
pub struct Credit {
pub role: Role,
pub order: Option<i16>,
pub name: Vec<Name>,
pub credited_person_info: Option<CreditedPersonInfo>,
pub character: Option<Vec<Character>>,
}
pub enum Role {
Actor,
Director,
Writer,
Producer,
Creator,
Voice,
Narrator,
GuestStar,
Guest,
Host,
Anchor,
Music,
ExecutiveProducer,
EIC,
HeadWriter,
Editor,
Performer,
_Self,
Advisor,
Cast,
Songwriter,
Other,
}
pub struct Name {
pub content: String,
pub locale: Option<String>,
pub is_phonetic: Option<bool>,
}
pub struct CreditedPersonInfo {
pub date_of_birth: Option<chrono::naive::NaiveDate>,
pub external_id: Option<Vec<ExternalId>>,
}
pub struct ExternalId {
pub catalog_id: String,
pub value: String,
}
pub struct Character {
pub image_url: Option<String>,
pub character_name: Vec<Name>,
}
pub struct Artwork {
pub url: String,
pub artwork_type: ArtworkType,
pub locales: Option<Vec<String>>,
pub countries_restricted_to: Option<Vec<String>>,
}
pub enum ArtworkType {
CoverArtworkSquare,
CoverArtworkVertical,
CoverArtworkHorizontal,
TileArtwork,
CenteredBackground,
CenteredBackgroundSmall,
ContentLogoMonochromatic,
ContentLogoPolychromatic,
}
pub struct AdditionalItemInfo {
pub value: String,
pub additional_item_info_type: String,
pub locale: Option<String>,
pub countries_restricted_to: Option<Vec<String>>,
}
pub struct TvShow {
pub tv_show_type: TvShowType,
pub original_premiere_date: Option<chrono::naive::NaiveDate>,
pub local_premiere_date: Option<Vec<LocalPremiereDate>>,
pub original_finale_date: Option<chrono::naive::NaiveDate>,
pub local_finale_date: Option<Vec<LocalPremiereDate>>,
pub network: Option<Vec<String>>,
}
pub enum TvShowType {
Series,
Miniseries,
Seasonless,
}
pub struct LocalPremiereDate {
pub value: chrono::naive::NaiveDate,
pub countries: Vec<String>,
}
pub struct TvSeason {
pub show_content_id: String,
pub season_number: i64,
pub original_premiere_date: Option<chrono::naive::NaiveDate>,
pub local_premiere_date: Option<Vec<LocalPremiereDate>>,
pub original_finale_date: chrono::naive::NaiveDate,
pub local_finale_date: Option<Vec<LocalPremiereDate>>,
}
pub struct TvEpisode {
pub episode_type: EpisodeType,
pub duration: Option<i128>,
pub original_air_date: Option<chrono::naive::NaiveDate>,
pub local_air_date: Option<Vec<LocalPremiereDate>>,
pub show_content_id: String,
pub season_content_id: Option<String>,
pub season_number: Option<i128>,
pub episode_number: Option<f32>,
pub production_number: String,
}
pub enum EpisodeType {
Standard,
}
pub struct SportEvent {
pub start_date: chrono::naive::NaiveDate,
pub sport_name: String,
pub league: League,
pub sport_season: Option<SportSeason>,
pub venue: Option<Venue>,
pub competitor: Option<Vec<Competitor>>,
pub event_round: Option<EventRound>,
pub event_status: Option<EventStatus>,
pub tournament: Option<Tournament>,
pub is_tbd: Option<bool>,
pub call_sign: Option<Vec<String>>,
}
pub struct League {
pub value: String,
pub league_id: Option<String>,
pub abbreviation: String,
pub name: Option<String>,
}
pub struct SportSeason {
pub year: i32,
pub name: Option<Vec<SportName>>,
pub season_type: SportSeasonType,
}
pub struct SportName {
pub value: String,
pub locale: Option<String>,
}
pub enum SportSeasonType {
Regular,
Pre,
Post,
Special,
}
pub struct Venue {
pub venue_id: Option<String>,
pub name: Vec<SportName>,
pub city: Vec<SportName>,
pub state: Option<Vec<SportName>>,
pub country: String,
}
pub struct Competitor {
pub competitor_id: Option<String>,
pub name: Vec<SportName>,
pub home_location: Option<String>,
pub abbreviation: Option<String>,
pub is_home: Option<bool>,
pub is_person: Option<bool>,
}
pub struct EventRound {
pub name: Vec<SportName>,
pub games_in_round: i64,
pub game_number: i64,
}
pub enum EventStatus {
Canceled,
NotNecessary,
Delayed,
}
pub struct Tournament {
pub tournament_id: Option<String>,
pub name: Vec<SportName>,
}
pub struct Extra {
pub extra_type: ExtraType,
pub duration: Option<i128>,
pub local_air_date:Option<Vec<LocalPremiereDate>>,
pub studio: Option<Vec<String>>,
pub network:Option<Vec<String>>
}
pub enum ExtraType {
Bonus,
Sizzle,
Preview,
Promotional,
FeaturedPromo
}