From 29a293f9e78e61d464e18b6d74ba32152eaa01ce Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Fri, 17 May 2024 13:51:40 -0400 Subject: Backport pull request #11647 from jellyfin/release-10.9.z Fix season names Original-merge: 2da06bc0b10edcdb43618684396828afa4100b44 Merged-by: joshuaboniface Backported-by: Joshua M. Boniface --- MediaBrowser.Controller/Entities/TV/Series.cs | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Controller/Entities') diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index a49c1609d9..d200721b28 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -25,19 +25,18 @@ namespace MediaBrowser.Controller.Entities.TV /// public class Series : Folder, IHasTrailers, IHasDisplayOrder, IHasLookupInfo, IMetadataContainer { + private readonly Dictionary _seasonNames; + public Series() { AirDays = Array.Empty(); - SeasonNames = new Dictionary(); + _seasonNames = new Dictionary(); } public DayOfWeek[] AirDays { get; set; } public string AirTime { get; set; } - [JsonIgnore] - public Dictionary SeasonNames { get; set; } - [JsonIgnore] public override bool SupportsAddingToPlaylist => true; @@ -213,6 +212,26 @@ namespace MediaBrowser.Controller.Entities.TV return LibraryManager.GetItemList(query); } + public Dictionary GetSeasonNames() + { + var newSeasons = Children.OfType() + .Where(s => s.IndexNumber.HasValue) + .Where(s => !_seasonNames.ContainsKey(s.IndexNumber.Value)) + .DistinctBy(s => s.IndexNumber); + + foreach (var season in newSeasons) + { + SetSeasonName(season.IndexNumber.Value, season.Name); + } + + return _seasonNames; + } + + public void SetSeasonName(int index, string name) + { + _seasonNames[index] = name; + } + private void SetSeasonQueryOptions(InternalItemsQuery query, User user) { var seriesKey = GetUniqueSeriesKey(this); -- cgit v1.2.3