|
|
|
@ -277,12 +277,16 @@ namespace MediaBrowser.Controller.Dto
|
|
|
|
|
|
|
|
|
|
if (item.IsFolder)
|
|
|
|
|
{
|
|
|
|
|
if (fields.Contains(ItemFields.ItemCounts))
|
|
|
|
|
var hasItemCounts = fields.Contains(ItemFields.ItemCounts);
|
|
|
|
|
|
|
|
|
|
if (hasItemCounts || fields.Contains(ItemFields.CumulativeRunTimeTicks))
|
|
|
|
|
{
|
|
|
|
|
var folder = (Folder)item;
|
|
|
|
|
|
|
|
|
|
// Skip sorting since all we want is a count
|
|
|
|
|
dto.ChildCount = folder.GetChildren(user, true).Count();
|
|
|
|
|
if (hasItemCounts)
|
|
|
|
|
{
|
|
|
|
|
dto.ChildCount = folder.GetChildren(user, true).Count();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SetSpecialCounts(folder, user, dto, _userDataRepository);
|
|
|
|
|
}
|
|
|
|
@ -749,6 +753,7 @@ namespace MediaBrowser.Controller.Dto
|
|
|
|
|
var rcentlyAddedItemCount = 0;
|
|
|
|
|
var recursiveItemCount = 0;
|
|
|
|
|
var unplayed = 0;
|
|
|
|
|
long runtime = 0;
|
|
|
|
|
|
|
|
|
|
double totalPercentPlayed = 0;
|
|
|
|
|
|
|
|
|
@ -788,6 +793,8 @@ namespace MediaBrowser.Controller.Dto
|
|
|
|
|
{
|
|
|
|
|
unplayed++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
runtime += child.RunTimeTicks ?? 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dto.RecursiveItemCount = recursiveItemCount;
|
|
|
|
@ -798,6 +805,11 @@ namespace MediaBrowser.Controller.Dto
|
|
|
|
|
{
|
|
|
|
|
dto.PlayedPercentage = totalPercentPlayed / recursiveItemCount;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (runtime > 0)
|
|
|
|
|
{
|
|
|
|
|
dto.CumulativeRunTimeTicks = runtime;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -833,7 +845,9 @@ namespace MediaBrowser.Controller.Dto
|
|
|
|
|
|
|
|
|
|
)).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
var dictionary = entities.Where(i => i != null).ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase);
|
|
|
|
|
var dictionary = entities.Where(i => i != null)
|
|
|
|
|
.Distinct()
|
|
|
|
|
.ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase);
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < people.Count; i++)
|
|
|
|
|
{
|
|
|
|
|