aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-11 10:36:28 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-11 10:36:28 -0400
commit3118196ac6639dd719f63888ccb16a33b4a4bc7e (patch)
treea8b4f6e5a64b753b789ae03b31ccde2e4ddc49f9 /MediaBrowser.Providers
parent66d2f2555565f46816051829b7418ec4296cc873 (diff)
update user data queries
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/TV/SeasonMetadataService.cs41
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;
+ }
}
}