mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-12 12:06:16 -08:00
Two fields TMDB already sends us and the merge threw away — no new API calls, no cache-key bump, they light up on existing cached payloads. Series detail views (Xtream and Stalker) gain a production-status chip: "Ended" tells you a show is finished before you commit to it, "Returning" that it is not. TMDB returns `status` as an ENGLISH string even under language=ru-RU, so it is normalized to a stable token (normalizeSeriesStatus) and rendered through translated labels (seriesStatusLabelKey). Unknown values are dropped rather than shown, so a status TMDB adds later can never leak raw English into 19 locales. Person pages render `deathday`, which mapPersonProfile has always parsed into ActorProfile and no template ever read. i18n: 7 keys across all 19 locales via the tools/i18n workflow. Tests: status normalization (token mapping, case-insensitivity, the British "cancelled" spelling, unknown/missing dropped). Docs: tmdb-metadata-enrichment.md, CLAUDE.md. Refs docs/architecture/tmdb-roadmap.md C1 and the zero-extra-call tier. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import {
|
|
TmdbEnrichedCastMember,
|
|
TmdbRecommendation,
|
|
TmdbSeriesStatus,
|
|
} from './tmdb.interface';
|
|
|
|
/**
|
|
* Stalker portal VOD details response structure.
|
|
* Contains movie metadata from Stalker/Ministra portals.
|
|
*/
|
|
export interface StalkerVodDetails {
|
|
/** Unique identifier for the VOD item */
|
|
id: string;
|
|
/** Command string used to play the stream (e.g., "/media/file_123.mpg") */
|
|
cmd: string;
|
|
/** VOD metadata */
|
|
info: StalkerVodInfo;
|
|
}
|
|
|
|
export interface StalkerVodInfo {
|
|
/** Poster/cover image URL */
|
|
movie_image: string;
|
|
/** Plot description */
|
|
description: string;
|
|
/** Formatted/system title (often generic like "video_name_format") */
|
|
name: string;
|
|
/** Original title (preferred, more descriptive) */
|
|
o_name?: string;
|
|
/** Comma-separated list of actors */
|
|
actors: string;
|
|
/** Director name */
|
|
director: string;
|
|
/** Release date (format varies) */
|
|
releasedate: string;
|
|
/** Genre(s) */
|
|
genre: string;
|
|
/** IMDB rating as string */
|
|
rating_imdb: string;
|
|
/** Kinopoisk rating as string */
|
|
rating_kinopoisk: string;
|
|
/** Populated by TMDB enrichment; absent in raw portal responses */
|
|
tmdb_cast?: TmdbEnrichedCastMember[];
|
|
/** Directors (movies) / creators (series) as clickable person chips */
|
|
tmdb_directors?: TmdbEnrichedCastMember[];
|
|
/** Series production status (token, never a raw TMDB string) */
|
|
tmdb_status?: TmdbSeriesStatus;
|
|
/** TMDB backdrop URL — Stalker portals never provide one themselves */
|
|
tmdb_backdrop?: string;
|
|
/** YouTube trailer key from TMDB — Stalker portals provide no trailers */
|
|
tmdb_trailer?: string;
|
|
/** Populated by TMDB enrichment */
|
|
tmdb_recommendations?: TmdbRecommendation[];
|
|
/** Matched TMDB id — enables lazy season/episode enrichment */
|
|
tmdb_id?: number;
|
|
}
|