diff options
Diffstat (limited to 'MediaBrowser.Providers/TV/SeriesMetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/TV/SeriesMetadataService.cs | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index eeff03703..0b2aaa5a0 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -7,6 +7,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; +using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -16,76 +17,75 @@ namespace MediaBrowser.Providers.TV public class SeriesMetadataService : MetadataService<Series, SeriesInfo> { private readonly ILocalizationManager _localization; - private readonly ILibraryManager _libraryManager; - public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILocalizationManager localization, ILibraryManager libraryManager) - : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager, ILocalizationManager localization) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { _localization = localization; - _libraryManager = libraryManager; } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Series source, Series target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override async Task AfterMetadataRefresh(Series item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + await base.AfterMetadataRefresh(item, refreshOptions, cancellationToken).ConfigureAwait(false); - if (replaceData || target.SeasonCount == 0) + if (refreshOptions.IsPostRecursiveRefresh) { - target.SeasonCount = source.SeasonCount; + var provider = new DummySeasonProvider(ServerConfigurationManager, Logger, _localization, LibraryManager); + + try + { + await provider.Run(item, CancellationToken.None).ConfigureAwait(false); + } + catch (Exception ex) + { + Logger.ErrorException("Error in DummySeasonProvider", ex); + } } + } - if (replaceData || string.IsNullOrEmpty(target.AirTime)) + protected override bool IsFullLocalMetadata(Series item) + { + if (string.IsNullOrWhiteSpace(item.Overview)) { - target.AirTime = source.AirTime; + return false; } - - if (replaceData || !target.Status.HasValue) + if (!item.ProductionYear.HasValue) { - target.Status = source.Status; + return false; } + return base.IsFullLocalMetadata(item); + } + + protected override void MergeData(MetadataResult<Series> source, MetadataResult<Series> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + + var sourceItem = source.Item; + var targetItem = target.Item; - if (replaceData || target.AirDays == null || target.AirDays.Count == 0) + if (replaceData || targetItem.SeasonCount == 0) { - target.AirDays = source.AirDays; + targetItem.SeasonCount = sourceItem.SeasonCount; } - if (mergeMetadataSettings) + if (replaceData || string.IsNullOrEmpty(targetItem.AirTime)) { - target.DisplaySpecialsWithSeasons = source.DisplaySpecialsWithSeasons; + targetItem.AirTime = sourceItem.AirTime; } - } - protected override async Task AfterMetadataRefresh(Series item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) - { - await base.AfterMetadataRefresh(item, refreshOptions, cancellationToken).ConfigureAwait(false); - - if (refreshOptions.IsPostRecursiveRefresh) + if (replaceData || !targetItem.Status.HasValue) { - var provider = new DummySeasonProvider(ServerConfigurationManager, Logger, _localization, _libraryManager); - - await provider.Run(item, CancellationToken.None).ConfigureAwait(false); + targetItem.Status = sourceItem.Status; } - } - protected override bool IsFullLocalMetadata(Series item) - { - if (string.IsNullOrWhiteSpace(item.Overview)) + if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Count == 0) { - return false; + targetItem.AirDays = sourceItem.AirDays; } - if (!item.ProductionYear.HasValue) + + if (mergeMetadataSettings) { - return false; + targetItem.DisplaySpecialsWithSeasons = sourceItem.DisplaySpecialsWithSeasons; } - return base.IsFullLocalMetadata(item); } } } |
