/** * Content Enrichment Service * Matches IPTV content to TMDb entries and fetches posters/metadata */ import type { TMDbClient } from '@visioo/api-client'; import type { Movie, Series } from '../types'; export interface EnrichmentResult { posterUrl: string | null; backdropUrl: string | null; tmdbId: number | null; confidence: number; genres: string[]; title: string | null; rating: number | null; } export interface ContentEnrichmentService { /** * Enrich a movie with TMDb poster */ enrichMovie(movie: Movie): Promise; /** * Enrich a series with TMDb poster */ enrichSeries(series: Series): Promise; /** * Batch enrich multiple movies * Returns a plain object (Record) instead of Map for JSON serialization compatibility */ enrichMovies(movies: Movie[]): Promise>; /** * Batch enrich multiple series * Returns a plain object (Record) instead of Map for JSON serialization compatibility */ enrichSeriesBatch(seriesList: Series[]): Promise>; } export declare class TMDbContentEnrichmentService implements ContentEnrichmentService { private tmdb; private cache; private searchCache; private readonly SEARCH_CACHE_TTL; private readonly GENRE_MAP; constructor(tmdb: TMDbClient); /** * Map genre IDs to genre names */ private mapGenreIds; /** * Normalize title for matching */ private normalizeTitle; /** * Extract year from title or use provided year */ private extractYear; /** * Calculate similarity between two titles using word-based matching */ private calculateSimilarity; /** * Find best match from TMDb search results */ private findBestMatch; /** * Search TMDb with caching * @param query - Search query * @param type - 'movie' or 'tv' * @param year - Optional year filter for more precise results */ private searchTMDb; /** * Search TMDb with multiple fallback strategies for better matching * Strategy 1: Clean title (year stripped) + year filter - most precise * Strategy 2: Clean title (year stripped) without year filter - broader * Strategy 3: Original cleaned title without year filter - fallback * Strategy 4: For pure non-Latin titles, search with native language parameter */ private searchTMDbWithStrategies; /** * Search TMDb with a specific language parameter * Used for searching non-Latin titles in their native language */ private searchTMDbWithLanguage; enrichMovie(movie: Movie): Promise; enrichSeries(series: Series): Promise; enrichMovies(movies: Movie[]): Promise>; enrichSeriesBatch(seriesList: Series[]): Promise>; /** * Clear cache */ clearCache(): void; } //# sourceMappingURL=content-enrichment.d.ts.map