A few more bug fixes (#3876)
Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>
This commit is contained in:
parent
4b9bbc5d78
commit
d909e03baf
21 changed files with 3940 additions and 45 deletions
|
|
@ -16,6 +16,7 @@ using API.DTOs.Scrobbling;
|
|||
using API.DTOs.SeriesDetail;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Interfaces;
|
||||
using API.Entities.Metadata;
|
||||
using API.Entities.MetadataMatching;
|
||||
using API.Entities.Person;
|
||||
|
|
@ -526,6 +527,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
if (madeMetadataModification)
|
||||
{
|
||||
_unitOfWork.SeriesRepository.Update(series);
|
||||
_unitOfWork.SeriesRepository.Update(series.Metadata);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -782,7 +784,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (externalCharacters == null || externalCharacters.Count == 0) return false;
|
||||
|
||||
if (series.Metadata.CharacterLocked && !settings.HasOverride(MetadataSettingField.People))
|
||||
if (series.Metadata.CharacterLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.People))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -849,7 +851,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.People);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -864,7 +866,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (upstreamArtists.Count == 0) return false;
|
||||
|
||||
if (series.Metadata.CoverArtistLocked && !settings.HasOverride(MetadataSettingField.People))
|
||||
if (series.Metadata.CoverArtistLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.People))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -907,6 +909,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
await DownloadAndSetPersonCovers(upstreamArtists);
|
||||
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.People);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -920,7 +923,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (upstreamWriters.Count == 0) return false;
|
||||
|
||||
if (series.Metadata.WriterLocked && !settings.HasOverride(MetadataSettingField.People))
|
||||
if (series.Metadata.WriterLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.People))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -963,7 +966,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
await _unitOfWork.CommitAsync();
|
||||
|
||||
await DownloadAndSetPersonCovers(upstreamWriters);
|
||||
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.People);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -973,7 +976,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (!settings.EnableTags || processedTags.Count == 0) return false;
|
||||
|
||||
if (series.Metadata.TagsLocked && !settings.HasOverride(MetadataSettingField.Tags))
|
||||
if (series.Metadata.TagsLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.Tags))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -990,6 +993,11 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
madeModification = true;
|
||||
}, () => series.Metadata.TagsLocked = true);
|
||||
|
||||
if (madeModification)
|
||||
{
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.Tags);
|
||||
}
|
||||
|
||||
return madeModification;
|
||||
}
|
||||
|
||||
|
|
@ -1014,7 +1022,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (!settings.EnableGenres || processedGenres.Count == 0) return false;
|
||||
|
||||
if (series.Metadata.GenresLocked && !settings.HasOverride(MetadataSettingField.Genres))
|
||||
if (series.Metadata.GenresLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.Genres))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1035,6 +1043,12 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
{
|
||||
if (series.Metadata.Genres.FirstOrDefault(g => g.NormalizedTitle == genre.NormalizedTitle) != null) continue;
|
||||
series.Metadata.Genres.Add(genre);
|
||||
madeModification = true;
|
||||
}
|
||||
|
||||
if (madeModification)
|
||||
{
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.Genres);
|
||||
}
|
||||
|
||||
return madeModification;
|
||||
|
|
@ -1044,7 +1058,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
{
|
||||
if (!settings.EnablePublicationStatus) return false;
|
||||
|
||||
if (series.Metadata.PublicationStatusLocked && !settings.HasOverride(MetadataSettingField.PublicationStatus))
|
||||
if (series.Metadata.PublicationStatusLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.PublicationStatus))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1058,6 +1072,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
series.Metadata.PublicationStatus = status;
|
||||
series.Metadata.PublicationStatusLocked = true;
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.PublicationStatus);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -1071,7 +1086,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
private bool UpdateAgeRating(Series series, MetadataSettingsDto settings, IEnumerable<string> allExternalTags)
|
||||
{
|
||||
|
||||
if (series.Metadata.AgeRatingLocked && !settings.HasOverride(MetadataSettingField.AgeRating))
|
||||
if (series.Metadata.AgeRatingLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.AgeRating))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1087,6 +1102,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
if (series.Metadata.AgeRating <= ageRating)
|
||||
{
|
||||
series.Metadata.AgeRating = ageRating;
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.AgeRating);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1127,7 +1143,10 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
madeModification = UpdateChapterTitle(chapter, settings, potentialMatch.Title, series.Name) || madeModification;
|
||||
madeModification = UpdateChapterSummary(chapter, settings, potentialMatch.Summary) || madeModification;
|
||||
madeModification = UpdateChapterReleaseDate(chapter, settings, potentialMatch.ReleaseDate) || madeModification;
|
||||
madeModification = await UpdateChapterPublisher(chapter, settings, potentialMatch.Publisher) || madeModification;
|
||||
|
||||
var hasUpdatedPublisher = await UpdateChapterPublisher(chapter, settings, potentialMatch.Publisher);
|
||||
if (hasUpdatedPublisher) chapter.AddKPlusOverride(MetadataSettingField.ChapterPublisher);
|
||||
madeModification = hasUpdatedPublisher || madeModification;
|
||||
|
||||
madeModification = await UpdateChapterPeople(chapter, settings, PersonRole.CoverArtist, potentialMatch.Artists) || madeModification;
|
||||
madeModification = await UpdateChapterPeople(chapter, settings, PersonRole.Writer, potentialMatch.Writers) || madeModification;
|
||||
|
|
@ -1245,17 +1264,18 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (string.IsNullOrEmpty(summary)) return false;
|
||||
|
||||
if (chapter.SummaryLocked && !settings.HasOverride(MetadataSettingField.ChapterSummary))
|
||||
if (chapter.SummaryLocked && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterSummary))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(summary) && !settings.HasOverride(MetadataSettingField.ChapterSummary))
|
||||
if (!string.IsNullOrWhiteSpace(summary) && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterSummary))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
chapter.Summary = StringHelper.RemoveSourceInDescription(StringHelper.SquashBreaklines(summary));
|
||||
chapter.AddKPlusOverride(MetadataSettingField.ChapterSummary);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1265,17 +1285,18 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (string.IsNullOrEmpty(title)) return false;
|
||||
|
||||
if (chapter.TitleNameLocked && !settings.HasOverride(MetadataSettingField.ChapterTitle))
|
||||
if (chapter.TitleNameLocked && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterTitle))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!title.Contains(seriesName) && !settings.HasOverride(MetadataSettingField.ChapterTitle))
|
||||
if (!title.Contains(seriesName) && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterTitle))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
chapter.TitleName = title;
|
||||
chapter.AddKPlusOverride(MetadataSettingField.ChapterTitle);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1285,17 +1306,18 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (releaseDate == null || releaseDate == DateTime.MinValue) return false;
|
||||
|
||||
if (chapter.ReleaseDateLocked && !settings.HasOverride(MetadataSettingField.ChapterReleaseDate))
|
||||
if (chapter.ReleaseDateLocked && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterReleaseDate))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!settings.HasOverride(MetadataSettingField.ChapterReleaseDate))
|
||||
if (!HasForceOverride(settings, chapter, MetadataSettingField.ChapterReleaseDate))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
chapter.ReleaseDate = releaseDate.Value;
|
||||
chapter.AddKPlusOverride(MetadataSettingField.ChapterReleaseDate);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1305,12 +1327,12 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (string.IsNullOrEmpty(publisher)) return false;
|
||||
|
||||
if (chapter.PublisherLocked && !settings.HasOverride(MetadataSettingField.ChapterPublisher))
|
||||
if (chapter.PublisherLocked && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterPublisher))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(publisher) && !settings.HasOverride(MetadataSettingField.ChapterPublisher))
|
||||
if (!string.IsNullOrWhiteSpace(publisher) && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterPublisher))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1332,7 +1354,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (string.IsNullOrEmpty(coverUrl)) return false;
|
||||
|
||||
if (chapter.CoverImageLocked && !settings.HasOverride(MetadataSettingField.ChapterCovers))
|
||||
if (chapter.CoverImageLocked && !HasForceOverride(settings, chapter, MetadataSettingField.ChapterCovers))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1343,6 +1365,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
}
|
||||
|
||||
await DownloadChapterCovers(chapter, coverUrl);
|
||||
chapter.AddKPlusOverride(MetadataSettingField.ChapterCovers);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1352,7 +1375,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (staff?.Count == 0) return false;
|
||||
|
||||
if (chapter.IsPersonRoleLocked(role) && !settings.HasOverride(MetadataSettingField.People))
|
||||
if (chapter.IsPersonRoleLocked(role) && !HasForceOverride(settings, chapter, MetadataSettingField.People))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1401,7 +1424,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (string.IsNullOrEmpty(externalMetadata.CoverUrl)) return false;
|
||||
|
||||
if (series.CoverImageLocked && !settings.HasOverride(MetadataSettingField.Covers))
|
||||
if (series.CoverImageLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.Covers))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1412,6 +1435,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
}
|
||||
|
||||
await DownloadSeriesCovers(series, externalMetadata.CoverUrl);
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.Covers);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1422,17 +1446,18 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (!externalMetadata.StartDate.HasValue) return false;
|
||||
|
||||
if (series.Metadata.ReleaseYearLocked && !settings.HasOverride(MetadataSettingField.StartDate))
|
||||
if (series.Metadata.ReleaseYearLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.StartDate))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (series.Metadata.ReleaseYear != 0 && !settings.HasOverride(MetadataSettingField.StartDate))
|
||||
if (series.Metadata.ReleaseYear != 0 && !HasForceOverride(settings, series.Metadata, MetadataSettingField.StartDate))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
series.Metadata.ReleaseYear = externalMetadata.StartDate.Value.Year;
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.StartDate);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1440,12 +1465,12 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
{
|
||||
if (!settings.EnableLocalizedName) return false;
|
||||
|
||||
if (series.LocalizedNameLocked && !settings.HasOverride(MetadataSettingField.LocalizedName))
|
||||
if (series.LocalizedNameLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.LocalizedName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(series.LocalizedName) && !settings.HasOverride(MetadataSettingField.LocalizedName))
|
||||
if (!string.IsNullOrWhiteSpace(series.LocalizedName) && !HasForceOverride(settings, series.Metadata, MetadataSettingField.LocalizedName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1471,6 +1496,7 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
}
|
||||
|
||||
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.LocalizedName);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1480,17 +1506,18 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
if (string.IsNullOrEmpty(externalMetadata.Summary)) return false;
|
||||
|
||||
if (series.Metadata.SummaryLocked && !settings.HasOverride(MetadataSettingField.Summary))
|
||||
if (series.Metadata.SummaryLocked && !HasForceOverride(settings, series.Metadata, MetadataSettingField.Summary))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(series.Metadata.Summary) && !settings.HasOverride(MetadataSettingField.Summary))
|
||||
if (!string.IsNullOrWhiteSpace(series.Metadata.Summary) && !HasForceOverride(settings, series.Metadata, MetadataSettingField.Summary))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
series.Metadata.Summary = StringHelper.RemoveSourceInDescription(StringHelper.SquashBreaklines(externalMetadata.Summary));
|
||||
series.Metadata.AddKPlusOverride(MetadataSettingField.Summary);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1509,7 +1536,8 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
{
|
||||
try
|
||||
{
|
||||
await _coverDbService.SetSeriesCoverByUrl(series, coverUrl, false, true);
|
||||
// Only choose the better image if we're overriding a user provided cover
|
||||
await _coverDbService.SetSeriesCoverByUrl(series, coverUrl, false, !series.Metadata.HasSetKPlusMetadata(MetadataSettingField.Covers));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -1881,4 +1909,10 @@ public class ExternalMetadataService : IExternalMetadataService
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static bool HasForceOverride(MetadataSettingsDto settings, IHasKPlusMetadata kPlusMetadata,
|
||||
MetadataSettingField field)
|
||||
{
|
||||
return settings.HasOverride(field) || kPlusMetadata.HasSetKPlusMetadata(field);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue