diff options
| author | Fuwn <[email protected]> | 2023-12-25 17:11:40 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-25 17:11:40 -0800 |
| commit | 8d25ec1f0fc77926ee079daae0630f650ddca13d (patch) | |
| tree | fe06904e646af9268350b0d8020a1d8c47ef8d60 /src/lib | |
| parent | fix(wrapped): null check all of genres tags (diff) | |
| download | due.moe-8d25ec1f0fc77926ee079daae0630f650ddca13d.tar.xz due.moe-8d25ec1f0fc77926ee079daae0630f650ddca13d.zip | |
feat(wrapped): exclude genre tag keywords
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/AniList/wrapped.ts | 22 | ||||
| -rw-r--r-- | src/lib/Tools/Wrapped.svelte | 6 |
2 files changed, 18 insertions, 10 deletions
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); diff --git a/src/lib/Tools/Wrapped.svelte b/src/lib/Tools/Wrapped.svelte index 9934aeb2..6ffd94bf 100644 --- a/src/lib/Tools/Wrapped.svelte +++ b/src/lib/Tools/Wrapped.svelte @@ -89,7 +89,11 @@ genreTagCount = genreTagCount; if (animeList && mangaList) - topMedia = tops([...(animeList || []), ...(mangaList || [])], genreTagCount); + topMedia = tops( + [...(animeList || []), ...(mangaList || [])], + genreTagCount, + excludedKeywords + ); // new Promise((resolve) => setTimeout(resolve, 1)).then(updateWidth); } |