|
|
|
@ -201,23 +201,30 @@ namespace MediaBrowser.Controller.Entities.TV
|
|
|
|
|
|
|
|
|
|
public IEnumerable<Season> GetSeasons(User user, bool includeMissingSeasons, bool includeVirtualUnaired)
|
|
|
|
|
{
|
|
|
|
|
var seriesIds = LibraryManager.GetItemIds(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
PresentationUniqueKey = PresentationUniqueKey,
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Series).Name }
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
IEnumerable<Season> seasons;
|
|
|
|
|
|
|
|
|
|
if (seriesIds.Count > 1)
|
|
|
|
|
if (EnablePooling())
|
|
|
|
|
{
|
|
|
|
|
seasons = LibraryManager.GetItemList(new InternalItemsQuery(user)
|
|
|
|
|
var seriesIds = LibraryManager.GetItemIds(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
PresentationUniqueKey = PresentationUniqueKey,
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Series).Name }
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (seriesIds.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
AncestorIds = seriesIds.Select(i => i.ToString("N")).ToArray(),
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Season).Name },
|
|
|
|
|
SortBy = new[] { ItemSortBy.SortName }
|
|
|
|
|
seasons = LibraryManager.GetItemList(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
AncestorIds = seriesIds.Select(i => i.ToString("N")).ToArray(),
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Season).Name },
|
|
|
|
|
SortBy = new[] { ItemSortBy.SortName }
|
|
|
|
|
|
|
|
|
|
}).Cast<Season>();
|
|
|
|
|
}).Cast<Season>();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
seasons = LibraryManager.Sort(base.GetChildren(user, true), user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).OfType<Season>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -232,7 +239,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
|
|
|
|
{
|
|
|
|
|
if (!includeMissingSeasons)
|
|
|
|
|
{
|
|
|
|
|
seasons = seasons.Where(i => !i.IsMissingSeason);
|
|
|
|
|
seasons = seasons.Where(i => !(i.IsMissingSeason ?? false));
|
|
|
|
|
}
|
|
|
|
|
if (!includeVirtualUnaired)
|
|
|
|
|
{
|
|
|
|
@ -338,25 +345,38 @@ namespace MediaBrowser.Controller.Entities.TV
|
|
|
|
|
return GetEpisodes(user, seasonNumber, config.DisplayMissingEpisodes, config.DisplayUnairedEpisodes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IEnumerable<Episode> GetEpisodes(User user, int seasonNumber, bool includeMissingEpisodes, bool includeVirtualUnairedEpisodes)
|
|
|
|
|
private bool EnablePooling()
|
|
|
|
|
{
|
|
|
|
|
var seriesIds = LibraryManager.GetItemIds(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
PresentationUniqueKey = PresentationUniqueKey,
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Series).Name }
|
|
|
|
|
});
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IEnumerable<Episode> GetEpisodes(User user, int seasonNumber, bool includeMissingEpisodes, bool includeVirtualUnairedEpisodes)
|
|
|
|
|
{
|
|
|
|
|
IEnumerable<Episode> episodes;
|
|
|
|
|
|
|
|
|
|
if (seriesIds.Count > 1)
|
|
|
|
|
if (EnablePooling())
|
|
|
|
|
{
|
|
|
|
|
episodes = LibraryManager.GetItemList(new InternalItemsQuery(user)
|
|
|
|
|
var seriesIds = LibraryManager.GetItemIds(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
AncestorIds = seriesIds.Select(i => i.ToString("N")).ToArray(),
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Episode).Name },
|
|
|
|
|
SortBy = new[] { ItemSortBy.SortName }
|
|
|
|
|
PresentationUniqueKey = PresentationUniqueKey,
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Series).Name }
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}).Cast<Episode>();
|
|
|
|
|
if (seriesIds.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
episodes = LibraryManager.GetItemList(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
AncestorIds = seriesIds.Select(i => i.ToString("N")).ToArray(),
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Episode).Name },
|
|
|
|
|
SortBy = new[] { ItemSortBy.SortName }
|
|
|
|
|
|
|
|
|
|
}).Cast<Episode>();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
episodes = GetRecursiveChildren(user, i => i is Episode)
|
|
|
|
|
.Cast<Episode>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|