diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-26 11:47:15 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-26 11:47:15 -0500 |
| commit | 63f3cf97dada179fc6e9e3a177504d3e7b36321c (patch) | |
| tree | b6810d34b9bc46d61e8565ec4fc0f0c178cd0b35 /MediaBrowser.Controller | |
| parent | 91416cb8a83eadde908e810afea981b6e4bed234 (diff) | |
add option to merge metadata and IBN paths
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Devices/IDeviceManager.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/AdultVideo.cs | 19 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/MusicArtist.cs | 59 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 34 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 33 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserView.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/IMusicManager.cs | 17 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/IUserViewManager.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Playlists/Playlist.cs | 29 |
13 files changed, 70 insertions, 174 deletions
diff --git a/MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs b/MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs new file mode 100644 index 0000000000..b3f3bb9025 --- /dev/null +++ b/MediaBrowser.Controller/Devices/CameraImageUploadInfo.cs @@ -0,0 +1,10 @@ +using MediaBrowser.Model.Devices; + +namespace MediaBrowser.Controller.Devices +{ + public class CameraImageUploadInfo + { + public LocalFileInfo FileInfo { get; set; } + public DeviceInfo Device { get; set; } + } +} diff --git a/MediaBrowser.Controller/Devices/IDeviceManager.cs b/MediaBrowser.Controller/Devices/IDeviceManager.cs index f5010bb455..78eebd9942 100644 --- a/MediaBrowser.Controller/Devices/IDeviceManager.cs +++ b/MediaBrowser.Controller/Devices/IDeviceManager.cs @@ -3,7 +3,6 @@ using MediaBrowser.Model.Events; using MediaBrowser.Model.Querying; using MediaBrowser.Model.Session; using System; -using System.Collections.Generic; using System.IO; using System.Threading.Tasks; @@ -15,6 +14,10 @@ namespace MediaBrowser.Controller.Devices /// Occurs when [device options updated]. /// </summary> event EventHandler<GenericEventArgs<DeviceInfo>> DeviceOptionsUpdated; + /// <summary> + /// Occurs when [camera image uploaded]. + /// </summary> + event EventHandler<GenericEventArgs<CameraImageUploadInfo>> CameraImageUploaded; /// <summary> /// Registers the device. diff --git a/MediaBrowser.Controller/Entities/AdultVideo.cs b/MediaBrowser.Controller/Entities/AdultVideo.cs deleted file mode 100644 index 6c3f7851ea..0000000000 --- a/MediaBrowser.Controller/Entities/AdultVideo.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace MediaBrowser.Controller.Entities -{ - [Obsolete] - public class AdultVideo : Video, IHasProductionLocations, IHasTaglines - { - public List<string> ProductionLocations { get; set; } - - public List<string> Taglines { get; set; } - - public AdultVideo() - { - Taglines = new List<string>(); - ProductionLocations = new List<string>(); - } - } -} diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index 00a7e8b672..b9a38d594e 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -1,11 +1,11 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Users; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; -using MediaBrowser.Model.Users; namespace MediaBrowser.Controller.Entities.Audio { @@ -181,10 +181,4 @@ namespace MediaBrowser.Controller.Entities.Audio return id; } } - - [Obsolete] - public class MusicAlbumDisc : Folder - { - - } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index 5cca91202f..4cc3f18927 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -129,43 +129,20 @@ namespace MediaBrowser.Controller.Entities.Audio var others = items.Except(songs).ToList(); var totalItems = songs.Count + others.Count; - var percentages = new Dictionary<Guid, double>(totalItems); - - var tasks = new List<Task>(); + var numComplete = 0; // Refresh songs foreach (var item in songs) { - if (tasks.Count >= 2) - { - await Task.WhenAll(tasks).ConfigureAwait(false); - tasks.Clear(); - } - cancellationToken.ThrowIfCancellationRequested(); - var innerProgress = new ActionableProgress<double>(); - // Avoid implicitly captured closure - var currentChild = item; - innerProgress.RegisterAction(p => - { - lock (percentages) - { - percentages[currentChild.Id] = p / 100; - - var percent = percentages.Values.Sum(); - percent /= totalItems; - percent *= 100; - progress.Report(percent); - } - }); - - var taskChild = item; - tasks.Add(Task.Run(async () => await RefreshItem(taskChild, refreshOptions, innerProgress, cancellationToken).ConfigureAwait(false), cancellationToken)); - } + await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); - await Task.WhenAll(tasks).ConfigureAwait(false); - tasks.Clear(); + numComplete++; + double percent = numComplete; + percent /= totalItems; + progress.Report(percent * 100); + } // Refresh current item await RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); @@ -175,31 +152,17 @@ namespace MediaBrowser.Controller.Entities.Audio { cancellationToken.ThrowIfCancellationRequested(); - // Avoid implicitly captured closure - var currentChild = item; - await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); - lock (percentages) - { - percentages[currentChild.Id] = 1; - var percent = percentages.Values.Sum(); - percent /= totalItems; - percent *= 100; - progress.Report(percent); - } + numComplete++; + double percent = numComplete; + percent /= totalItems; + progress.Report(percent * 100); } progress.Report(100); } - private async Task RefreshItem(BaseItem item, MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken) - { - await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); - - progress.Report(100); - } - public ArtistInfo GetLookupInfo() { var info = GetItemLookupInfo<ArtistInfo>(); diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 9cc320095a..8c13c7e66e 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -283,7 +283,17 @@ namespace MediaBrowser.Controller.Entities { get { - return _children ?? (_children = LoadChildrenInternal()); + if (_children == null) + { + lock (_childrenSyncLock) + { + if (_children == null) + { + _children = LoadChildrenInternal(); + } + } + } + return _children; } } @@ -749,28 +759,6 @@ namespace MediaBrowser.Controller.Entities return childrenItems; } - /// <summary> - /// Retrieves the child. - /// </summary> - /// <param name="child">The child.</param> - /// <returns>BaseItem.</returns> - private BaseItem RetrieveChild(Guid child) - { - var item = LibraryManager.GetItemById(child); - - if (item != null) - { - if (item is IByReferenceItem) - { - return LibraryManager.GetOrAddByReferenceItem(item); - } - - item.Parent = this; - } - - return item; - } - private BaseItem RetrieveChild(BaseItem child) { if (child.Id == Guid.Empty) diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index e08d88b028..dea97aed48 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -143,31 +143,19 @@ namespace MediaBrowser.Controller.Entities.Movies var items = GetRecursiveChildren().ToList(); var totalItems = items.Count; - var percentages = new Dictionary<Guid, double>(totalItems); + var numComplete = 0; // Refresh songs foreach (var item in items) { cancellationToken.ThrowIfCancellationRequested(); - var innerProgress = new ActionableProgress<double>(); - // Avoid implicitly captured closure - var currentChild = item; - innerProgress.RegisterAction(p => - { - lock (percentages) - { - percentages[currentChild.Id] = p / 100; - - var percent = percentages.Values.Sum(); - percent /= totalItems; - percent *= 100; - progress.Report(percent); - } - }); - - // Avoid implicitly captured closure - await RefreshItem(item, refreshOptions, innerProgress, cancellationToken).ConfigureAwait(false); + await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); + + numComplete++; + double percent = numComplete; + percent /= totalItems; + progress.Report(percent * 100); } // Refresh current item @@ -176,13 +164,6 @@ namespace MediaBrowser.Controller.Entities.Movies progress.Report(100); } - private async Task RefreshItem(BaseItem item, MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken) - { - await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); - - progress.Report(100); - } - public override bool IsVisible(User user) { if (base.IsVisible(user)) diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index f1436d45e7..cd179eb428 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -64,8 +64,7 @@ namespace MediaBrowser.Controller.Entities { CollectionType.Books, CollectionType.HomeVideos, - CollectionType.Photos, - string.Empty + CollectionType.Photos }; var collectionFolder = folder as ICollectionFolder; diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 1572c1af04..a24a42535b 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -409,12 +409,21 @@ namespace MediaBrowser.Controller.Entities private QueryResult<BaseItem> GetMusicLatest(Folder parent, User user, InternalItemsQuery query) { - query.SortBy = new[] { ItemSortBy.DateCreated, ItemSortBy.SortName }; - query.SortOrder = SortOrder.Descending; + var items = _userViewManager.GetLatestItems(new LatestItemsQuery + { + UserId = user.Id.ToString("N"), + Limit = GetSpecialItemsLimit(), + IncludeItemTypes = new[] { typeof(Audio.Audio).Name }, + ParentId = (parent == null ? null : parent.Id.ToString("N")), + GroupItems = true - var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => i is MusicVideo || i is Audio.Audio && FilterItem(i, query)); + }).Select(i => i.Item1); - return PostFilterAndSort(items, parent, GetSpecialItemsLimit(), query); + query.SortBy = new string[] { }; + + //var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => i is MusicVideo || i is Audio.Audio && FilterItem(i, query)); + + return PostFilterAndSort(items, parent, null, query); } private async Task<QueryResult<BaseItem>> GetMovieFolders(Folder parent, User user, InternalItemsQuery query) @@ -741,7 +750,7 @@ namespace MediaBrowser.Controller.Entities private async Task<QueryResult<BaseItem>> GetGameGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query) { - var items = GetRecursiveChildren(queryParent, user, new[] {CollectionType.Games}, + var items = GetRecursiveChildren(queryParent, user, new[] { CollectionType.Games }, i => i is Game && i.Genres.Contains(displayParent.Name, StringComparer.OrdinalIgnoreCase)); return GetResult(items, queryParent, query); @@ -1686,7 +1695,7 @@ namespace MediaBrowser.Controller.Entities return parent.GetRecursiveChildren(user); } - private IEnumerable<BaseItem> GetRecursiveChildren(Folder parent, User user, IEnumerable<string> viewTypes, Func<BaseItem,bool> filter) + private IEnumerable<BaseItem> GetRecursiveChildren(Folder parent, User user, IEnumerable<string> viewTypes, Func<BaseItem, bool> filter) { if (parent == null || parent is UserView) { diff --git a/MediaBrowser.Controller/Library/IMusicManager.cs b/MediaBrowser.Controller/Library/IMusicManager.cs index f66f18401d..0ce0687cc1 100644 --- a/MediaBrowser.Controller/Library/IMusicManager.cs +++ b/MediaBrowser.Controller/Library/IMusicManager.cs @@ -1,6 +1,5 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Playlists; using System.Collections.Generic; namespace MediaBrowser.Controller.Library @@ -13,7 +12,7 @@ namespace MediaBrowser.Controller.Library /// <param name="item">The item.</param> /// <param name="user">The user.</param> /// <returns>IEnumerable{Audio}.</returns> - IEnumerable<Audio> GetInstantMixFromSong(Audio item, User user); + IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user); /// <summary> /// Gets the instant mix from artist. /// </summary> @@ -22,20 +21,6 @@ namespace MediaBrowser.Controller.Library /// <returns>IEnumerable{Audio}.</returns> IEnumerable<Audio> GetInstantMixFromArtist(string name, User user); /// <summary> - /// Gets the instant mix from album. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="user">The user.</param> - /// <returns>IEnumerable{Audio}.</returns> - IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user); - /// <summary> - /// Gets the instant mix from playlist. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="user">The user.</param> - /// <returns>IEnumerable<Audio>.</returns> - IEnumerable<Audio> GetInstantMixFromPlaylist(Playlist item, User user); - /// <summary> /// Gets the instant mix from genre. /// </summary> /// <param name="genres">The genres.</param> diff --git a/MediaBrowser.Controller/Library/IUserViewManager.cs b/MediaBrowser.Controller/Library/IUserViewManager.cs index 727ccd00a6..f55c179248 100644 --- a/MediaBrowser.Controller/Library/IUserViewManager.cs +++ b/MediaBrowser.Controller/Library/IUserViewManager.cs @@ -1,5 +1,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Library; +using MediaBrowser.Model.Querying; +using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -16,5 +18,7 @@ namespace MediaBrowser.Controller.Library Task<UserView> GetUserView(string type, string sortName, CancellationToken cancellationToken); Task<UserView> GetUserView(string category, string type, User user, string sortName, CancellationToken cancellationToken); + + List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request); } } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 0667730fdd..867d9b0c54 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -101,6 +101,7 @@ <Compile Include="Collections\ICollectionManager.cs" /> <Compile Include="Connect\IConnectManager.cs" /> <Compile Include="Connect\UserLinkResult.cs" /> + <Compile Include="Devices\CameraImageUploadInfo.cs" /> <Compile Include="Devices\IDeviceManager.cs" /> <Compile Include="Devices\IDeviceRepository.cs" /> <Compile Include="Dlna\ControlRequest.cs" /> @@ -117,7 +118,6 @@ <Compile Include="Drawing\ImageStream.cs" /> <Compile Include="Dto\DtoOptions.cs" /> <Compile Include="Dto\IDtoService.cs" /> - <Compile Include="Entities\AdultVideo.cs" /> <Compile Include="Entities\Audio\IHasAlbumArtist.cs" /> <Compile Include="Entities\Audio\IHasMusicGenres.cs" /> <Compile Include="Entities\Book.cs" /> diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs index 071a9bf934..0f0c6a97ed 100644 --- a/MediaBrowser.Controller/Playlists/Playlist.cs +++ b/MediaBrowser.Controller/Playlists/Playlist.cs @@ -113,38 +113,17 @@ namespace MediaBrowser.Controller.Playlists return LibraryManager.Sort(items, user, new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName }, SortOrder.Ascending); } - // Grab these explicitly to avoid the sorting that will happen below - var collection = item as BoxSet; - if (collection != null) - { - var items = user == null - ? collection.Children - : collection.GetChildren(user, true); - - return items - .Where(m => !m.IsFolder); - } - - // Grab these explicitly to avoid the sorting that will happen below - var season = item as Season; - if (season != null) - { - var items = user == null - ? season.Children - : season.GetChildren(user, true); - - return items - .Where(m => !m.IsFolder); - } - var folder = item as Folder; - if (folder != null) { var items = user == null ? folder.GetRecursiveChildren(m => !m.IsFolder) : folder.GetRecursiveChildren(user, m => !m.IsFolder); + if (folder.IsPreSorted) + { + return items; + } return LibraryManager.Sort(items, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending); } |
