aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-10-16 13:12:31 -0400
committerGitHub <noreply@github.com>2016-10-16 13:12:31 -0400
commitfa0795b65b3208b28f8044081f0e9486d59dfb7b (patch)
tree23a9cfd0479cbfe65793db40543bdc501b9a08a8 /MediaBrowser.Controller
parentf87f16b6a190f772cc31ed3c6e1a8bd413c329be (diff)
parent55f47d21204bd166ab214256c7b8dd05c4d7ccd4 (diff)
Merge pull request #2238 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs95
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs4
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs6
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs6
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)