aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/TV/MissingEpisodeProvider.cs')
-rw-r--r--MediaBrowser.Providers/TV/MissingEpisodeProvider.cs18
1 files changed, 17 insertions, 1 deletions
diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
index c33b9d549..171a5af5f 100644
--- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
@@ -91,6 +91,8 @@ namespace MediaBrowser.Providers.TV
.Where(i => i.Item1 != -1 && i.Item2 != -1)
.ToList();
+ var hasBadData = HasInvalidContent(group);
+
var anySeasonsRemoved = await RemoveObsoleteOrMissingSeasons(group, episodeLookup, cancellationToken)
.ConfigureAwait(false);
@@ -105,7 +107,7 @@ namespace MediaBrowser.Providers.TV
hasNewSeasons = await AddDummySeasonFolders(series, cancellationToken).ConfigureAwait(false);
}
- if (_config.Configuration.EnableInternetProviders)
+ if (!hasBadData && _config.Configuration.EnableInternetProviders)
{
var seriesConfig = _config.Configuration.MetadataOptions.FirstOrDefault(i => string.Equals(i.ItemType, typeof(Series).Name, StringComparison.OrdinalIgnoreCase));
@@ -131,6 +133,20 @@ namespace MediaBrowser.Providers.TV
}
/// <summary>
+ /// Returns true if a series has any seasons or episodes without season or episode numbers
+ /// If this data is missing no virtual items will be added in order to prevent possible duplicates
+ /// </summary>
+ /// <param name="group"></param>
+ /// <returns></returns>
+ private bool HasInvalidContent(IEnumerable<Series> group)
+ {
+ var allItems = group.ToList().SelectMany(i => i.RecursiveChildren).ToList();
+
+ return allItems.OfType<Season>().Any(i => !i.IndexNumber.HasValue) ||
+ allItems.OfType<Episode>().Any(i => !i.IndexNumber.HasValue || !i.ParentIndexNumber.HasValue);
+ }
+
+ /// <summary>
/// For series with episodes directly under the series folder, this adds dummy seasons to enable regular browsing and metadata
/// </summary>
/// <param name="series"></param>