Browse Source

synchronize plex artwork

pull/72/head
Jason Dove 5 years ago
parent
commit
9f7ce60bdf
  1. 45
      ErsatzTV.Core/Plex/PlexMovieLibraryScanner.cs
  2. 2
      ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs

45
ErsatzTV.Core/Plex/PlexMovieLibraryScanner.cs

@ -101,7 +101,48 @@ namespace ErsatzTV.Core.Plex @@ -101,7 +101,48 @@ namespace ErsatzTV.Core.Plex
return Right<BaseError, PlexMovie>(existing).AsTask();
}
private Task<Either<BaseError, PlexMovie>> UpdateArtwork(PlexMovie existing, PlexMovie incoming) =>
Right<BaseError, PlexMovie>(existing).AsTask();
private Task<Either<BaseError, PlexMovie>> UpdateArtwork(PlexMovie existing, PlexMovie incoming)
{
MovieMetadata existingMetadata = existing.MovieMetadata.Head();
MovieMetadata incomingMetadata = incoming.MovieMetadata.Head();
UpdateArtworkIfNeeded(existingMetadata, incomingMetadata, ArtworkKind.Poster);
UpdateArtworkIfNeeded(existingMetadata, incomingMetadata, ArtworkKind.FanArt);
return Right<BaseError, PlexMovie>(existing).AsTask();
}
private void UpdateArtworkIfNeeded(
MovieMetadata existingMetadata,
MovieMetadata incomingMetadata,
ArtworkKind artworkKind)
{
Option<Artwork> maybeIncomingArtwork = Optional(incomingMetadata.Artwork).Flatten()
.Find(a => a.ArtworkKind == artworkKind);
maybeIncomingArtwork.Match(
incomingArtwork =>
{
Option<Artwork> maybeExistingArtwork = Optional(existingMetadata.Artwork).Flatten()
.Find(a => a.ArtworkKind == artworkKind);
maybeExistingArtwork.Match(
existingArtwork =>
{
existingArtwork.Path = incomingArtwork.Path;
existingArtwork.DateUpdated = incomingArtwork.DateUpdated;
},
() =>
{
existingMetadata.Artwork ??= new List<Artwork>();
existingMetadata.Artwork.Add(incomingArtwork);
});
},
() =>
{
existingMetadata.Artwork ??= new List<Artwork>();
existingMetadata.Artwork.RemoveAll(a => a.ArtworkKind == artworkKind);
});
}
}
}

2
ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs

@ -75,6 +75,8 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -75,6 +75,8 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
Option<PlexMovie> maybeExisting = await _dbContext.PlexMovies
.Include(i => i.MovieMetadata)
.ThenInclude(mm => mm.Genres)
.Include(i => i.MovieMetadata)
.ThenInclude(mm => mm.Artwork)
.Include(i => i.MediaVersions)
.ThenInclude(mv => mv.MediaFiles)
.OrderBy(i => i.Key)

Loading…
Cancel
Save