diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-04-12 14:58:21 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-04-12 14:58:21 -0400 |
| commit | 933fca78e65c146b3cf16eefce6410b21e18cdbe (patch) | |
| tree | 679c7f4410698a7f766094a5b5366bcf36bd496b /MediaBrowser.Controller | |
| parent | d4b61da59d9adabadb5ef7d96be30350f6d4f476 (diff) | |
support sync for live tv recordings
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Dto/IDtoService.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 20 | ||||
| -rw-r--r-- | MediaBrowser.Controller/LiveTv/ILiveTvManager.cs | 11 |
3 files changed, 35 insertions, 4 deletions
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 @@ -36,6 +36,14 @@ namespace MediaBrowser.Controller.Dto BaseItemDto GetBaseItemDto(BaseItem item, List<ItemFields> fields, User user = null, BaseItem owner = null); /// <summary> + /// Fills the synchronize information. + /// </summary> + /// <param name="dtos">The dtos.</param> + /// <param name="options">The options.</param> + /// <param name="user">The user.</param> + void FillSyncInfo(IEnumerable<IHasSyncInfo> dtos, DtoOptions options, User user); + + /// <summary> /// Gets the base item dto. /// </summary> /// <param name="item">The item.</param> 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<QueryResult<BaseItem>> 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. /// </summary> /// <param name="id">The identifier.</param> - /// <param name="user">The user.</param> + /// <param name="options">The options.</param> /// <param name="cancellationToken">The cancellation token.</param> + /// <param name="user">The user.</param> /// <returns>Task{RecordingInfoDto}.</returns> - Task<RecordingInfoDto> GetRecording(string id, CancellationToken cancellationToken, User user = null); + Task<RecordingInfoDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null); /// <summary> /// Gets the channel. @@ -103,14 +105,15 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{TimerInfoDto}.</returns> Task<SeriesTimerInfoDto> GetSeriesTimer(string id, CancellationToken cancellationToken); - + /// <summary> /// Gets the recordings. /// </summary> /// <param name="query">The query.</param> + /// <param name="options">The options.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>QueryResult{RecordingInfoDto}.</returns> - Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, CancellationToken cancellationToken); + Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken); /// <summary> /// Gets the timers. |
