From 8d25ec1f0fc77926ee079daae0630f650ddca13d Mon Sep 17 00:00:00 2001 From: Fuwn Date: Mon, 25 Dec 2023 17:11:40 -0800 Subject: feat(wrapped): exclude genre tag keywords --- src/lib/AniList/wrapped.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/lib/AniList/wrapped.ts') diff --git a/src/lib/AniList/wrapped.ts b/src/lib/AniList/wrapped.ts index 40a81957..89fbd6d7 100644 --- a/src/lib/AniList/wrapped.ts +++ b/src/lib/AniList/wrapped.ts @@ -158,7 +158,7 @@ export interface TopMedia { topTagMedia: Media; } -export const tops = (media: Media[], amount: number): TopMedia => { +export const tops = (media: Media[], amount: number, excludedKeywords: string[] = []): TopMedia => { const genresMap: { [genre: string]: { totalScore: number; count: number } } = {}; const tagsMap: { [tag: string]: { totalScore: number; count: number } } = {}; @@ -194,14 +194,18 @@ export const tops = (media: Media[], amount: number): TopMedia => { // return formatted.endsWith('00') ? Number(formatted).toString() : formatted; // }; - let genres = Object.keys(genresMap).map((genre) => ({ - genre, - averageScore: Math.round(genresMap[genre].totalScore / genresMap[genre].count) - })); - let tags = Object.keys(tagsMap).map((tag) => ({ - tag, - averageScore: Math.round(tagsMap[tag].totalScore / tagsMap[tag].count) - })); + let genres = Object.keys(genresMap) + .filter((genre) => !excludedKeywords.some((keyword) => genre.includes(keyword))) + .map((genre) => ({ + genre, + averageScore: Math.round(genresMap[genre].totalScore / genresMap[genre].count) + })); + let tags = Object.keys(tagsMap) + .filter((genre) => !excludedKeywords.some((keyword) => genre.includes(keyword))) + .map((tag) => ({ + tag, + averageScore: Math.round(tagsMap[tag].totalScore / tagsMap[tag].count) + })); genres = genres.slice(0, amount); tags = tags.slice(0, amount); -- cgit v1.2.3