From a1a56557ece84d8b726a6c06b2620fa43ff22461 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 25 Jan 2015 01:34:50 -0500 Subject: sync updates --- .../Dto/DtoService.cs | 38 ++++++++++++-------- .../EntryPoints/LibraryChangedNotifier.cs | 3 +- .../FileOrganization/EpisodeFileOrganizer.cs | 11 +++--- .../Intros/DefaultIntroProvider.cs | 40 ++++++++++------------ .../Library/LibraryManager.cs | 13 +++---- .../Library/LocalTrailerPostScanTask.cs | 7 ++-- .../Library/MusicManager.cs | 17 ++++----- .../Library/SearchEngine.cs | 9 +++-- .../Library/Validators/ArtistsValidator.cs | 7 ++-- .../Library/Validators/GameGenresValidator.cs | 2 +- .../Library/Validators/GenresValidator.cs | 2 +- .../Library/Validators/MusicGenresValidator.cs | 2 +- .../Library/Validators/StudiosValidator.cs | 2 +- .../Library/Validators/YearsPostScanTask.cs | 2 +- .../Photos/PhotoAlbumImageProvider.cs | 2 +- .../Playlists/ManualPlaylistsFolder.cs | 3 +- .../Playlists/PlaylistManager.cs | 3 +- .../ScheduledTasks/ChapterImagesTask.cs | 4 +-- .../Session/SessionManager.cs | 7 ++-- .../Sync/SyncJobProcessor.cs | 10 ++---- .../TV/TVSeriesManager.cs | 16 +++++---- 21 files changed, 101 insertions(+), 99 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 85a31337b8..5640f27457 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -96,10 +96,10 @@ namespace MediaBrowser.Server.Implementations.Dto if (byName != null && !(item is LiveTvChannel)) { var libraryItems = user != null ? - user.RootFolder.GetRecursiveChildren(user) : - _libraryManager.RootFolder.RecursiveChildren; + user.RootFolder.GetRecursiveChildren(user, byName.ItemFilter) : + _libraryManager.RootFolder.GetRecursiveChildren(byName.ItemFilter); - SetItemByNameInfo(item, dto, byName.GetTaggedItems(libraryItems).ToList(), user); + SetItemByNameInfo(item, dto, libraryItems.ToList(), user); } FillSyncInfo(dto, item, itemIdsWithSyncJobs, options); @@ -119,10 +119,10 @@ namespace MediaBrowser.Server.Implementations.Dto if (byName != null && !(item is LiveTvChannel)) { var libraryItems = user != null ? - user.RootFolder.GetRecursiveChildren(user) : - _libraryManager.RootFolder.RecursiveChildren; + user.RootFolder.GetRecursiveChildren(user, byName.ItemFilter) : + _libraryManager.RootFolder.GetRecursiveChildren(byName.ItemFilter); - SetItemByNameInfo(item, dto, byName.GetTaggedItems(libraryItems).ToList(), user); + SetItemByNameInfo(item, dto, libraryItems.ToList(), user); return dto; } @@ -153,7 +153,14 @@ namespace MediaBrowser.Server.Implementations.Dto var result = _syncManager.GetLibraryItemIds(new SyncJobItemQuery { - TargetId = deviceId + TargetId = deviceId, + Statuses = new List + { + SyncJobItemStatus.Converting, + SyncJobItemStatus.Queued, + SyncJobItemStatus.Transferring, + SyncJobItemStatus.Synced + } }); return result.Items; @@ -451,9 +458,8 @@ namespace MediaBrowser.Server.Implementations.Dto if (!string.IsNullOrEmpty(item.Album)) { var parentAlbum = _libraryManager.RootFolder - .GetRecursiveChildren() - .Where(i => i is MusicAlbum) - .FirstOrDefault(i => string.Equals(i.Name, item.Album, StringComparison.OrdinalIgnoreCase)); + .GetRecursiveChildren(i => i is MusicAlbum && string.Equals(i.Name, item.Album, StringComparison.OrdinalIgnoreCase)) + .FirstOrDefault(); if (parentAlbum != null) { @@ -1385,7 +1391,7 @@ namespace MediaBrowser.Server.Implementations.Dto { linkedChildren = user == null ? folder.GetRecursiveChildren().ToList() - : folder.GetRecursiveChildren(user, true).ToList(); + : folder.GetRecursiveChildren(user).ToList(); var parentWithBackdrop = linkedChildren.FirstOrDefault(i => i.GetImages(ImageType.Backdrop).Any()); @@ -1402,7 +1408,7 @@ namespace MediaBrowser.Server.Implementations.Dto { linkedChildren = user == null ? folder.GetRecursiveChildren().ToList() - : folder.GetRecursiveChildren(user, true).ToList(); + : folder.GetRecursiveChildren(user).ToList(); } var parentWithImage = linkedChildren.FirstOrDefault(i => i.GetImages(ImageType.Primary).Any()); @@ -1479,12 +1485,14 @@ namespace MediaBrowser.Server.Implementations.Dto if (season != null) { - children = season.GetEpisodes(user).Where(i => i.LocationType != LocationType.Virtual); + children = season + .GetEpisodes(user) + .Where(i => i.LocationType != LocationType.Virtual); } else { - children = folder.GetRecursiveChildren(user) - .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual); + children = folder + .GetRecursiveChildren(user, i => !i.IsFolder && i.LocationType != LocationType.Virtual); } // Loop through each recursive child diff --git a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs index e6976c54bc..dd5dc82e84 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs @@ -245,7 +245,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints var collections = user.RootFolder.GetChildren(user, true).ToList(); - var allRecursiveChildren = user.RootFolder.GetRecursiveChildren(user) + var allRecursiveChildren = user.RootFolder + .GetRecursiveChildren(user) .Select(i => i.Id) .Distinct() .ToDictionary(i => i); diff --git a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs index 2fc5f9bc20..10e50e497b 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs @@ -226,7 +226,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization private List GetOtherDuplicatePaths(string targetPath, Series series, int seasonNumber, int episodeNumber, int? endingEpisodeNumber) { - var episodePaths = series.RecursiveChildren + var episodePaths = series.GetRecursiveChildren() .OfType() .Where(i => { @@ -335,8 +335,8 @@ namespace MediaBrowser.Server.Implementations.FileOrganization result.ExtractedName = nameWithoutYear; result.ExtractedYear = yearInName; - return _libraryManager.RootFolder.RecursiveChildren - .OfType() + return _libraryManager.RootFolder.GetRecursiveChildren(i => i is Series) + .Cast() .Select(i => NameUtils.GetMatchScore(nameWithoutYear, yearInName, i)) .Where(i => i.Item2 > 0) .OrderByDescending(i => i.Item2) @@ -400,9 +400,8 @@ namespace MediaBrowser.Server.Implementations.FileOrganization { // If there's already a season folder, use that var season = series - .RecursiveChildren - .OfType() - .FirstOrDefault(i => i.LocationType == LocationType.FileSystem && i.IndexNumber.HasValue && i.IndexNumber.Value == seasonNumber); + .GetRecursiveChildren(i => i is Season && i.LocationType == LocationType.FileSystem && i.IndexNumber.HasValue && i.IndexNumber.Value == seasonNumber) + .FirstOrDefault(); if (season != null) { diff --git a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs index a113e8d5ef..2af6e55883 100644 --- a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs +++ b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs @@ -67,29 +67,26 @@ namespace MediaBrowser.Server.Implementations.Intros ? null : _localization.GetRatingLevel(item.OfficialRating); - var libaryItems = user.RootFolder.GetRecursiveChildren(user, false) - .ToList(); - var random = new Random(Environment.TickCount + Guid.NewGuid().GetHashCode()); var candidates = new List(); if (config.EnableIntrosFromMoviesInLibrary) { - var itemsWithTrailers = libaryItems - .Where(i => - { - var hasTrailers = i as IHasTrailers; - - if (hasTrailers != null && hasTrailers.LocalTrailerIds.Count > 0) - { - if (i is Movie) - { - return !IsDuplicate(item, i); - } - } - return false; - }); + var itemsWithTrailers = user.RootFolder + .GetRecursiveChildren(user, i => + { + var hasTrailers = i as IHasTrailers; + + if (hasTrailers != null && hasTrailers.LocalTrailerIds.Count > 0) + { + if (i is Movie) + { + return !IsDuplicate(item, i); + } + } + return false; + }); candidates.AddRange(itemsWithTrailers.Select(i => new ItemWithTrailer { @@ -141,15 +138,16 @@ namespace MediaBrowser.Server.Implementations.Intros })); } + return GetResult(item, candidates, config, ratingLevel); + } + + private IEnumerable GetResult(BaseItem item, IEnumerable candidates, CinemaModeConfiguration config, int? ratingLevel) + { var customIntros = !string.IsNullOrWhiteSpace(config.CustomIntroPath) ? GetCustomIntros(item) : new List(); var trailerLimit = config.TrailerLimit; - if (customIntros.Count > 0) - { - trailerLimit--; - } // Avoid implicitly captured closure return candidates.Where(i => diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index d93705a518..0ebd1aace6 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -337,8 +337,8 @@ namespace MediaBrowser.Server.Implementations.Library /// Task. private async Task UpdateSeasonZeroNames(string newName, CancellationToken cancellationToken) { - var seasons = RootFolder.RecursiveChildren - .OfType() + var seasons = RootFolder.GetRecursiveChildren(i => i is Season) + .Cast() .Where(i => i.IndexNumber.HasValue && i.IndexNumber.Value == 0 && !string.Equals(i.Name, newName, StringComparison.Ordinal)) .ToList(); @@ -393,7 +393,7 @@ namespace MediaBrowser.Server.Implementations.Library var locationType = item.LocationType; var children = item.IsFolder - ? ((Folder)item).RecursiveChildren.ToList() + ? ((Folder)item).GetRecursiveChildren().ToList() : new List(); foreach (var metadataPath in GetMetadataPaths(item, children)) @@ -919,9 +919,10 @@ namespace MediaBrowser.Server.Implementations.Library { var validFilename = _fileSystem.GetValidFilename(name).Trim(); - var existing = RootFolder.RecursiveChildren - .OfType() - .FirstOrDefault(i => string.Equals(_fileSystem.GetValidFilename(i.Name).Trim(), validFilename, StringComparison.OrdinalIgnoreCase)); + var existing = RootFolder + .GetRecursiveChildren(i => i is T && string.Equals(_fileSystem.GetValidFilename(i.Name).Trim(), validFilename, StringComparison.OrdinalIgnoreCase)) + .Cast() + .FirstOrDefault(); if (existing != null) { diff --git a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs index 9196bf7340..b724067309 100644 --- a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs +++ b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Channels; @@ -25,8 +24,8 @@ namespace MediaBrowser.Server.Implementations.Library public async Task Run(IProgress progress, CancellationToken cancellationToken) { var items = _libraryManager.RootFolder - .RecursiveChildren - .OfType() + .GetRecursiveChildren(i => i is IHasTrailers) + .Cast() .ToList(); var channelTrailerResult = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery diff --git a/MediaBrowser.Server.Implementations/Library/MusicManager.cs b/MediaBrowser.Server.Implementations/Library/MusicManager.cs index b8c29c19ba..5a7533ad21 100644 --- a/MediaBrowser.Server.Implementations/Library/MusicManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MusicManager.cs @@ -32,8 +32,8 @@ namespace MediaBrowser.Server.Implementations.Library var artist = _libraryManager.GetArtist(name); var genres = user.RootFolder - .GetRecursiveChildren(user) - .OfType