aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/TV
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/TV')
-rw-r--r--Emby.Server.Implementations/TV/SeriesPostScanTask.cs1
-rw-r--r--Emby.Server.Implementations/TV/TVSeriesManager.cs65
2 files changed, 40 insertions, 26 deletions
diff --git a/Emby.Server.Implementations/TV/SeriesPostScanTask.cs b/Emby.Server.Implementations/TV/SeriesPostScanTask.cs
index 23b6a3cb5..764df8baf 100644
--- a/Emby.Server.Implementations/TV/SeriesPostScanTask.cs
+++ b/Emby.Server.Implementations/TV/SeriesPostScanTask.cs
@@ -217,6 +217,7 @@ namespace Emby.Server.Implementations.TV
public void Dispose()
{
Dispose(true);
+ GC.SuppressFinalize(this);
}
/// <summary>
diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs
index 876c5d58b..0b81f7e93 100644
--- a/Emby.Server.Implementations/TV/TVSeriesManager.cs
+++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs
@@ -42,7 +42,7 @@ namespace Emby.Server.Implementations.TV
int? limit = null;
if (!string.IsNullOrWhiteSpace(request.SeriesId))
{
- var series = _libraryManager.GetItemById(request.SeriesId);
+ var series = _libraryManager.GetItemById(request.SeriesId) as Series;
if (series != null)
{
@@ -51,29 +51,34 @@ namespace Emby.Server.Implementations.TV
}
}
- if (string.IsNullOrWhiteSpace(presentationUniqueKey) && limit.HasValue)
+ if (!string.IsNullOrWhiteSpace(presentationUniqueKey))
+ {
+ return GetResult(GetNextUpEpisodes(request, user, new[] { presentationUniqueKey }, dtoOptions), request);
+ }
+
+ if (limit.HasValue)
{
limit = limit.Value + 10;
}
var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
- IncludeItemTypes = new[] { typeof(Series).Name },
- SortBy = new[] { ItemSortBy.SeriesDatePlayed },
- SortOrder = SortOrder.Descending,
- PresentationUniqueKey = presentationUniqueKey,
+ IncludeItemTypes = new[] { typeof(Episode).Name },
+ OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.DatePlayed, SortOrder.Descending) },
+ SeriesPresentationUniqueKey = presentationUniqueKey,
Limit = limit,
ParentId = parentIdGuid,
Recursive = true,
DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions
{
- Fields = new List<ItemFields>
+ Fields = new ItemFields[]
{
- ItemFields.PresentationUniqueKey
+ ItemFields.SeriesPresentationUniqueKey
}
- }
+ },
+ GroupBySeriesPresentationUniqueKey = true
- }).Cast<Series>().Select(GetUniqueSeriesKey);
+ }).Cast<Episode>().Select(GetUniqueSeriesKey);
// Avoid implicitly captured closure
var episodes = GetNextUpEpisodes(request, user, items, dtoOptions);
@@ -94,7 +99,7 @@ namespace Emby.Server.Implementations.TV
int? limit = null;
if (!string.IsNullOrWhiteSpace(request.SeriesId))
{
- var series = _libraryManager.GetItemById(request.SeriesId);
+ var series = _libraryManager.GetItemById(request.SeriesId) as Series;
if (series != null)
{
@@ -103,28 +108,33 @@ namespace Emby.Server.Implementations.TV
}
}
- if (string.IsNullOrWhiteSpace(presentationUniqueKey) && limit.HasValue)
+ if (!string.IsNullOrWhiteSpace(presentationUniqueKey))
+ {
+ return GetResult(GetNextUpEpisodes(request, user, new [] { presentationUniqueKey }, dtoOptions), request);
+ }
+
+ if (limit.HasValue)
{
limit = limit.Value + 10;
}
var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
- IncludeItemTypes = new[] { typeof(Series).Name },
- SortBy = new[] { ItemSortBy.SeriesDatePlayed },
- SortOrder = SortOrder.Descending,
- PresentationUniqueKey = presentationUniqueKey,
+ IncludeItemTypes = new[] { typeof(Episode).Name },
+ OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.DatePlayed, SortOrder.Descending) },
+ SeriesPresentationUniqueKey = presentationUniqueKey,
Limit = limit,
DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions
{
- Fields = new List<ItemFields>
+ Fields = new ItemFields[]
{
- ItemFields.PresentationUniqueKey
+ ItemFields.SeriesPresentationUniqueKey
},
EnableImages = false
- }
+ },
+ GroupBySeriesPresentationUniqueKey = true
- }, parentsFolders.Cast<BaseItem>().ToList()).Cast<Series>().Select(GetUniqueSeriesKey);
+ }, parentsFolders.Cast<BaseItem>().ToList()).Cast<Episode>().Select(GetUniqueSeriesKey);
// Avoid implicitly captured closure
var episodes = GetNextUpEpisodes(request, user, items, dtoOptions);
@@ -167,7 +177,12 @@ namespace Emby.Server.Implementations.TV
.Where(i => i != null);
}
- private string GetUniqueSeriesKey(BaseItem series)
+ private string GetUniqueSeriesKey(Episode episode)
+ {
+ return episode.SeriesPresentationUniqueKey;
+ }
+
+ private string GetUniqueSeriesKey(Series series)
{
return series.GetPresentationUniqueKey();
}
@@ -183,14 +198,13 @@ namespace Emby.Server.Implementations.TV
AncestorWithPresentationUniqueKey = null,
SeriesPresentationUniqueKey = seriesKey,
IncludeItemTypes = new[] { typeof(Episode).Name },
- SortBy = new[] { ItemSortBy.SortName },
- SortOrder = SortOrder.Descending,
+ OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Descending) },
IsPlayed = true,
Limit = 1,
ParentIndexNumberNotEquals = 0,
DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions
{
- Fields = new List<ItemFields>
+ Fields = new ItemFields[]
{
ItemFields.SortName
},
@@ -206,8 +220,7 @@ namespace Emby.Server.Implementations.TV
AncestorWithPresentationUniqueKey = null,
SeriesPresentationUniqueKey = seriesKey,
IncludeItemTypes = new[] { typeof(Episode).Name },
- SortBy = new[] { ItemSortBy.SortName },
- SortOrder = SortOrder.Ascending,
+ OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending) },
Limit = 1,
IsPlayed = false,
IsVirtualItem = false,