diff --git a/package.json b/package.json index 83e1a68..9cc8d92 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ui", - "version": "6.4.50", + "version": "6.4.51", "license": "BUSL-1.1", "private": true, "packageManager": "pnpm@9.15.5", diff --git a/src/lib/modules/anilist/util.ts b/src/lib/modules/anilist/util.ts index 1e0d8ee..d8c3ce2 100644 --- a/src/lib/modules/anilist/util.ts +++ b/src/lib/modules/anilist/util.ts @@ -163,6 +163,8 @@ export function episodeByAirDate (alDate: Date | undefined, episodes: Episodes, return prev }, []) + if (!closestEpisodes.length) return episodes[Number(episode)] ?? episodes[episode] + return closestEpisodes.reduce((prev, curr) => { return Math.abs(Number(curr.episode) - episode) < Math.abs(Number(prev.episode) - episode) ? curr : prev }) diff --git a/src/lib/modules/extensions/extensions.ts b/src/lib/modules/extensions/extensions.ts index e96f1a3..0f8e4d7 100644 --- a/src/lib/modules/extensions/extensions.ts +++ b/src/lib/modules/extensions/extensions.ts @@ -76,9 +76,10 @@ export function makeEpisodeList (count: number, media: Media, episodesRes?: Epis const needsValidation = !(!hasSpecial || (hasEpisode && hasCountMatch)) // handle special cases where anilist reports that 3 episodes aired at the same time because of pre-releases, simply don't allow the same episode to be re-used - const filtered = Object.fromEntries(Object.entries(episodesRes?.episodes ?? {}).filter(([_, ep]) => !episodeList.some(e => e.anidbEid === ep.anidbEid && ep.anidbEid != null))) + // TODO: this needs to be improved so it doesnt walk backwards + // const filtered = Object.fromEntries(Object.entries(episodesRes?.episodes ?? {}).filter(([_, ep]) => !episodeList.some(e => e.anidbEid === ep.anidbEid && ep.anidbEid != null))) - const { image, summary, overview, rating, title, length, airdate, anidbEid } = (needsValidation ? episodeByAirDate(airingAt, filtered, episode) : episodesRes?.episodes?.[Number(episode)]) ?? {} + const { image, summary, overview, rating, title, length, airdate, anidbEid } = (needsValidation ? episodeByAirDate(airingAt, episodesRes?.episodes ?? {}, episode) : episodesRes?.episodes?.[Number(episode)]) ?? {} const res = { episode, image, summary: summary ?? overview, rating, title, length, airdate, airingAt, filler: !!fillerEpisodes[media.id]?.includes(i + 1), anidbEid }