Enhanced manga results from Comick API.
Original search title.
Map populated with Comick source information.
Sorted array of AniListManga results.
export function processComickResults(
comickResults: EnhancedAniListManga[],
title: string,
comickSourceMap: ComickSourceMap,
): AniListManga[] {
const processedResults = comickResults.map((enhancedManga) => {
if (enhancedManga.sourceInfo) {
comickSourceMap.set(enhancedManga.id, {
title: enhancedManga.sourceInfo.title,
slug: enhancedManga.sourceInfo.slug,
comickId: enhancedManga.sourceInfo.sourceId,
isFoundViaComick: enhancedManga.sourceInfo.isFoundViaAlternativeSearch,
});
}
const manga = convertEnhancedMangaToAniList(enhancedManga);
const confidence = calculateConfidence(title, manga);
const titleTypePriority = calculateTitleTypePriority(manga, title);
console.debug(
`[MangaSearchService] ⚖️ Comick result confidence for "${manga.title?.english || manga.title?.romaji}": ${confidence}% (found via Comick: ${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 Comick results, score by confidence, and sort by title type priority.