Radarr/frontend/src/Movie/Movie.ts

101 lines
2.1 KiB
TypeScript

import ModelBase from 'App/ModelBase';
import Language from 'Language/Language';
import { MovieFile } from 'MovieFile/MovieFile';
export type MovieMonitor = 'movieOnly' | 'movieAndCollection' | 'none';
export type MovieStatus =
| 'tba'
| 'announced'
| 'inCinemas'
| 'released'
| 'deleted';
export type MovieAvailability = 'announced' | 'inCinemas' | 'released';
export type CoverType = 'poster' | 'fanart' | 'headshot';
export interface Image {
coverType: CoverType;
url: string;
remoteUrl: string;
}
export interface Collection {
tmdbId: number;
title: string;
}
export interface Statistics {
movieFileCount: number;
releaseGroups: string[];
sizeOnDisk: number;
}
export interface RatingValues {
votes: number;
value: number;
}
export interface Ratings {
imdb: RatingValues;
tmdb: RatingValues;
metacritic: RatingValues;
rottenTomatoes: RatingValues;
trakt: RatingValues;
}
export interface AlternativeTitle extends ModelBase {
sourceType: string;
title: string;
}
export interface MovieAddOptions {
monitor: MovieMonitor;
searchForMovie: boolean;
}
interface Movie extends ModelBase {
tmdbId: number;
imdbId?: string;
sortTitle: string;
overview: string;
youTubeTrailerId?: string;
monitored: boolean;
status: MovieStatus;
title: string;
titleSlug: string;
originalTitle: string;
originalLanguage: Language;
collection: Collection;
alternateTitles: AlternativeTitle[];
studio: string;
qualityProfileId: number;
added: string;
year: number;
inCinemas?: string;
physicalRelease?: string;
digitalRelease?: string;
releaseDate?: string;
rootFolderPath: string;
runtime: number;
minimumAvailability: MovieAvailability;
path: string;
genres: string[];
keywords: string[];
ratings: Ratings;
popularity: number;
certification: string;
statistics?: Statistics;
tags: number[];
images: Image[];
movieFile?: MovieFile;
hasFile: boolean;
grabbed?: boolean;
lastSearchTime?: string;
isAvailable: boolean;
isSaving?: boolean;
addOptions: MovieAddOptions;
}
export default Movie;