diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-30 23:50:09 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-30 23:50:09 -0500 |
| commit | 9685b81db5b975f57739a9dcc6c2cdb6c4c4dbcf (patch) | |
| tree | e9046e6d8e3df2f205b48fbcd9389bdb18290b55 /MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs | |
| parent | 117c1b76b2f7a09024f308b1aa692a1e5282d1c5 (diff) | |
convert artist providers
Diffstat (limited to 'MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs index 62b2e627f..b9b4e40d7 100644 --- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs +++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs @@ -1,11 +1,15 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; +using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -14,11 +18,13 @@ namespace MediaBrowser.Providers.BoxSets public class BoxSetMetadataService : ConcreteMetadataService<BoxSet> { private readonly ILibraryManager _libraryManager; + private readonly ILocalizationManager _iLocalizationManager; - public BoxSetMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, ILibraryManager libraryManager) + public BoxSetMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, ILibraryManager libraryManager, ILocalizationManager iLocalizationManager) : base(serverConfigurationManager, logger, providerManager, providerRepo) { _libraryManager = libraryManager; + _iLocalizationManager = iLocalizationManager; } /// <summary> @@ -37,5 +43,36 @@ namespace MediaBrowser.Providers.BoxSets { return _libraryManager.UpdateItem(item, reason, cancellationToken); } + + protected override ItemUpdateType AfterMetadataRefresh(BoxSet item) + { + var updateType = base.AfterMetadataRefresh(item); + + if (!item.LockedFields.Contains(MetadataFields.OfficialRating)) + { + var currentOfficialRating = item.OfficialRating; + + // Gather all possible ratings + var ratings = item.RecursiveChildren + .Concat(item.GetLinkedChildren()) + .Where(i => i is Movie || i is Series) + .Select(i => i.OfficialRating) + .Where(i => !string.IsNullOrEmpty(i)) + .Distinct(StringComparer.OrdinalIgnoreCase) + .Select(i => new Tuple<string, int?>(i, _iLocalizationManager.GetRatingLevel(i))) + .OrderBy(i => i.Item2 ?? 1000) + .Select(i => i.Item1); + + item.OfficialRating = ratings.FirstOrDefault() ?? item.OfficialRating; + + if (!string.Equals(currentOfficialRating ?? string.Empty, item.OfficialRating ?? string.Empty, + StringComparison.OrdinalIgnoreCase)) + { + updateType = updateType | ItemUpdateType.MetadataDownload; + } + } + + return updateType; + } } } |
