Files
sofa/lib/tmdb/types.ts
T
jakeandClaude Opus 4.6 e098180dda Replace search page with explore page for rich discovery experience
The command palette (⌘K) already handles direct title search. Replace the
redundant /search page with a new /explore page featuring trending titles,
popular movies/TV, and genre browsing powered by TMDB discovery endpoints.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 15:11:53 -05:00

122 lines
2.4 KiB
TypeScript

export interface TmdbSearchResult {
id: number;
media_type: "movie" | "tv" | "person";
title?: string;
name?: string;
original_title?: string;
original_name?: string;
overview: string;
release_date?: string;
first_air_date?: string;
poster_path: string | null;
backdrop_path: string | null;
popularity: number;
vote_average: number;
vote_count: number;
}
export interface TmdbSearchResponse {
page: number;
results: TmdbSearchResult[];
total_pages: number;
total_results: number;
}
export interface TmdbMovieDetails {
id: number;
title: string;
original_title: string;
overview: string;
release_date: string;
poster_path: string | null;
backdrop_path: string | null;
popularity: number;
vote_average: number;
vote_count: number;
status: string;
}
export interface TmdbTvDetails {
id: number;
name: string;
original_name: string;
overview: string;
first_air_date: string;
poster_path: string | null;
backdrop_path: string | null;
popularity: number;
vote_average: number;
vote_count: number;
status: string;
number_of_seasons: number;
seasons: TmdbSeasonSummary[];
}
export interface TmdbSeasonSummary {
id: number;
season_number: number;
name: string;
overview: string;
poster_path: string | null;
air_date: string | null;
episode_count: number;
}
export interface TmdbSeasonDetails {
id: number;
season_number: number;
name: string;
overview: string;
poster_path: string | null;
air_date: string | null;
episodes: TmdbEpisode[];
}
export interface TmdbEpisode {
id: number;
episode_number: number;
name: string;
overview: string;
still_path: string | null;
air_date: string | null;
runtime: number | null;
}
export interface TmdbWatchProviderResponse {
id: number;
results: Record<
string,
{
link?: string;
flatrate?: TmdbProvider[];
rent?: TmdbProvider[];
buy?: TmdbProvider[];
free?: TmdbProvider[];
ads?: TmdbProvider[];
}
>;
}
export interface TmdbProvider {
provider_id: number;
provider_name: string;
logo_path: string;
display_priority: number;
}
export interface TmdbRecommendationResponse {
page: number;
results: TmdbSearchResult[];
total_pages: number;
total_results: number;
}
export interface TmdbGenre {
id: number;
name: string;
}
export interface TmdbGenreListResponse {
genres: TmdbGenre[];
}