UNPKG

identify-media

Version:

Analyse file path and content to make search criteria for media APIs

261 lines (235 loc) 6.17 kB
export interface TmdbConfiguration { images: { base_url: string; secure_base_url: string; backdrop_sizes: string[]; logo_sizes: string[]; poster_sizes: string[]; profile_sizes: string[]; still_sizes: string[]; } change_keys: string[]; } export interface TmdbSearchQuery { language?: string; query: string; type?: 'movie'|'tv'; year?: number; page?: number; } export const isTmdbSearchQuery = (possible: unknown): possible is TmdbSearchQuery => { if (!possible) return false; const possibleQuery = (possible as TmdbSearchQuery); if (possibleQuery.query === undefined) return false; return !(!!possibleQuery.type && !['movie', 'tv'].includes(possibleQuery.type)); }; export interface TmdbMovieResult { poster_path?: string | null; adult?: boolean; overview?: string; release_date?: string; genre_ids?: number[]; id: number; original_title?: string; original_language?: string; title: string; backdrop_path?: string | null; popularity?: number; vote_count?: number; video?: boolean; vote_average?: number; } export const isTmdbMovieResult = (possible: unknown): possible is TmdbMovieResult => !!possible && (possible as TmdbMovieResult).id !== undefined && (possible as TmdbMovieResult).title !== undefined; export interface TmdbTVShowResult { poster_path?: string | null; popularity?: number; id: number; backdrop_path?: string | null; vote_average?: number; overview?: string; first_air_date?: string; origin_country?: string[]; genre_ids?: number[]; original_language?: string; vote_count?: number; name: string; original_name?: string; } export const isTmdbTVShowResult = (possible: unknown): possible is TmdbTVShowResult => !!possible && (possible as TmdbTVShowResult).id !== undefined && (possible as TmdbTVShowResult).name !== undefined; export interface TmdbSearchResponse { page: number; total_results: number; total_pages: number; results: Array<TmdbMovieResult|TmdbTVShowResult>; } export interface TmdbExternalIDsQuery { id: number; type: 'movie'|'tv'; } export interface TmdbExternalIDsResponse extends TmdbExternalIds { id: number; } export interface TmdbFindQuery { language?: string; id: string; idType: 'imdb_id'|'freebase_mid'|'freebase_id'|'tvdb_id'|'tvrage_id'|'facebook_id'|'twitter_id'|'instagram_id'; } export interface TmdbFindResponse { movie_results?: TmdbMovieResult[]; tv_results?: TmdbTVShowResult[]; person_results?: unknown; tv_episode_results?: unknown; tv_season_results?: unknown; } export interface TmdbGetMovieQuery { id: number; language?: string; } export interface TmdbImage { aspect_ratio: number; file_path: string; height: number; iso_639_1: null | string; vote_average: number; vote_count: number; width: number; } export interface TmdbVideo { iso_639_1: string; iso_3166_1: string; name: string; key: string; site: string; size: number; type: string; official: boolean; published_at: string; id: string; } export interface TmdbExternalIds { imdb_id: string | null; facebook_id: string | null; instagram_id: string | null; twitter_id: string | null; } export interface TmdbMovie { adult: boolean; backdrop_path: string | null; belongs_to_collection: null | object; budget: number; genres: { id: number; name: string; }[]; homepage: string | null; id: number; imdb_id: string | null; original_language: string; original_title: string; overview: string | null; popularity: number; poster_path: string | null; production_companies: { name: string; id: number; logo_path: string | null; origin_country: string; }[]; production_countries: { iso_3166_1: string; name: string; }[]; release_date: string; revenue: number; runtime: number | null; spoken_languages: { iso_639_1: string; name: string; }[]; status: string; tagline: string | null; title: string; video: boolean; vote_average: number; vote_count: number; credits: { cast: { adult: boolean; gender: number | null; id: number; known_for_department: string; name: string; original_name: string; popularity: number; profile_path: string | null; cast_id: number; character: string; credit_id: string; order: number; }[]; crew: { adult: boolean; gender: number | null; id: number; known_for_department: string; name: string; original_name: string; popularity: number; profile_path: string | null; credit_id: string; department: string; job: string; }[]; }; external_ids: TmdbExternalIds; keywords: { keywords: { id: number; name: string; }[]; }; images: { backdrops: TmdbImage[]; logos: TmdbImage[]; posters: TmdbImage[]; }; translations: { translations: { iso_3166_1: string; iso_639_1: string; name: string; english_name: string; data: { title: string overview: string homepage: string }; }[]; }; videos: { results: TmdbVideo[]; } } export interface TmdbGetTVShowQuery { id: number; language?: string; } export interface TmdbTVShow { } export interface TmdbGetSeasonQuery { id: number; season: number; language?: string; } export interface TmdbSeason { } export interface TmdbGetEpisodeQuery { id: number; season: number; episode: number; language?: string; } export interface TmdbEpisode { }