diff --git a/packages/core/src/metadata/imdb.ts b/packages/core/src/metadata/imdb.ts index eb2832d2..c39831c9 100644 --- a/packages/core/src/metadata/imdb.ts +++ b/packages/core/src/metadata/imdb.ts @@ -83,7 +83,7 @@ export class IMDBMetadata { } } - private async getImdbSuggestionData( + public async getImdbSuggestionData( id: string, type: string ): Promise { diff --git a/packages/core/src/metadata/service.ts b/packages/core/src/metadata/service.ts index 0a6e8d0c..468031ab 100644 --- a/packages/core/src/metadata/service.ts +++ b/packages/core/src/metadata/service.ts @@ -130,23 +130,27 @@ export class MetadataService { // IMDb metadata if (imdbId) { - promises.push(new IMDBMetadata().getCinemetaData(imdbId, type)); + const imdbMetadata = new IMDBMetadata(); + promises.push(imdbMetadata.getCinemetaData(imdbId, type)); + promises.push(imdbMetadata.getImdbSuggestionData(imdbId, type)); } else { promises.push(Promise.resolve(undefined)); } // Execute all promises in parallel - const [tmdbResult, tvdbResult, traktResult, imdbResult] = - (await Promise.allSettled(promises)) as [ - PromiseSettledResult< - (Metadata & { tmdbId: string }) | undefined - >, - PromiseSettledResult< - (Metadata & { tvdbId: number }) | undefined - >, - PromiseSettledResult, - PromiseSettledResult, - ]; + const [ + tmdbResult, + tvdbResult, + traktResult, + imdbResult, + imdbSuggestionResult, + ] = (await Promise.allSettled(promises)) as [ + PromiseSettledResult<(Metadata & { tmdbId: string }) | undefined>, + PromiseSettledResult<(Metadata & { tvdbId: number }) | undefined>, + PromiseSettledResult, + PromiseSettledResult, + PromiseSettledResult, + ]; // Process TMDB results if (tmdbResult.status === 'fulfilled' && tmdbResult.value) { @@ -262,6 +266,19 @@ export class MetadataService { ); } + if ( + imdbSuggestionResult.status === 'fulfilled' && + imdbSuggestionResult.value + ) { + const imdbSuggestionData = imdbSuggestionResult.value; + if (imdbSuggestionData.title) + titles.unshift(imdbSuggestionData.title); + if (imdbSuggestionData.year && !year) + year = imdbSuggestionData.year; + if (imdbSuggestionData.yearEnd && !yearEnd) + yearEnd = imdbSuggestionData.yearEnd; + } + // Deduplicate titles, lowercase all before deduplication const uniqueTitles = [ ...new Set(titles.map((title) => title.toLowerCase())),