From 933fca78e65c146b3cf16eefce6410b21e18cdbe Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 12 Apr 2015 14:58:21 -0400 Subject: support sync for live tv recordings --- MediaBrowser.Controller/Dto/IDtoService.cs | 8 ++++++++ MediaBrowser.Controller/Entities/UserViewBuilder.cs | 20 ++++++++++++++++++++ MediaBrowser.Controller/LiveTv/ILiveTvManager.cs | 11 +++++++---- 3 files changed, 35 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Dto/IDtoService.cs b/MediaBrowser.Controller/Dto/IDtoService.cs index ea311d993..5ec8f274b 100644 --- a/MediaBrowser.Controller/Dto/IDtoService.cs +++ b/MediaBrowser.Controller/Dto/IDtoService.cs @@ -35,6 +35,14 @@ namespace MediaBrowser.Controller.Dto /// Task{BaseItemDto}. BaseItemDto GetBaseItemDto(BaseItem item, List fields, User user = null, BaseItem owner = null); + /// + /// Fills the synchronize information. + /// + /// The dtos. + /// The options. + /// The user. + void FillSyncInfo(IEnumerable dtos, DtoOptions options, User user); + /// /// Gets the base item dto. /// diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 5e5735d34..562ae9f62 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -50,6 +50,16 @@ namespace MediaBrowser.Controller.Entities { var user = query.User; + if (query.IncludeItemTypes != null && + query.IncludeItemTypes.Length == 1 && + string.Equals(query.IncludeItemTypes[0], "Playlist", StringComparison.OrdinalIgnoreCase)) + { + if (!string.Equals(viewType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase)) + { + return await FindPlaylists(queryParent, user, query).ConfigureAwait(false); + } + } + switch (viewType) { case CollectionType.Channels: @@ -240,6 +250,16 @@ namespace MediaBrowser.Controller.Entities } } + private async Task> FindPlaylists(Folder parent, User user, InternalItemsQuery query) + { + var collectionFolders = user.RootFolder.GetChildren(user, true).Select(i => i.Id).ToList(); + + var list = _playlistManager.GetPlaylists(user.Id.ToString("N")) + .Where(i => i.GetChildren(user, true).Any(media => _libraryManager.GetCollectionFolders(media).Select(c => c.Id).Any(collectionFolders.Contains))); + + return GetResult(list, parent, query); + } + private int GetSpecialItemsLimit() { return 50; diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index d5b5d92a6..4ee0565f9 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Dto; using MediaBrowser.Model.LiveTv; @@ -74,10 +75,11 @@ namespace MediaBrowser.Controller.LiveTv /// Gets the recording. /// /// The identifier. - /// The user. + /// The options. /// The cancellation token. + /// The user. /// Task{RecordingInfoDto}. - Task GetRecording(string id, CancellationToken cancellationToken, User user = null); + Task GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null); /// /// Gets the channel. @@ -103,14 +105,15 @@ namespace MediaBrowser.Controller.LiveTv /// The cancellation token. /// Task{TimerInfoDto}. Task GetSeriesTimer(string id, CancellationToken cancellationToken); - + /// /// Gets the recordings. /// /// The query. + /// The options. /// The cancellation token. /// QueryResult{RecordingInfoDto}. - Task> GetRecordings(RecordingQuery query, CancellationToken cancellationToken); + Task> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken); /// /// Gets the timers. -- cgit v1.2.3