diff options
| author | Fuwn <[email protected]> | 2023-12-20 03:32:18 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-20 03:32:18 -0800 |
| commit | e0d7a447b3ee898bf015353b8053a1a833c1a377 (patch) | |
| tree | f203e35de595991c3c1396a4d6bb54750d3503d2 /src/lib | |
| parent | feat(airing): normalise part (diff) | |
| download | due.moe-e0d7a447b3ee898bf015353b8053a1a833c1a377.tar.xz due.moe-e0d7a447b3ee898bf015353b8053a1a833c1a377.zip | |
feat(airing): strengthen media match
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Media/Anime/airing.ts | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lib/Media/Anime/airing.ts b/src/lib/Media/Anime/airing.ts index a88deed5..8e99d76b 100644 --- a/src/lib/Media/Anime/airing.ts +++ b/src/lib/Media/Anime/airing.ts @@ -78,13 +78,12 @@ export const findClosestMedia = (media: Media[], matchFor: string) => { let bestFitMedia: Media | null = null; let smallestDistance = Infinity; - const normalizedSingleTitle = normalizeTitle(matchFor); - media.forEach((m) => { [m.title.romaji, m.title.english, ...m.synonyms].filter(Boolean).forEach((title) => { - const distance = levenshtein.get(normalizedSingleTitle, normalizeTitle(title)); + const normalizedItemTitle = normalizeTitle(title); + const distance = levenshtein.get(normalizeTitle(matchFor), normalizedItemTitle); - if (distance < smallestDistance && distance < normalizedSingleTitle.length / 2) { + if (distance < smallestDistance && distance < Math.max(3, normalizedItemTitle.length * 0.4)) { smallestDistance = distance; bestFitMedia = m; } |