Browse Source

fix search index updates for local libraries (#111)

pull/112/head
Jason Dove 5 years ago committed by GitHub
parent
commit
f06a04ed0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 92
      ErsatzTV.Core/Metadata/LocalMetadataProvider.cs

92
ErsatzTV.Core/Metadata/LocalMetadataProvider.cs

@ -113,7 +113,12 @@ namespace ErsatzTV.Core.Metadata @@ -113,7 +113,12 @@ namespace ErsatzTV.Core.Metadata
existing.Plot = metadata.Plot;
existing.Tagline = metadata.Tagline;
existing.Title = metadata.Title;
existing.DateAdded = metadata.DateAdded;
if (existing.DateAdded == DateTime.MinValue)
{
existing.DateAdded = metadata.DateAdded;
}
existing.DateUpdated = metadata.DateUpdated;
existing.MetadataKind = metadata.MetadataKind;
existing.OriginalTitle = metadata.OriginalTitle;
@ -143,11 +148,18 @@ namespace ErsatzTV.Core.Metadata @@ -143,11 +148,18 @@ namespace ErsatzTV.Core.Metadata
Optional(movie.MovieMetadata).Flatten().HeadOrNone().Match(
async existing =>
{
var updated = false;
existing.Outline = metadata.Outline;
existing.Plot = metadata.Plot;
existing.Tagline = metadata.Tagline;
existing.Title = metadata.Title;
existing.DateAdded = metadata.DateAdded;
if (existing.DateAdded == DateTime.MinValue)
{
existing.DateAdded = metadata.DateAdded;
}
existing.DateUpdated = metadata.DateUpdated;
existing.MetadataKind = metadata.MetadataKind;
existing.OriginalTitle = metadata.OriginalTitle;
@ -161,28 +173,40 @@ namespace ErsatzTV.Core.Metadata @@ -161,28 +173,40 @@ namespace ErsatzTV.Core.Metadata
.ToList())
{
existing.Genres.Remove(genre);
await _metadataRepository.RemoveGenre(genre);
if (await _metadataRepository.RemoveGenre(genre))
{
updated = true;
}
}
foreach (Genre genre in metadata.Genres.Filter(g => existing.Genres.All(g2 => g2.Name != g.Name))
.ToList())
{
existing.Genres.Add(genre);
await _movieRepository.AddGenre(existing, genre);
if (await _movieRepository.AddGenre(existing, genre))
{
updated = true;
}
}
foreach (Tag tag in existing.Tags.Filter(t => metadata.Tags.All(t2 => t2.Name != t.Name))
.ToList())
{
existing.Tags.Remove(tag);
await _metadataRepository.RemoveTag(tag);
if (await _metadataRepository.RemoveTag(tag))
{
updated = true;
}
}
foreach (Tag tag in metadata.Tags.Filter(t => existing.Tags.All(t2 => t2.Name != t.Name))
.ToList())
{
existing.Tags.Add(tag);
await _movieRepository.AddTag(existing, tag);
if (await _movieRepository.AddTag(existing, tag))
{
updated = true;
}
}
foreach (Studio studio in existing.Studios
@ -190,7 +214,10 @@ namespace ErsatzTV.Core.Metadata @@ -190,7 +214,10 @@ namespace ErsatzTV.Core.Metadata
.ToList())
{
existing.Studios.Remove(studio);
await _metadataRepository.RemoveStudio(studio);
if (await _metadataRepository.RemoveStudio(studio))
{
updated = true;
}
}
foreach (Studio studio in metadata.Studios
@ -198,10 +225,13 @@ namespace ErsatzTV.Core.Metadata @@ -198,10 +225,13 @@ namespace ErsatzTV.Core.Metadata
.ToList())
{
existing.Studios.Add(studio);
await _movieRepository.AddStudio(existing, studio);
if (await _movieRepository.AddStudio(existing, studio))
{
updated = true;
}
}
return await _metadataRepository.Update(existing);
return await _metadataRepository.Update(existing) || updated;
},
async () =>
{
@ -218,11 +248,18 @@ namespace ErsatzTV.Core.Metadata @@ -218,11 +248,18 @@ namespace ErsatzTV.Core.Metadata
Optional(show.ShowMetadata).Flatten().HeadOrNone().Match(
async existing =>
{
var updated = false;
existing.Outline = metadata.Outline;
existing.Plot = metadata.Plot;
existing.Tagline = metadata.Tagline;
existing.Title = metadata.Title;
existing.DateAdded = metadata.DateAdded;
if (existing.DateAdded == DateTime.MinValue)
{
existing.DateAdded = metadata.DateAdded;
}
existing.DateUpdated = metadata.DateUpdated;
existing.MetadataKind = metadata.MetadataKind;
existing.OriginalTitle = metadata.OriginalTitle;
@ -236,28 +273,40 @@ namespace ErsatzTV.Core.Metadata @@ -236,28 +273,40 @@ namespace ErsatzTV.Core.Metadata
.ToList())
{
existing.Genres.Remove(genre);
await _metadataRepository.RemoveGenre(genre);
if (await _metadataRepository.RemoveGenre(genre))
{
updated = true;
}
}
foreach (Genre genre in metadata.Genres.Filter(g => existing.Genres.All(g2 => g2.Name != g.Name))
.ToList())
{
existing.Genres.Add(genre);
await _televisionRepository.AddGenre(existing, genre);
if (await _televisionRepository.AddGenre(existing, genre))
{
updated = true;
}
}
foreach (Tag tag in existing.Tags.Filter(t => metadata.Tags.All(t2 => t2.Name != t.Name))
.ToList())
{
existing.Tags.Remove(tag);
await _metadataRepository.RemoveTag(tag);
if (await _metadataRepository.RemoveTag(tag))
{
updated = true;
}
}
foreach (Tag tag in metadata.Tags.Filter(t => existing.Tags.All(t2 => t2.Name != t.Name))
.ToList())
{
existing.Tags.Add(tag);
await _televisionRepository.AddTag(existing, tag);
if (await _televisionRepository.AddTag(existing, tag))
{
updated = true;
}
}
foreach (Studio studio in existing.Studios
@ -265,7 +314,10 @@ namespace ErsatzTV.Core.Metadata @@ -265,7 +314,10 @@ namespace ErsatzTV.Core.Metadata
.ToList())
{
existing.Studios.Remove(studio);
await _metadataRepository.RemoveStudio(studio);
if (await _metadataRepository.RemoveStudio(studio))
{
updated = true;
}
}
foreach (Studio studio in metadata.Studios
@ -273,10 +325,13 @@ namespace ErsatzTV.Core.Metadata @@ -273,10 +325,13 @@ namespace ErsatzTV.Core.Metadata
.ToList())
{
existing.Studios.Add(studio);
await _televisionRepository.AddStudio(existing, studio);
if (await _televisionRepository.AddStudio(existing, studio))
{
updated = true;
}
}
return await _metadataRepository.Update(existing);
return await _metadataRepository.Update(existing) || updated;
},
async () =>
{
@ -332,6 +387,7 @@ namespace ErsatzTV.Core.Metadata @@ -332,6 +387,7 @@ namespace ErsatzTV.Core.Metadata
nfo => new ShowMetadata
{
MetadataKind = MetadataKind.Sidecar,
DateAdded = DateTime.UtcNow,
DateUpdated = File.GetLastWriteTimeUtc(nfoFileName),
Title = nfo.Title,
Plot = nfo.Plot,
@ -364,6 +420,7 @@ namespace ErsatzTV.Core.Metadata @@ -364,6 +420,7 @@ namespace ErsatzTV.Core.Metadata
var metadata = new EpisodeMetadata
{
MetadataKind = MetadataKind.Sidecar,
DateAdded = DateTime.UtcNow,
DateUpdated = File.GetLastWriteTimeUtc(nfoFileName),
Title = nfo.Title,
ReleaseDate = GetAired(0, nfo.Aired),
@ -390,6 +447,7 @@ namespace ErsatzTV.Core.Metadata @@ -390,6 +447,7 @@ namespace ErsatzTV.Core.Metadata
nfo => new MovieMetadata
{
MetadataKind = MetadataKind.Sidecar,
DateAdded = DateTime.UtcNow,
DateUpdated = File.GetLastWriteTimeUtc(nfoFileName),
Title = nfo.Title,
Year = nfo.Year,

Loading…
Cancel
Save