diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-10-16 13:12:31 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-16 13:12:31 -0400 |
| commit | fa0795b65b3208b28f8044081f0e9486d59dfb7b (patch) | |
| tree | 23a9cfd0479cbfe65793db40543bdc501b9a08a8 /MediaBrowser.Controller | |
| parent | f87f16b6a190f772cc31ed3c6e1a8bd413c329be (diff) | |
| parent | 55f47d21204bd166ab214256c7b8dd05c4d7ccd4 (diff) | |
Merge pull request #2238 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Controller')
5 files changed, 96 insertions, 17 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 7eb84fc80..3ebefa217 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1188,7 +1188,7 @@ namespace MediaBrowser.Controller.Entities var itemsChanged = !item.LocalTrailerIds.SequenceEqual(newItemIds); - var tasks = newItems.Select(i => i.RefreshMetadata(options, cancellationToken)); + var tasks = newItems.Select(i => RefreshMetadataForOwnedItem(i, true, options, cancellationToken)); await Task.WhenAll(tasks).ConfigureAwait(false); @@ -1197,7 +1197,7 @@ namespace MediaBrowser.Controller.Entities return itemsChanged; } - private static async Task<bool> RefreshThemeVideos(BaseItem item, MetadataRefreshOptions options, IEnumerable<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken) + private async Task<bool> RefreshThemeVideos(BaseItem item, MetadataRefreshOptions options, IEnumerable<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken) { var newThemeVideos = LoadThemeVideos(fileSystemChildren, options.DirectoryService).ToList(); @@ -1215,7 +1215,7 @@ namespace MediaBrowser.Controller.Entities subOptions.ForceSave = true; } - return i.RefreshMetadata(subOptions, cancellationToken); + return RefreshMetadataForOwnedItem(i, true, subOptions, cancellationToken); }); await Task.WhenAll(tasks).ConfigureAwait(false); @@ -1228,7 +1228,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// Refreshes the theme songs. /// </summary> - private static async Task<bool> RefreshThemeSongs(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken) + private async Task<bool> RefreshThemeSongs(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken) { var newThemeSongs = LoadThemeSongs(fileSystemChildren, options.DirectoryService).ToList(); var newThemeSongIds = newThemeSongs.Select(i => i.Id).ToList(); @@ -1245,7 +1245,7 @@ namespace MediaBrowser.Controller.Entities subOptions.ForceSave = true; } - return i.RefreshMetadata(subOptions, cancellationToken); + return RefreshMetadataForOwnedItem(i, true, subOptions, cancellationToken); }); await Task.WhenAll(tasks).ConfigureAwait(false); @@ -2203,14 +2203,85 @@ namespace MediaBrowser.Controller.Entities return Task.FromResult(true); } - protected Task RefreshMetadataForOwnedVideo(MetadataRefreshOptions options, string path, CancellationToken cancellationToken) + protected Task RefreshMetadataForOwnedItem(BaseItem ownedItem, bool copyTitleMetadata, MetadataRefreshOptions options, CancellationToken cancellationToken) { - var newOptions = new MetadataRefreshOptions(options.DirectoryService) + var newOptions = new MetadataRefreshOptions(options); + newOptions.SearchResult = null; + + var item = this; + + if (copyTitleMetadata) { - ImageRefreshMode = options.ImageRefreshMode, - MetadataRefreshMode = options.MetadataRefreshMode, - ReplaceAllMetadata = options.ReplaceAllMetadata - }; + // Take some data from the main item, for querying purposes + if (!item.Genres.SequenceEqual(ownedItem.Genres, StringComparer.Ordinal)) + { + newOptions.ForceSave = true; + ownedItem.Genres = item.Genres.ToList(); + } + if (!item.Studios.SequenceEqual(ownedItem.Studios, StringComparer.Ordinal)) + { + newOptions.ForceSave = true; + ownedItem.Studios = item.Studios.ToList(); + } + if (!item.ProductionLocations.SequenceEqual(ownedItem.ProductionLocations, StringComparer.Ordinal)) + { + newOptions.ForceSave = true; + ownedItem.ProductionLocations = item.ProductionLocations.ToList(); + } + if (!item.Keywords.SequenceEqual(ownedItem.Keywords, StringComparer.Ordinal)) + { + newOptions.ForceSave = true; + ownedItem.Keywords = item.Keywords.ToList(); + } + if (item.CommunityRating != ownedItem.CommunityRating) + { + ownedItem.CommunityRating = item.CommunityRating; + newOptions.ForceSave = true; + } + if (item.CriticRating != ownedItem.CriticRating) + { + ownedItem.CriticRating = item.CriticRating; + newOptions.ForceSave = true; + } + if (!string.Equals(item.Overview, ownedItem.Overview, StringComparison.Ordinal)) + { + ownedItem.Overview = item.Overview; + newOptions.ForceSave = true; + } + if (!string.Equals(item.ShortOverview, ownedItem.ShortOverview, StringComparison.Ordinal)) + { + ownedItem.ShortOverview = item.ShortOverview; + newOptions.ForceSave = true; + } + if (!string.Equals(item.OfficialRating, ownedItem.OfficialRating, StringComparison.Ordinal)) + { + ownedItem.OfficialRating = item.OfficialRating; + newOptions.ForceSave = true; + } + if (!string.Equals(item.CustomRating, ownedItem.CustomRating, StringComparison.Ordinal)) + { + ownedItem.CustomRating = item.CustomRating; + newOptions.ForceSave = true; + } + if (!string.Equals(item.CriticRatingSummary, ownedItem.CriticRatingSummary, StringComparison.Ordinal)) + { + ownedItem.CriticRatingSummary = item.CriticRatingSummary; + newOptions.ForceSave = true; + } + if (!string.Equals(item.OfficialRatingDescription, ownedItem.OfficialRatingDescription, StringComparison.Ordinal)) + { + ownedItem.OfficialRatingDescription = item.OfficialRatingDescription; + newOptions.ForceSave = true; + } + } + + return ownedItem.RefreshMetadata(newOptions, cancellationToken); + } + + protected Task RefreshMetadataForOwnedVideo(MetadataRefreshOptions options, bool copyTitleMetadata, string path, CancellationToken cancellationToken) + { + var newOptions = new MetadataRefreshOptions(options); + newOptions.SearchResult = null; var id = LibraryManager.GetNewItemId(path, typeof(Video)); @@ -2229,7 +2300,7 @@ namespace MediaBrowser.Controller.Entities return Task.FromResult(true); } - return video.RefreshMetadata(newOptions, cancellationToken); + return RefreshMetadataForOwnedItem(video, copyTitleMetadata, newOptions, cancellationToken); } public string GetEtag(User user) diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 22cc0316a..dea42c463 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -103,7 +103,7 @@ namespace MediaBrowser.Controller.Entities.Movies var itemsChanged = !SpecialFeatureIds.SequenceEqual(newItemIds); - var tasks = newItems.Select(i => i.RefreshMetadata(options, cancellationToken)); + var tasks = newItems.Select(i => RefreshMetadataForOwnedItem(i, false, options, cancellationToken)); await Task.WhenAll(tasks).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index 5aaff6fef..e87b726b2 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -427,7 +427,7 @@ namespace MediaBrowser.Controller.Entities if (IsStacked) { var tasks = AdditionalParts - .Select(i => RefreshMetadataForOwnedVideo(options, i, cancellationToken)); + .Select(i => RefreshMetadataForOwnedVideo(options, true, i, cancellationToken)); await Task.WhenAll(tasks).ConfigureAwait(false); } @@ -442,7 +442,7 @@ namespace MediaBrowser.Controller.Entities RefreshLinkedAlternateVersions(); var tasks = LocalAlternateVersions - .Select(i => RefreshMetadataForOwnedVideo(options, i, cancellationToken)); + .Select(i => RefreshMetadataForOwnedVideo(options, false, i, cancellationToken)); await Task.WhenAll(tasks).ConfigureAwait(false); } diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs index 02d3118ef..de5ffcd58 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs @@ -113,7 +113,11 @@ namespace MediaBrowser.Controller.LiveTv public override bool CanDelete() { - return Status == RecordingStatus.Completed || Status == RecordingStatus.New; + if (string.Equals(ServiceName, "Emby", StringComparison.OrdinalIgnoreCase)) + { + return Status == RecordingStatus.Completed; + } + return true; } public override bool IsAuthorizedToDelete(User user) diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs index d54f93a07..2c0ced0e6 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs @@ -130,7 +130,11 @@ namespace MediaBrowser.Controller.LiveTv public override bool CanDelete() { - return Status == RecordingStatus.Completed || Status == RecordingStatus.New; + if (string.Equals(ServiceName, "Emby", StringComparison.OrdinalIgnoreCase)) + { + return Status == RecordingStatus.Completed; + } + return true; } public override bool IsAuthorizedToDelete(User user) |
