Compare commits
1 Commits
renovate/e
...
preview-me
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b30794dd20 |
@@ -385,26 +385,6 @@ class BaseScanner<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We want to skip specials when checking if a show is available
|
|
||||||
const isAllStandardSeasons =
|
|
||||||
seasons.length &&
|
|
||||||
seasons
|
|
||||||
.filter((season) => season.seasonNumber !== 0)
|
|
||||||
.every(
|
|
||||||
(season) =>
|
|
||||||
season.episodes === season.totalEpisodes && season.episodes > 0
|
|
||||||
);
|
|
||||||
|
|
||||||
const isAll4kSeasons =
|
|
||||||
seasons.length &&
|
|
||||||
seasons
|
|
||||||
.filter((season) => season.seasonNumber !== 0)
|
|
||||||
.every(
|
|
||||||
(season) =>
|
|
||||||
season.episodes4k === season.totalEpisodes &&
|
|
||||||
season.episodes4k > 0
|
|
||||||
);
|
|
||||||
|
|
||||||
if (media) {
|
if (media) {
|
||||||
media.seasons = [...media.seasons, ...newSeasons];
|
media.seasons = [...media.seasons, ...newSeasons];
|
||||||
|
|
||||||
@@ -464,43 +444,38 @@ class BaseScanner<T> {
|
|||||||
externalServiceSlug;
|
externalServiceSlug;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the show is already available, and there are no new seasons, dont adjust
|
const nonSpecialSeasons = media.seasons.filter(
|
||||||
// the status. Skip specials when performing availability check
|
(s) => s.seasonNumber !== 0
|
||||||
const shouldStayAvailable =
|
);
|
||||||
media.status === MediaStatus.AVAILABLE &&
|
|
||||||
newSeasons.filter(
|
// Check the actual season objects instead scanner input
|
||||||
(season) =>
|
// to determine overall availability status
|
||||||
season.status !== MediaStatus.UNKNOWN &&
|
const isAllStandardSeasonsAvailable =
|
||||||
season.status !== MediaStatus.DELETED &&
|
nonSpecialSeasons.length > 0 &&
|
||||||
season.seasonNumber !== 0
|
nonSpecialSeasons.every((s) => s.status === MediaStatus.AVAILABLE);
|
||||||
).length === 0;
|
|
||||||
const shouldStayAvailable4k =
|
const isAll4kSeasonsAvailable =
|
||||||
media.status4k === MediaStatus.AVAILABLE &&
|
nonSpecialSeasons.length > 0 &&
|
||||||
newSeasons.filter(
|
nonSpecialSeasons.every((s) => s.status4k === MediaStatus.AVAILABLE);
|
||||||
(season) =>
|
|
||||||
season.status4k !== MediaStatus.UNKNOWN &&
|
media.status = isAllStandardSeasonsAvailable
|
||||||
season.status4k !== MediaStatus.DELETED &&
|
? MediaStatus.AVAILABLE
|
||||||
season.seasonNumber !== 0
|
: media.seasons.some(
|
||||||
).length === 0;
|
(season) =>
|
||||||
media.status =
|
season.status === MediaStatus.PARTIALLY_AVAILABLE ||
|
||||||
isAllStandardSeasons || shouldStayAvailable
|
season.status === MediaStatus.AVAILABLE
|
||||||
? MediaStatus.AVAILABLE
|
)
|
||||||
: media.seasons.some(
|
? MediaStatus.PARTIALLY_AVAILABLE
|
||||||
(season) =>
|
: (!seasons.length && media.status !== MediaStatus.DELETED) ||
|
||||||
season.status === MediaStatus.PARTIALLY_AVAILABLE ||
|
media.seasons.some(
|
||||||
season.status === MediaStatus.AVAILABLE
|
(season) => season.status === MediaStatus.PROCESSING
|
||||||
)
|
)
|
||||||
? MediaStatus.PARTIALLY_AVAILABLE
|
? MediaStatus.PROCESSING
|
||||||
: (!seasons.length && media.status !== MediaStatus.DELETED) ||
|
: media.status === MediaStatus.DELETED
|
||||||
media.seasons.some(
|
? MediaStatus.DELETED
|
||||||
(season) => season.status === MediaStatus.PROCESSING
|
: MediaStatus.UNKNOWN;
|
||||||
)
|
|
||||||
? MediaStatus.PROCESSING
|
|
||||||
: media.status === MediaStatus.DELETED
|
|
||||||
? MediaStatus.DELETED
|
|
||||||
: MediaStatus.UNKNOWN;
|
|
||||||
media.status4k =
|
media.status4k =
|
||||||
(isAll4kSeasons || shouldStayAvailable4k) && this.enable4kShow
|
isAll4kSeasonsAvailable && this.enable4kShow
|
||||||
? MediaStatus.AVAILABLE
|
? MediaStatus.AVAILABLE
|
||||||
: this.enable4kShow &&
|
: this.enable4kShow &&
|
||||||
media.seasons.some(
|
media.seasons.some(
|
||||||
@@ -520,6 +495,22 @@ class BaseScanner<T> {
|
|||||||
await mediaRepository.save(media);
|
await mediaRepository.save(media);
|
||||||
this.log(`Updating existing title: ${title}`);
|
this.log(`Updating existing title: ${title}`);
|
||||||
} else {
|
} else {
|
||||||
|
// For new media, check actual newSeasons objects instead of scanner
|
||||||
|
// input to determine overall availability status
|
||||||
|
const nonSpecialNewSeasons = newSeasons.filter(
|
||||||
|
(s) => s.seasonNumber !== 0
|
||||||
|
);
|
||||||
|
|
||||||
|
const isAllStandardSeasonsAvailable =
|
||||||
|
nonSpecialNewSeasons.length > 0 &&
|
||||||
|
nonSpecialNewSeasons.every((s) => s.status === MediaStatus.AVAILABLE);
|
||||||
|
|
||||||
|
const isAll4kSeasonsAvailable =
|
||||||
|
nonSpecialNewSeasons.length > 0 &&
|
||||||
|
nonSpecialNewSeasons.every(
|
||||||
|
(s) => s.status4k === MediaStatus.AVAILABLE
|
||||||
|
);
|
||||||
|
|
||||||
const newMedia = new Media({
|
const newMedia = new Media({
|
||||||
mediaType: MediaType.TV,
|
mediaType: MediaType.TV,
|
||||||
seasons: newSeasons,
|
seasons: newSeasons,
|
||||||
@@ -564,7 +555,7 @@ class BaseScanner<T> {
|
|||||||
)
|
)
|
||||||
? jellyfinMediaId
|
? jellyfinMediaId
|
||||||
: undefined,
|
: undefined,
|
||||||
status: isAllStandardSeasons
|
status: isAllStandardSeasonsAvailable
|
||||||
? MediaStatus.AVAILABLE
|
? MediaStatus.AVAILABLE
|
||||||
: newSeasons.some(
|
: newSeasons.some(
|
||||||
(season) =>
|
(season) =>
|
||||||
@@ -578,7 +569,7 @@ class BaseScanner<T> {
|
|||||||
? MediaStatus.PROCESSING
|
? MediaStatus.PROCESSING
|
||||||
: MediaStatus.UNKNOWN,
|
: MediaStatus.UNKNOWN,
|
||||||
status4k:
|
status4k:
|
||||||
isAll4kSeasons && this.enable4kShow
|
isAll4kSeasonsAvailable && this.enable4kShow
|
||||||
? MediaStatus.AVAILABLE
|
? MediaStatus.AVAILABLE
|
||||||
: this.enable4kShow &&
|
: this.enable4kShow &&
|
||||||
newSeasons.some(
|
newSeasons.some(
|
||||||
|
|||||||
Reference in New Issue
Block a user