diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs
index 9e4129cd12..6f4a0c4d2c 100644
--- a/MediaBrowser.Controller/Entities/Audio/Audio.cs
+++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs
@@ -21,7 +21,7 @@ namespace MediaBrowser.Controller.Entities.Audio
///
/// true if this instance has embedded image; otherwise, false.
public bool HasEmbeddedImage { get; set; }
-
+
///
/// Override this to true if class should be grouped under a container in indicies
/// The container class should be defined via IndexContainer
@@ -36,10 +36,6 @@ namespace MediaBrowser.Controller.Entities.Audio
}
}
- ///
- /// The unknown album
- ///
- private static readonly MusicAlbum UnknownAlbum = new MusicAlbum { Name = "" };
///
/// Override this to return the folder that should be used to construct a container
/// for this item in an index. GroupInIndex should be true as well.
@@ -50,7 +46,7 @@ namespace MediaBrowser.Controller.Entities.Audio
{
get
{
- return Parent is MusicAlbum ? Parent : Album != null ? new MusicAlbum { Name = Album, PrimaryImagePath = PrimaryImagePath } : UnknownAlbum;
+ return Parents.OfType().FirstOrDefault() ?? new MusicAlbum { Name = "" };
}
}
diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs
index 2fef9a035f..18e6afcd18 100644
--- a/MediaBrowser.Controller/Entities/IHasImages.cs
+++ b/MediaBrowser.Controller/Entities/IHasImages.cs
@@ -81,7 +81,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the primary image path.
///
/// The primary image path.
- string PrimaryImagePath { get; set; }
+ string PrimaryImagePath { get; }
///
/// Gets the preferred metadata language.
diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs
index c94a25a304..1bff5647ba 100644
--- a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs
@@ -1,6 +1,5 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
using System.Threading;
using System.Threading.Tasks;
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 19f155a07e..69f9708914 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -164,7 +164,7 @@ namespace MediaBrowser.Providers.Manager
protected virtual IEnumerable GetProviders(IHasMetadata item, bool hasRefreshedMetadata, MetadataRefreshOptions options)
{
// Get providers to refresh
- var providers = ((ProviderManager) ProviderManager).GetMetadataProviders(item).ToList();
+ var providers = ((ProviderManager)ProviderManager).GetMetadataProviders(item).ToList();
// Run all if either of these flags are true
var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || !hasRefreshedMetadata;
@@ -258,7 +258,7 @@ namespace MediaBrowser.Providers.Manager
if (localItem.HasMetadata)
{
- MergeData(localItem.Item, temp, new List(), false, true);
+ MergeData(localItem.Item, temp, new List(), !options.ReplaceAllMetadata, true);
refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport;
// Only one local provider allowed per item
@@ -287,7 +287,10 @@ namespace MediaBrowser.Providers.Manager
await ExecuteRemoteProviders(item, temp, providers.OfType>(), refreshResult, cancellationToken).ConfigureAwait(false);
}
- MergeData(temp, item, item.LockedFields, true, true);
+ if (refreshResult.UpdateType > ItemUpdateType.Unspecified)
+ {
+ MergeData(temp, item, item.LockedFields, true, true);
+ }
return refreshResult;
}
diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
index 8d768a6a0f..ad3211650a 100644
--- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
@@ -177,7 +177,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
// Image is already in the cache
- item.PrimaryImagePath = path;
+ item.SetImagePath(ImageType.Primary, path);
}
///
diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
index fc8826b613..21d3ae3e8e 100644
--- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
@@ -227,7 +227,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
// Image is already in the cache
- item.PrimaryImagePath = path;
+ item.SetImagePath(ImageType.Primary, path);
}
///
@@ -256,7 +256,7 @@ namespace MediaBrowser.Providers.MediaInfo
await _mediaEncoder.ExtractImage(inputPath, type, false, video.Video3DFormat, imageOffset, path, cancellationToken).ConfigureAwait(false);
- video.PrimaryImagePath = path;
+ video.SetImagePath(ImageType.Primary, path);
}
finally
{
diff --git a/MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs b/MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs
index 83d36bb3c3..f2aaa0f063 100644
--- a/MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Providers/TV/EpisodeImageFromMediaLocationProvider.cs
@@ -116,7 +116,7 @@ namespace MediaBrowser.Providers.TV
if (!File.Exists(path))
{
- episode.PrimaryImagePath = null;
+ episode.SetImagePath(ImageType.Primary, null);
}
}
@@ -137,7 +137,7 @@ namespace MediaBrowser.Providers.TV
if (file != null)
{
- item.PrimaryImagePath = file.FullName;
+ item.SetImagePath(ImageType.Primary, file.FullName);
return;
}
}
@@ -154,7 +154,7 @@ namespace MediaBrowser.Providers.TV
if (file != null)
{
- item.PrimaryImagePath = file.FullName;
+ item.SetImagePath(ImageType.Primary, file.FullName);
return;
}
}
diff --git a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs
index 446c34f740..d0bf7bcded 100644
--- a/MediaBrowser.Providers/TV/EpisodeXmlParser.cs
+++ b/MediaBrowser.Providers/TV/EpisodeXmlParser.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using System.Globalization;
using System.IO;
@@ -90,7 +91,7 @@ namespace MediaBrowser.Providers.TV
if (File.Exists(filename))
{
- item.PrimaryImagePath = filename;
+ item.SetImagePath(ImageType.Primary, 0, filename);
}
}
break;