diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-11 10:36:28 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-11 10:36:28 -0400 |
| commit | 3118196ac6639dd719f63888ccb16a33b4a4bc7e (patch) | |
| tree | a8b4f6e5a64b753b789ae03b31ccde2e4ddc49f9 /MediaBrowser.Providers | |
| parent | 66d2f2555565f46816051829b7418ec4296cc873 (diff) | |
update user data queries
Diffstat (limited to 'MediaBrowser.Providers')
| -rw-r--r-- | MediaBrowser.Providers/TV/SeasonMetadataService.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/TV/SeasonMetadataService.cs b/MediaBrowser.Providers/TV/SeasonMetadataService.cs index 1af1162897..292923d824 100644 --- a/MediaBrowser.Providers/TV/SeasonMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeasonMetadataService.cs @@ -7,6 +7,7 @@ using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using CommonIO; @@ -31,6 +32,13 @@ namespace MediaBrowser.Providers.TV } } + if (isFullRefresh || currentUpdateType > ItemUpdateType.None) + { + var episodes = item.GetEpisodes().ToList(); + updateType |= SavePremiereDate(item, episodes); + updateType |= SaveIsMissing(item, episodes); + } + return updateType; } @@ -38,5 +46,38 @@ namespace MediaBrowser.Providers.TV { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } + + private ItemUpdateType SavePremiereDate(Season item, List<Episode> episodes) + { + var dates = episodes.Where(i => i.PremiereDate.HasValue).Select(i => i.PremiereDate.Value).ToList(); + + DateTime? premiereDate = null; + + if (dates.Count > 0) + { + premiereDate = dates.Min(); + } + + if (item.PremiereDate != premiereDate) + { + item.PremiereDate = premiereDate; + return ItemUpdateType.MetadataEdit; + } + + return ItemUpdateType.None; + } + + private ItemUpdateType SaveIsMissing(Season item, List<Episode> episodes) + { + var isMissing = item.LocationType == LocationType.Virtual && episodes.All(i => i.IsMissingEpisode); + + if (item.IsMissingSeason != isMissing) + { + item.IsMissingSeason = isMissing; + return ItemUpdateType.MetadataEdit; + } + + return ItemUpdateType.None; + } } } |
