diff options
Diffstat (limited to 'MediaBrowser.Providers/Music/AlbumMetadataService.cs')
| -rw-r--r-- | MediaBrowser.Providers/Music/AlbumMetadataService.cs | 61 |
1 files changed, 32 insertions, 29 deletions
diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs index 0a3359156..96020791e 100644 --- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs +++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs @@ -46,46 +46,49 @@ namespace MediaBrowser.Providers.Music { var updateType = base.BeforeSave(item); - var songs = item.RecursiveChildren.OfType<Audio>().ToList(); - - if (!item.LockedFields.Contains(MetadataFields.Genres)) + var songs = item.RecursiveChildren.OfType<Audio>().ToList(); + + if (!item.IsLocked) { - var currentList = item.Genres.ToList(); + if (!item.LockedFields.Contains(MetadataFields.Genres)) + { + var currentList = item.Genres.ToList(); - item.Genres = songs.SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase) - .ToList(); + item.Genres = songs.SelectMany(i => i.Genres) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); - if (currentList.Count != item.Genres.Count || !currentList.OrderBy(i => i).SequenceEqual(item.Genres.OrderBy(i => i), StringComparer.OrdinalIgnoreCase)) - { - updateType = updateType | ItemUpdateType.MetadataDownload; + if (currentList.Count != item.Genres.Count || !currentList.OrderBy(i => i).SequenceEqual(item.Genres.OrderBy(i => i), StringComparer.OrdinalIgnoreCase)) + { + updateType = updateType | ItemUpdateType.MetadataDownload; + } } - } - if (!item.LockedFields.Contains(MetadataFields.Studios)) - { - var currentList = item.Studios.ToList(); + if (!item.LockedFields.Contains(MetadataFields.Studios)) + { + var currentList = item.Studios.ToList(); - item.Studios = songs.SelectMany(i => i.Studios) - .Distinct(StringComparer.OrdinalIgnoreCase) - .ToList(); + item.Studios = songs.SelectMany(i => i.Studios) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); - if (currentList.Count != item.Studios.Count || !currentList.OrderBy(i => i).SequenceEqual(item.Studios.OrderBy(i => i), StringComparer.OrdinalIgnoreCase)) - { - updateType = updateType | ItemUpdateType.MetadataDownload; + if (currentList.Count != item.Studios.Count || !currentList.OrderBy(i => i).SequenceEqual(item.Studios.OrderBy(i => i), StringComparer.OrdinalIgnoreCase)) + { + updateType = updateType | ItemUpdateType.MetadataDownload; + } } - } - - if (!item.LockedFields.Contains(MetadataFields.Name)) - { - var name = songs.Select(i => i.Album).FirstOrDefault(i => !string.IsNullOrEmpty(i)); - if (!string.IsNullOrEmpty(name)) + if (!item.LockedFields.Contains(MetadataFields.Name)) { - if (!string.Equals(item.Name, name, StringComparison.Ordinal)) + var name = songs.Select(i => i.Album).FirstOrDefault(i => !string.IsNullOrEmpty(i)); + + if (!string.IsNullOrEmpty(name)) { - item.Name = name; - updateType = updateType | ItemUpdateType.MetadataDownload; + if (!string.Equals(item.Name, name, StringComparison.Ordinal)) + { + item.Name = name; + updateType = updateType | ItemUpdateType.MetadataDownload; + } } } } |
