aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs33
1 files changed, 32 insertions, 1 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index f85be5100..99ab07648 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -1383,6 +1383,28 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}
}
+ private QueryResult<BaseItem> GetEmbyRecordings(RecordingQuery query, User user)
+ {
+ var folders = EmbyTV.EmbyTV.Current.GetRecordingFolders()
+ .SelectMany(i => i.Locations)
+ .Distinct(StringComparer.OrdinalIgnoreCase)
+ .Select(i => _libraryManager.FindByPath(i, true))
+ .Where(i => i != null)
+ .Where(i => i.IsVisibleStandalone(user))
+ .ToList();
+
+ var items = _libraryManager.GetItemsResult(new InternalItemsQuery(user)
+ {
+ MediaTypes = new[] { MediaType.Video },
+ Recursive = true,
+ AncestorIds = folders.Select(i => i.Id.ToString("N")).ToArray(),
+ ExcludeLocationTypes = new[] { LocationType.Virtual },
+ Limit = Math.Min(10, query.Limit ?? int.MaxValue)
+ });
+
+ return items;
+ }
+
public async Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken)
{
var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId);
@@ -1391,6 +1413,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return new QueryResult<BaseItem>();
}
+ if (user != null && !(query.IsInProgress ?? false))
+ {
+ var initialResult = GetEmbyRecordings(query, user);
+ if (initialResult.TotalRecordCount > 0)
+ {
+ return initialResult;
+ }
+ }
+
await RefreshRecordings(cancellationToken).ConfigureAwait(false);
var internalQuery = new InternalItemsQuery(user)
@@ -2060,7 +2091,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}, cancellationToken).ConfigureAwait(false);
- var recordings = recordingResult.Items.Cast<ILiveTvRecording>().ToList();
+ var recordings = recordingResult.Items.OfType<ILiveTvRecording>().ToList();
var groups = new List<BaseItemDto>();