From 39aed8afb88995f844600fd0b04cd8eab64634de Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 17 Jul 2025 18:43:07 +0200 Subject: [PATCH] feat: re-introduce airdate based episode limiting --- package.json | 2 +- src/lib/modules/extensions/extensions.ts | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9cc8d92..d0d0242 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ui", - "version": "6.4.51", + "version": "6.4.52", "license": "BUSL-1.1", "private": true, "packageManager": "pnpm@9.15.5", diff --git a/src/lib/modules/extensions/extensions.ts b/src/lib/modules/extensions/extensions.ts index 0f8e4d7..4213578 100644 --- a/src/lib/modules/extensions/extensions.ts +++ b/src/lib/modules/extensions/extensions.ts @@ -75,11 +75,14 @@ export function makeEpisodeList (count: number, media: Media, episodesRes?: Epis const hasCountMatch = (episodes(media) ?? 0) === (episodesRes?.episodeCount ?? 0) 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 - // 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))) + // 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, but only walk forwards in dates + const filtered = Object.fromEntries(Object.entries(episodesRes?.episodes ?? {}).filter(([_, ep]) => !episodeList.some(e => { + if (ep.anidbEid != null && e.anidbEid === ep.anidbEid) return true + if (ep.airdate != null && new Date(ep.airdate) < new Date(e.airdate ?? Date.now())) return true + return false + }))) - const { image, summary, overview, rating, title, length, airdate, anidbEid } = (needsValidation ? episodeByAirDate(airingAt, episodesRes?.episodes ?? {}, episode) : episodesRes?.episodes?.[Number(episode)]) ?? {} + const { image, summary, overview, rating, title, length, airdate, anidbEid } = (needsValidation ? episodeByAirDate(airingAt, filtered, 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 }