fix(plex-sync): store plex added date and sort recently added by it

This commit is contained in:
sct
2021-01-13 09:51:11 +00:00
parent a262727078
commit d688a96759
7 changed files with 86 additions and 6 deletions

View File

@@ -111,6 +111,7 @@ class JobPlexSync {
existing.status !== MediaStatus.AVAILABLE
) {
existing.status = MediaStatus.AVAILABLE;
existing.mediaAddedAt = new Date(plexitem.addedAt * 1000);
changedExisting = true;
}
@@ -123,6 +124,11 @@ class JobPlexSync {
changedExisting = true;
}
if (!existing.mediaAddedAt && !changedExisting) {
existing.mediaAddedAt = new Date(plexitem.addedAt * 1000);
changedExisting = true;
}
if (changedExisting) {
await mediaRepository.save(existing);
this.log(
@@ -144,6 +150,7 @@ class JobPlexSync {
? MediaStatus.AVAILABLE
: MediaStatus.UNKNOWN;
newMedia.mediaType = MediaType.MOVIE;
newMedia.mediaAddedAt = new Date(plexitem.addedAt * 1000);
await mediaRepository.save(newMedia);
this.log(`Saved ${plexitem.title}`);
}
@@ -208,6 +215,7 @@ class JobPlexSync {
existing.status !== MediaStatus.AVAILABLE
) {
existing.status = MediaStatus.AVAILABLE;
existing.mediaAddedAt = new Date(plexitem.addedAt * 1000);
changedExisting = true;
}
@@ -220,6 +228,11 @@ class JobPlexSync {
changedExisting = true;
}
if (!existing.mediaAddedAt && !changedExisting) {
existing.mediaAddedAt = new Date(plexitem.addedAt * 1000);
changedExisting = true;
}
if (changedExisting) {
await mediaRepository.save(existing);
this.log(
@@ -240,6 +253,7 @@ class JobPlexSync {
const newMedia = new Media();
newMedia.imdbId = tmdbMovie.external_ids.imdb_id;
newMedia.tmdbId = tmdbMovie.id;
newMedia.mediaAddedAt = new Date(plexitem.addedAt * 1000);
newMedia.status =
hasOtherResolution || (!this.enable4kMovie && has4k)
? MediaStatus.AVAILABLE
@@ -266,10 +280,7 @@ class JobPlexSync {
);
if (episodes) {
for (const episode of episodes) {
const special = await animeList.getSpecialEpisode(
tvdbId,
episode.index
);
const special = animeList.getSpecialEpisode(tvdbId, episode.index);
if (special) {
if (special.tmdbId) {
await this.processMovieWithId(episode, undefined, special.tmdbId);
@@ -519,6 +530,7 @@ class JobPlexSync {
'debug'
);
media.lastSeasonChange = new Date();
media.mediaAddedAt = new Date(plexitem.addedAt * 1000);
}
if (new4kSeasonAvailable > current4kSeasonAvailable) {
@@ -531,6 +543,10 @@ class JobPlexSync {
media.lastSeasonChange = new Date();
}
if (!media.mediaAddedAt) {
media.mediaAddedAt = new Date(plexitem.addedAt * 1000);
}
media.status = isAllStandardSeasons
? MediaStatus.AVAILABLE
: media.seasons.some(
@@ -553,6 +569,7 @@ class JobPlexSync {
seasons: newSeasons,
tmdbId: tvShow.id,
tvdbId: tvShow.external_ids.tvdb_id,
mediaAddedAt: new Date(plexitem.addedAt * 1000),
status: isAllStandardSeasons
? MediaStatus.AVAILABLE
: newSeasons.some(