fix: disambiguate tmdb ids by media type across lookups (#2577)

This commit is contained in:
fallenbagel
2026-03-14 23:47:21 +05:00
committed by GitHub
parent d25d0ca570
commit 0be18968b4
22 changed files with 479 additions and 70 deletions

View File

@@ -67,7 +67,10 @@ class WatchlistSync {
const mediaItems = await Media.getRelatedMedia(
user,
response.items.map((i) => i.tmdbId)
response.items.map((i) => ({
tmdbId: i.tmdbId,
mediaType: i.type === 'show' ? MediaType.TV : MediaType.MOVIE,
}))
);
const watchlistTmdbIds = response.items.map((i) => i.tmdbId);
@@ -87,19 +90,23 @@ class WatchlistSync {
.map((r) => `${r.media.mediaType}:${r.media.tmdbId}`)
);
const unavailableItems = response.items.filter(
(i) =>
!autoRequestedTmdbIds.has(
`${i.type === 'show' ? MediaType.TV : MediaType.MOVIE}:${i.tmdbId}`
) &&
const unavailableItems = response.items.filter((i) => {
const itemMediaType = i.type === 'show' ? MediaType.TV : MediaType.MOVIE;
return (
!autoRequestedTmdbIds.has(`${itemMediaType}:${i.tmdbId}`) &&
!mediaItems.find(
(m) =>
m.tmdbId === i.tmdbId &&
m.mediaType === itemMediaType &&
(m.status === MediaStatus.BLOCKLISTED ||
(m.status !== MediaStatus.UNKNOWN && m.mediaType === 'movie') ||
(m.mediaType === 'tv' && m.status === MediaStatus.AVAILABLE))
(itemMediaType === MediaType.MOVIE &&
m.status !== MediaStatus.UNKNOWN) ||
(itemMediaType === MediaType.TV &&
m.status === MediaStatus.AVAILABLE))
)
);
);
});
for (const mediaItem of unavailableItems) {
try {