aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-09-03 14:18:59 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-09-03 14:18:59 -0400
commitf646c0f29d97fbd3f43fbbb58739d3378a40edb8 (patch)
treecd0e1787d594b3befecee460699fcc6231b5dbe5
parent2d7c82d0dd8b51af58a2e187ef30639fdbfd918a (diff)
update season cleanup
-rw-r--r--MediaBrowser.Api/TvShowsService.cs2
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs26
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs50
-rw-r--r--MediaBrowser.Providers/TV/DummySeasonProvider.cs18
4 files changed, 27 insertions, 69 deletions
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index daaa6343d..a0d69317c 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -478,7 +478,7 @@ namespace MediaBrowser.Api
}
else
{
- episodes = series.GetSeasonEpisodes(user, season);
+ episodes = series.GetSeasonEpisodes(season, user);
}
}
else
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index 65b7c9955..5b50ad54e 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -185,34 +185,12 @@ namespace MediaBrowser.Controller.Entities.TV
public IEnumerable<Episode> GetEpisodes(Series series, User user, IEnumerable<Episode> allSeriesEpisodes)
{
- return series.GetSeasonEpisodes(user, this, allSeriesEpisodes);
+ return series.GetSeasonEpisodes(this, user, allSeriesEpisodes);
}
public IEnumerable<Episode> GetEpisodes()
{
- var episodes = GetRecursiveChildren().OfType<Episode>();
- var series = Series;
-
- if (series != null && series.ContainsEpisodesWithoutSeasonFolders)
- {
- var seasonNumber = IndexNumber;
- var list = episodes.ToList();
-
- if (seasonNumber.HasValue)
- {
- list.AddRange(series.GetRecursiveChildren().OfType<Episode>()
- .Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == seasonNumber.Value));
- }
- else
- {
- list.AddRange(series.GetRecursiveChildren().OfType<Episode>()
- .Where(i => !i.ParentIndexNumber.HasValue));
- }
-
- episodes = list.DistinctBy(i => i.Id);
- }
-
- return episodes;
+ return Series.GetSeasonEpisodes(this, null, null);
}
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index 4915cfedc..253566293 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -373,24 +373,7 @@ namespace MediaBrowser.Controller.Entities.TV
progress.Report(100);
}
- private IEnumerable<Episode> GetAllEpisodes(User user)
- {
- Logger.Debug("Series.GetAllEpisodes entering GetItemList");
-
- var result = LibraryManager.GetItemList(new InternalItemsQuery(user)
- {
- AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(this),
- IncludeItemTypes = new[] { typeof(Episode).Name },
- SortBy = new[] { ItemSortBy.SortName }
-
- }).Cast<Episode>().ToList();
-
- Logger.Debug("Series.GetAllEpisodes returning {0} episodes", result.Count);
-
- return result;
- }
-
- public IEnumerable<Episode> GetSeasonEpisodes(User user, Season parentSeason)
+ public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user)
{
var seriesKey = GetUniqueSeriesKey(this);
Logger.Debug("GetSeasonEpisodes seriesKey: {0}", seriesKey);
@@ -401,31 +384,34 @@ namespace MediaBrowser.Controller.Entities.TV
IncludeItemTypes = new[] { typeof(Episode).Name },
SortBy = new[] { ItemSortBy.SortName }
};
- var config = user.Configuration;
- if (!config.DisplayMissingEpisodes && !config.DisplayUnairedEpisodes)
- {
- query.IsVirtualItem = false;
- }
- else if (!config.DisplayMissingEpisodes)
- {
- query.IsMissing = false;
- }
- else if (!config.DisplayUnairedEpisodes)
+ if (user != null)
{
- query.IsVirtualUnaired = false;
+ var config = user.Configuration;
+ if (!config.DisplayMissingEpisodes && !config.DisplayUnairedEpisodes)
+ {
+ query.IsVirtualItem = false;
+ }
+ else if (!config.DisplayMissingEpisodes)
+ {
+ query.IsMissing = false;
+ }
+ else if (!config.DisplayUnairedEpisodes)
+ {
+ query.IsVirtualUnaired = false;
+ }
}
var allItems = LibraryManager.GetItemList(query).OfType<Episode>();
- return GetSeasonEpisodes(user, parentSeason, allItems);
+ return GetSeasonEpisodes(parentSeason, user, allItems);
}
- public IEnumerable<Episode> GetSeasonEpisodes(User user, Season parentSeason, IEnumerable<Episode> allSeriesEpisodes)
+ public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, IEnumerable<Episode> allSeriesEpisodes)
{
if (allSeriesEpisodes == null)
{
Logger.Debug("GetSeasonEpisodes allSeriesEpisodes is null");
- return GetSeasonEpisodes(user, parentSeason);
+ return GetSeasonEpisodes(parentSeason, user);
}
Logger.Debug("GetSeasonEpisodes FilterEpisodesBySeason");
diff --git a/MediaBrowser.Providers/TV/DummySeasonProvider.cs b/MediaBrowser.Providers/TV/DummySeasonProvider.cs
index fe0ad78be..b74eac219 100644
--- a/MediaBrowser.Providers/TV/DummySeasonProvider.cs
+++ b/MediaBrowser.Providers/TV/DummySeasonProvider.cs
@@ -138,8 +138,6 @@ namespace MediaBrowser.Providers.TV
.Where(i => i.LocationType == LocationType.Virtual)
.ToList();
- var episodes = series.GetRecursiveChildren().OfType<Episode>().ToList();
-
var seasonsToRemove = virtualSeasons
.Where(i =>
{
@@ -152,19 +150,15 @@ namespace MediaBrowser.Providers.TV
{
return true;
}
+ }
- // If there are no episodes with this season number, delete it
- if (episodes.All(e => !e.ParentIndexNumber.HasValue || e.ParentIndexNumber.Value != seasonNumber))
- {
- return true;
- }
-
- return false;
+ // If there are no episodes with this season number, delete it
+ if (!i.GetEpisodes().Any())
+ {
+ return true;
}
- // Season does not have a number
- // Remove if there are no episodes directly in series without a season number
- return episodes.All(s => s.ParentIndexNumber.HasValue || s.IsInSeasonFolder);
+ return false;
})
.ToList();