Browse Source

fix synchronizing plex show metadata (#163)

pull/164/head
Jason Dove 5 years ago committed by GitHub
parent
commit
ececa62446
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 66
      ErsatzTV.Core/Plex/PlexTelevisionLibraryScanner.cs

66
ErsatzTV.Core/Plex/PlexTelevisionLibraryScanner.cs

@ -124,52 +124,52 @@ namespace ErsatzTV.Core.Plex
// TODO: this probably doesn't work // TODO: this probably doesn't work
// plex doesn't seem to update genres returned by the main library call // plex doesn't seem to update genres returned by the main library call
if (incomingMetadata.DateUpdated > existingMetadata.DateUpdated) foreach (Genre genre in existingMetadata.Genres
.Filter(g => incomingMetadata.Genres.All(g2 => g2.Name != g.Name))
.ToList())
{ {
foreach (Genre genre in existingMetadata.Genres existingMetadata.Genres.Remove(genre);
.Filter(g => incomingMetadata.Genres.All(g2 => g2.Name != g.Name)) if (await _metadataRepository.RemoveGenre(genre))
.ToList())
{ {
existingMetadata.Genres.Remove(genre); result.IsUpdated = true;
if (await _metadataRepository.RemoveGenre(genre))
{
result.IsUpdated = true;
}
} }
}
foreach (Genre genre in incomingMetadata.Genres foreach (Genre genre in incomingMetadata.Genres
.Filter(g => existingMetadata.Genres.All(g2 => g2.Name != g.Name)) .Filter(g => existingMetadata.Genres.All(g2 => g2.Name != g.Name))
.ToList()) .ToList())
{
existingMetadata.Genres.Add(genre);
if (await _televisionRepository.AddGenre(existingMetadata, genre))
{ {
existingMetadata.Genres.Add(genre); result.IsUpdated = true;
if (await _televisionRepository.AddGenre(existingMetadata, genre))
{
result.IsUpdated = true;
}
} }
}
foreach (Studio studio in existingMetadata.Studios foreach (Studio studio in existingMetadata.Studios
.Filter(s => incomingMetadata.Studios.All(s2 => s2.Name != s.Name)) .Filter(s => incomingMetadata.Studios.All(s2 => s2.Name != s.Name))
.ToList()) .ToList())
{
existingMetadata.Studios.Remove(studio);
if (await _metadataRepository.RemoveStudio(studio))
{ {
existingMetadata.Studios.Remove(studio); result.IsUpdated = true;
if (await _metadataRepository.RemoveStudio(studio))
{
result.IsUpdated = true;
}
} }
}
foreach (Studio studio in incomingMetadata.Studios foreach (Studio studio in incomingMetadata.Studios
.Filter(s => existingMetadata.Studios.All(s2 => s2.Name != s.Name)) .Filter(s => existingMetadata.Studios.All(s2 => s2.Name != s.Name))
.ToList()) .ToList())
{
existingMetadata.Studios.Add(studio);
if (await _televisionRepository.AddStudio(existingMetadata, studio))
{ {
existingMetadata.Studios.Add(studio); result.IsUpdated = true;
if (await _televisionRepository.AddStudio(existingMetadata, studio))
{
result.IsUpdated = true;
}
} }
}
if (result.IsUpdated)
{
await _metadataRepository.MarkAsUpdated(existingMetadata, incomingMetadata.DateUpdated); await _metadataRepository.MarkAsUpdated(existingMetadata, incomingMetadata.DateUpdated);
} }

Loading…
Cancel
Save