diff options
Diffstat (limited to 'MediaBrowser.Providers')
5 files changed, 22 insertions, 16 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index c3d1ec080..9aa6485f1 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -194,6 +194,15 @@ namespace MediaBrowser.Providers.Manager return updateType; } + protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken) + { + if (result.Item.SupportsPeople && result.People != null) + { + await LibraryManager.UpdatePeople(result.Item as BaseItem, result.People.ToList()); + } + await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false); + } + private readonly Task _cachedTask = Task.FromResult(true); protected virtual Task AfterMetadataRefresh(TItemType item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { @@ -328,15 +337,6 @@ namespace MediaBrowser.Providers.Manager return providers; } - protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken) - { - if (result.Item.SupportsPeople) - { - await LibraryManager.UpdatePeople(result.Item as BaseItem, result.People); - } - await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false); - } - public bool CanRefresh(IHasMetadata item) { return item is TItemType; diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs index a0a0493d5..fa4840f10 100644 --- a/MediaBrowser.Providers/Manager/ProviderUtils.cs +++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs @@ -105,9 +105,9 @@ namespace MediaBrowser.Providers.Manager if (!lockedFields.Contains(MetadataFields.Cast)) { - if (replaceData || targetResult.People.Count == 0) + if (replaceData || targetResult.People == null || targetResult.People.Count == 0) { - targetResult.People = sourceResult.People; + targetResult.People = sourceResult.People ?? new List<PersonInfo>(); } } diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index 6854ff12b..5b5afc6c7 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -231,13 +231,15 @@ namespace MediaBrowser.Providers.Movies movie.AddGenre(genre); } + resultItem.ResetPeople(); + //Actors, Directors, Writers - all in People //actors come from cast if (movieData.casts != null && movieData.casts.cast != null) { foreach (var actor in movieData.casts.cast.OrderBy(a => a.order)) { - PeopleHelper.AddPerson(resultItem.People, new PersonInfo { Name = actor.name.Trim(), Role = actor.character, Type = PersonType.Actor, SortOrder = actor.order }); + resultItem.AddPerson(new PersonInfo { Name = actor.name.Trim(), Role = actor.character, Type = PersonType.Actor, SortOrder = actor.order }); } } @@ -246,7 +248,7 @@ namespace MediaBrowser.Providers.Movies { foreach (var person in movieData.casts.crew) { - PeopleHelper.AddPerson(resultItem.People, new PersonInfo { Name = person.name.Trim(), Role = person.job, Type = person.department }); + resultItem.AddPerson(new PersonInfo { Name = person.name.Trim(), Role = person.job, Type = person.department }); } } diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs index f36de88c9..1702a5044 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs @@ -330,6 +330,8 @@ namespace MediaBrowser.Providers.TV { reader.MoveToContent(); + result.ResetPeople(); + // Loop through each element while (reader.Read()) { @@ -603,7 +605,7 @@ namespace MediaBrowser.Providers.TV .Where(i => !string.IsNullOrWhiteSpace(i)) .Select(str => new PersonInfo { Type = personType, Name = str.Trim() })) { - PeopleHelper.AddPerson(result.People, person); + result.AddPerson(person); } } @@ -632,7 +634,7 @@ namespace MediaBrowser.Providers.TV { if (!string.IsNullOrWhiteSpace(person.Name)) { - PeopleHelper.AddPerson(result.People, person); + result.AddPerson(person); } } } diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index 4c93bd57c..3298fbc76 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -180,6 +180,8 @@ namespace MediaBrowser.Providers.TV cancellationToken.ThrowIfCancellationRequested(); + result.ResetPeople(); + FetchActors(result, actorsXmlPath); } @@ -721,7 +723,7 @@ namespace MediaBrowser.Providers.TV if (!string.IsNullOrWhiteSpace(personInfo.Name)) { - PeopleHelper.AddPerson(result.People, personInfo); + result.AddPerson(personInfo); } } |
