Enhanced manga results from MangaDex API.
Original search title.
Map populated with MangaDex source information.
Sorted array of AniListManga results.
export function processMangaDexResults(
mangaDexResults: EnhancedAniListManga[],
title: string,
mangaDexSourceMap: MangaDexSourceMap,
): AniListManga[] {
const processedResults = mangaDexResults.map((enhancedManga) => {
if (enhancedManga.sourceInfo) {
mangaDexSourceMap.set(enhancedManga.id, {
title: enhancedManga.sourceInfo.title,
slug: enhancedManga.sourceInfo.slug,
mangaDexId: enhancedManga.sourceInfo.sourceId,
isFoundViaMangaDex:
enhancedManga.sourceInfo.isFoundViaAlternativeSearch,
});
}
const manga = convertEnhancedMangaToAniList(enhancedManga);
const confidence = calculateConfidence(title, manga);
const titleTypePriority = calculateTitleTypePriority(manga, title);
console.debug(
`[MangaSearchService] ⚖️ MangaDex result confidence for "${manga.title?.english || manga.title?.romaji}": ${confidence}% (found via MangaDex: ${enhancedManga.sourceInfo?.title || "unknown"})`,
);
return { manga, confidence, titleTypePriority };
});
// Sort by confidence and priority
processedResults.sort((a, b) => {
if (a.confidence !== b.confidence) {
return b.confidence - a.confidence;
}
return b.titleTypePriority - a.titleTypePriority;
});
return processedResults.map((match) => match.manga);
}
Process MangaDex results, score by confidence, and sort by title type priority.