diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 53 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Sync/IHasDynamicAccess.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Sync/IServerSyncProvider.cs | 34 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Sync/ISyncDataProvider.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Sync/SyncedFileInfo.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Controller/packages.config | 1 |
7 files changed, 65 insertions, 50 deletions
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 562ae9f62..63ce223af 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -50,8 +50,8 @@ namespace MediaBrowser.Controller.Entities { var user = query.User; - if (query.IncludeItemTypes != null && - query.IncludeItemTypes.Length == 1 && + if (query.IncludeItemTypes != null && + query.IncludeItemTypes.Length == 1 && string.Equals(query.IncludeItemTypes[0], "Playlist", StringComparison.OrdinalIgnoreCase)) { if (!string.Equals(viewType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase)) @@ -117,9 +117,7 @@ namespace MediaBrowser.Controller.Entities case CollectionType.LiveTv: { - var result = await GetLiveTvFolders(user).ConfigureAwait(false); - - return GetResult(result, queryParent, query); + return await GetLiveTvView(queryParent, user, query).ConfigureAwait(false); } case CollectionType.Books: @@ -215,6 +213,9 @@ namespace MediaBrowser.Controller.Entities case SpecialFolder.MusicLatest: return GetMusicLatest(queryParent, user, query); + case SpecialFolder.MusicPlaylists: + return await GetMusicPlaylists(queryParent, user, query).ConfigureAwait(false); + case SpecialFolder.MusicAlbums: return GetMusicAlbums(queryParent, user, query); @@ -277,12 +278,13 @@ namespace MediaBrowser.Controller.Entities var list = new List<BaseItem>(); list.Add(await GetUserView(SpecialFolder.MusicLatest, user, "0", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicAlbums, user, "1", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicAlbumArtists, user, "2", parent).ConfigureAwait(false)); - //list.Add(await GetUserView(SpecialFolder.MusicArtists, user, "3", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicSongs, user, "4", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicGenres, user, "5", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicFavorites, user, "6", parent).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.MusicPlaylists, user, "1", parent).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.MusicAlbums, user, "2", parent).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.MusicAlbumArtists, user, "3", parent).ConfigureAwait(false)); + //list.Add(await GetUserView(SpecialFolder.MusicArtists, user, "4", parent).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.MusicSongs, user, "5", parent).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.MusicGenres, user, "6", parent).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.MusicFavorites, user, "7", parent).ConfigureAwait(false)); return GetResult(list, parent, query); } @@ -423,6 +425,14 @@ namespace MediaBrowser.Controller.Entities return GetResult(artists, parent, query); } + private Task<QueryResult<BaseItem>> GetMusicPlaylists(Folder parent, User user, InternalItemsQuery query) + { + query.IncludeItemTypes = new[] { "Playlist" }; + query.Recursive = true; + + return parent.GetItems(query); + } + private QueryResult<BaseItem> GetMusicAlbums(Folder parent, User user, InternalItemsQuery query) { var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => (i is MusicAlbum) && FilterItem(i, query)); @@ -1769,17 +1779,26 @@ namespace MediaBrowser.Controller.Entities return parent.GetRecursiveChildren(user, filter); } - private async Task<IEnumerable<BaseItem>> GetLiveTvFolders(User user) + private async Task<QueryResult<BaseItem>> GetLiveTvView(Folder queryParent, User user, InternalItemsQuery query) { - var list = new List<BaseItem>(); + if (query.Recursive) + { + return await _liveTvManager.GetInternalRecordings(new RecordingQuery + { + IsInProgress = false, + Status = RecordingStatus.Completed, + UserId = user.Id.ToString("N") - var parent = user.RootFolder; + }, CancellationToken.None).ConfigureAwait(false); + } + + var list = new List<BaseItem>(); //list.Add(await GetUserSubView(SpecialFolder.LiveTvNowPlaying, user, "0", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.LiveTvChannels, user, string.Empty, parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.LiveTvRecordingGroups, user, string.Empty, parent).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.LiveTvChannels, user, string.Empty, user.RootFolder).ConfigureAwait(false)); + list.Add(await GetUserView(SpecialFolder.LiveTvRecordingGroups, user, string.Empty, user.RootFolder).ConfigureAwait(false)); - return list; + return GetResult(list, queryParent, query); } private async Task<UserView> GetUserView(string name, string type, User user, string sortName, BaseItem parent) diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index ba0c266b2..b9a161a9f 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -52,6 +52,10 @@ <SpecificVersion>False</SpecificVersion> <HintPath>..\packages\morelinq.1.1.0\lib\net35\MoreLinq.dll</HintPath> </Reference> + <Reference Include="Patterns.IO, Version=1.0.5580.36861, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\packages\Patterns.IO.1.0.0.3\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.IO.dll</HintPath> + </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Data" /> diff --git a/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs b/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs index f907de729..cf868a381 100644 --- a/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs +++ b/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs @@ -9,10 +9,10 @@ namespace MediaBrowser.Controller.Sync /// <summary> /// Gets the synced file information. /// </summary> - /// <param name="remotePath">The remote path.</param> + /// <param name="id">The identifier.</param> /// <param name="target">The target.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task<SyncedFileInfo>.</returns> - Task<SyncedFileInfo> GetSyncedFileInfo(string remotePath, SyncTarget target, CancellationToken cancellationToken); + Task<SyncedFileInfo> GetSyncedFileInfo(string id, SyncTarget target, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 46bbbd329..6b694d26d 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -1,6 +1,7 @@ -using MediaBrowser.Model.Sync; +using MediaBrowser.Model.Querying; +using MediaBrowser.Model.Sync; +using Patterns.IO; using System; -using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -13,46 +14,39 @@ namespace MediaBrowser.Controller.Sync /// Transfers the file. /// </summary> /// <param name="stream">The stream.</param> - /// <param name="remotePath">The remote path.</param> + /// <param name="pathParts">The path parts.</param> /// <param name="target">The target.</param> /// <param name="progress">The progress.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - Task<SyncedFileInfo> SendFile(Stream stream, string remotePath, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken); + Task<SyncedFileInfo> SendFile(Stream stream, string[] pathParts, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken); /// <summary> /// Deletes the file. /// </summary> - /// <param name="path">The path.</param> + /// <param name="id">The identifier.</param> /// <param name="target">The target.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - Task DeleteFile(string path, SyncTarget target, CancellationToken cancellationToken); + Task DeleteFile(string id, SyncTarget target, CancellationToken cancellationToken); /// <summary> /// Gets the file. /// </summary> - /// <param name="path">The path.</param> + /// <param name="id">The identifier.</param> /// <param name="target">The target.</param> /// <param name="progress">The progress.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task<Stream>.</returns> - Task<Stream> GetFile(string path, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken); + Task<Stream> GetFile(string id, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken); /// <summary> - /// Gets the full path. + /// Gets the files. /// </summary> - /// <param name="path">The path.</param> + /// <param name="query">The query.</param> /// <param name="target">The target.</param> - /// <returns>System.String.</returns> - string GetFullPath(IEnumerable<string> path, SyncTarget target); - - /// <summary> - /// Gets the parent directory path. - /// </summary> - /// <param name="path">The path.</param> - /// <param name="target">The target.</param> - /// <returns>System.String.</returns> - string GetParentDirectoryPath(string path, SyncTarget target); + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task<QueryResult<FileMetadata>>.</returns> + Task<QueryResult<FileMetadata>> GetFiles(FileQuery query, SyncTarget target, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Sync/ISyncDataProvider.cs b/MediaBrowser.Controller/Sync/ISyncDataProvider.cs index dc3edc4e4..ebff50cb0 100644 --- a/MediaBrowser.Controller/Sync/ISyncDataProvider.cs +++ b/MediaBrowser.Controller/Sync/ISyncDataProvider.cs @@ -7,20 +7,12 @@ namespace MediaBrowser.Controller.Sync public interface ISyncDataProvider { /// <summary> - /// Gets the server item ids. + /// Gets the local items. /// </summary> /// <param name="target">The target.</param> /// <param name="serverId">The server identifier.</param> - /// <returns>Task<List<System.String>>.</returns> - Task<List<string>> GetServerItemIds(SyncTarget target, string serverId); - - /// <summary> - /// Gets the synchronize job item ids. - /// </summary> - /// <param name="target">The target.</param> - /// <param name="serverId">The server identifier.</param> - /// <returns>Task<List<System.String>>.</returns> - Task<List<string>> GetSyncJobItemIds(SyncTarget target, string serverId); + /// <returns>Task<List<LocalItem>>.</returns> + Task<List<LocalItem>> GetLocalItems(SyncTarget target, string serverId); /// <summary> /// Adds the or update. diff --git a/MediaBrowser.Controller/Sync/SyncedFileInfo.cs b/MediaBrowser.Controller/Sync/SyncedFileInfo.cs index 550af2d55..844e7d890 100644 --- a/MediaBrowser.Controller/Sync/SyncedFileInfo.cs +++ b/MediaBrowser.Controller/Sync/SyncedFileInfo.cs @@ -20,6 +20,11 @@ namespace MediaBrowser.Controller.Sync /// </summary> /// <value>The required HTTP headers.</value> public Dictionary<string, string> RequiredHttpHeaders { get; set; } + /// <summary> + /// Gets or sets the identifier. + /// </summary> + /// <value>The identifier.</value> + public string Id { get; set; } public SyncedFileInfo() { diff --git a/MediaBrowser.Controller/packages.config b/MediaBrowser.Controller/packages.config index 6df166204..8d10de2f1 100644 --- a/MediaBrowser.Controller/packages.config +++ b/MediaBrowser.Controller/packages.config @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="morelinq" version="1.1.0" targetFramework="net45" /> + <package id="Patterns.IO" version="1.0.0.3" targetFramework="net45" /> </packages>
\ No newline at end of file |
