diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index a2d5e3867..d200721b2 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -214,16 +214,14 @@ namespace MediaBrowser.Controller.Entities.TV public Dictionary GetSeasonNames() { - if (_seasonNames.Count == 0) - { - var childSeasons = Children.OfType() - .Where(s => s.IndexNumber.HasValue) - .DistinctBy(s => s.IndexNumber); + var newSeasons = Children.OfType() + .Where(s => s.IndexNumber.HasValue) + .Where(s => !_seasonNames.ContainsKey(s.IndexNumber.Value)) + .DistinctBy(s => s.IndexNumber); - foreach (var season in childSeasons) - { - _seasonNames[season.IndexNumber.Value] = season.Name; - } + foreach (var season in newSeasons) + { + SetSeasonName(season.IndexNumber.Value, season.Name); } return _seasonNames; diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index add91a61a..62eb0d89c 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -91,14 +91,19 @@ namespace MediaBrowser.Providers.TV var sourceSeasonNames = sourceItem.GetSeasonNames(); var targetSeasonNames = targetItem.GetSeasonNames(); - if (replaceData - || targetSeasonNames.Count == 0 - || targetSeasonNames.Count != sourceSeasonNames.Count - || !sourceSeasonNames.Keys.All(targetSeasonNames.ContainsKey)) + if (replaceData) { foreach (var (number, name) in sourceSeasonNames) { - target.Item.SetSeasonName(number, name); + targetItem.SetSeasonName(number, name); + } + } + else if (!sourceSeasonNames.Keys.All(targetSeasonNames.ContainsKey)) + { + var newSeasons = sourceSeasonNames.Where(s => !targetSeasonNames.ContainsKey(s.Key)); + foreach (var (number, name) in newSeasons) + { + targetItem.SetSeasonName(number, name); } }