fix: airdate episode match

This commit is contained in:
ThaUnknown 2025-07-17 17:48:12 +02:00
parent ce9e01c2c2
commit 3ad8d5039e
No known key found for this signature in database
3 changed files with 6 additions and 3 deletions

View file

@ -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",

View file

@ -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
})

View file

@ -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
}