fix miruro seasons
This commit is contained in:
1 parent
8c0fd70b7b
commit
07367a22d7
2 files changed
+46
No files matched your search
@@ -816,6 +816,19 @@ async function resolveSeasonEpisode(seed, mapping, identifier, season, episode)
|
|||||||
if (fromTags) {
|
if (fromTags) {
|
||||||
return { anime: seed, episode: fromTags };
|
return { anime: seed, episode: fromTags };
|
||||||
}
|
}
|
||||||
|
const continuation = related.filter((anime) => !isMovieFormat(anime) && seasonOf(anime) != null && seasonOf(anime) >= requestedSeason && entryBelongsToRequest(anime, mapping, identifier)).sort((first, second) => seasonOf(first) - seasonOf(second) || clusterPosition(first) - clusterPosition(second));
|
||||||
|
let offset = 0;
|
||||||
|
for (const anime of continuation) {
|
||||||
|
const episodes = anime.id === seed.id ? seedEpisodes : await listEpisodes(anime.id);
|
||||||
|
if (episodes.length === 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const index = requestedEpisode - 1 - offset;
|
||||||
|
if (index >= 0 && index < episodes.length) {
|
||||||
|
return { anime, episode: episodes[index] };
|
||||||
|
}
|
||||||
|
offset += episodes.length;
|
||||||
|
}
|
||||||
const local = seedEpisodes.find((item) => Number(item.episode_number) === requestedEpisode);
|
const local = seedEpisodes.find((item) => Number(item.episode_number) === requestedEpisode);
|
||||||
return local ? { anime: seed, episode: local } : null;
|
return local ? { anime: seed, episode: local } : null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -446,6 +446,39 @@ async function resolveSeasonEpisode(seed, mapping, identifier, season, episode)
|
|||||||
return { anime: seed, episode: fromTags };
|
return { anime: seed, episode: fromTags };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TMDB sometimes keeps one season while the catalog splits the same run
|
||||||
|
// into several seasons (The Ramparts of Ice: TMDB S1 episode 15 is catalog
|
||||||
|
// season 2 episode 1). Walk catalog seasons at or after the requested one
|
||||||
|
// in order, carrying an episode offset, so those episodes stay reachable.
|
||||||
|
const continuation = related
|
||||||
|
.filter((anime) => (
|
||||||
|
!isMovieFormat(anime) &&
|
||||||
|
seasonOf(anime) != null &&
|
||||||
|
seasonOf(anime) >= requestedSeason &&
|
||||||
|
entryBelongsToRequest(anime, mapping, identifier)
|
||||||
|
))
|
||||||
|
.sort((first, second) => (
|
||||||
|
seasonOf(first) - seasonOf(second) ||
|
||||||
|
clusterPosition(first) - clusterPosition(second)
|
||||||
|
));
|
||||||
|
let offset = 0;
|
||||||
|
|
||||||
|
for (const anime of continuation) {
|
||||||
|
const episodes = anime.id === seed.id ? seedEpisodes : await listEpisodes(anime.id);
|
||||||
|
|
||||||
|
if (episodes.length === 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const index = requestedEpisode - 1 - offset;
|
||||||
|
|
||||||
|
if (index >= 0 && index < episodes.length) {
|
||||||
|
return { anime, episode: episodes[index] };
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += episodes.length;
|
||||||
|
}
|
||||||
|
|
||||||
const local = seedEpisodes.find((item) => Number(item.episode_number) === requestedEpisode);
|
const local = seedEpisodes.find((item) => Number(item.episode_number) === requestedEpisode);
|
||||||
|
|
||||||
return local ? { anime: seed, episode: local } : null;
|
return local ? { anime: seed, episode: local } : null;
|
||||||
|
|||||||
Reference in new issue
Block a user