165 lines
No EOL
4 KiB
TypeScript
165 lines
No EOL
4 KiB
TypeScript
// Generated by https://quicktype.io
|
|
|
|
export interface CrunchySearch {
|
|
__class__: string;
|
|
__href__: string;
|
|
__resource_key__: string;
|
|
__links__: CrunchySearchLinks;
|
|
__actions__: unknown;
|
|
total: number;
|
|
items: CrunchySearchItem[];
|
|
}
|
|
|
|
|
|
export interface CrunchySearchLinks {
|
|
continuation?: Continuation;
|
|
}
|
|
|
|
export interface Continuation {
|
|
href: string;
|
|
}
|
|
|
|
export interface CrunchySearchItem {
|
|
__class__: string;
|
|
__href__: string;
|
|
__resource_key__: string;
|
|
__links__: CrunchySearchLinks;
|
|
__actions__: unknown;
|
|
type: string;
|
|
total: number;
|
|
items: ItemItem[];
|
|
}
|
|
|
|
export interface ItemItem {
|
|
__actions__: unknown;
|
|
__class__: Class;
|
|
__href__: string;
|
|
__links__: PurpleLinks;
|
|
channel_id: ChannelID;
|
|
description: string;
|
|
external_id: string;
|
|
id: string;
|
|
images: Images;
|
|
linked_resource_key: string;
|
|
new: boolean;
|
|
new_content: boolean;
|
|
promo_description: string;
|
|
promo_title: string;
|
|
search_metadata: SearchMetadata;
|
|
series_metadata?: SeriesMetadata;
|
|
slug: string;
|
|
slug_title: string;
|
|
title: string;
|
|
type: ItemType;
|
|
episode_metadata?: EpisodeMetadata;
|
|
playback?: string;
|
|
isSelected?: boolean;
|
|
season_number?: string;
|
|
is_premium_only?: boolean;
|
|
hide_metadata?: boolean;
|
|
seq_id?: string;
|
|
f_num?: string;
|
|
s_num?: string;
|
|
ep_num?: string;
|
|
last_public?: string;
|
|
subtitle_locales?: string[];
|
|
availability_notes?: string
|
|
}
|
|
|
|
export enum Class {
|
|
Panel = 'panel',
|
|
}
|
|
|
|
export interface PurpleLinks {
|
|
resource: Continuation;
|
|
'resource/channel': Continuation;
|
|
'episode/season'?: Continuation;
|
|
'episode/series'?: Continuation;
|
|
streams?: Continuation;
|
|
}
|
|
|
|
export enum ChannelID {
|
|
Crunchyroll = 'crunchyroll',
|
|
}
|
|
|
|
export interface EpisodeMetadata {
|
|
ad_breaks: AdBreak[];
|
|
availability_notes: string;
|
|
available_offline: boolean;
|
|
duration_ms: number;
|
|
episode: string;
|
|
episode_air_date: string;
|
|
episode_number: number;
|
|
is_clip: boolean;
|
|
is_dubbed: boolean;
|
|
is_mature: boolean;
|
|
is_premium_only: boolean;
|
|
is_subbed: boolean;
|
|
mature_blocked: boolean;
|
|
maturity_ratings: string[];
|
|
season_id: string;
|
|
season_number: number;
|
|
season_slug_title: string;
|
|
season_title: string;
|
|
sequence_number: number;
|
|
series_id: string;
|
|
series_slug_title: string;
|
|
series_title: string;
|
|
subtitle_locales: string[];
|
|
tenant_categories?: TenantCategory[];
|
|
available_date?: string;
|
|
free_available_date?: string;
|
|
}
|
|
|
|
export interface AdBreak {
|
|
offset_ms: number;
|
|
type: AdBreakType;
|
|
}
|
|
|
|
export enum AdBreakType {
|
|
Midroll = 'midroll',
|
|
Preroll = 'preroll',
|
|
}
|
|
|
|
export enum TenantCategory {
|
|
Action = 'Action',
|
|
Drama = 'Drama',
|
|
SciFi = 'Sci-Fi',
|
|
}
|
|
|
|
export interface Images {
|
|
poster_tall?: Array<PosterTall[]>;
|
|
poster_wide?: Array<PosterTall[]>;
|
|
thumbnail?: Array<PosterTall[]>;
|
|
}
|
|
|
|
export interface PosterTall {
|
|
height: number;
|
|
source: string;
|
|
type: PosterTallType;
|
|
width: number;
|
|
}
|
|
|
|
export enum PosterTallType {
|
|
PosterTall = 'poster_tall',
|
|
PosterWide = 'poster_wide',
|
|
Thumbnail = 'thumbnail',
|
|
}
|
|
|
|
export interface SearchMetadata {
|
|
score: number;
|
|
}
|
|
|
|
export interface SeriesMetadata {
|
|
availability_notes: string;
|
|
episode_count: number;
|
|
extended_description: string;
|
|
is_dubbed: boolean;
|
|
is_mature: boolean;
|
|
is_simulcast: boolean;
|
|
is_subbed: boolean;
|
|
mature_blocked: boolean;
|
|
maturity_ratings: string[];
|
|
season_count: number;
|
|
tenant_categories: TenantCategory[];
|
|
} |