aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs27
1 files changed, 23 insertions, 4 deletions
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index a49c1609d..d200721b2 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -25,10 +25,12 @@ namespace MediaBrowser.Controller.Entities.TV
/// </summary>
public class Series : Folder, IHasTrailers, IHasDisplayOrder, IHasLookupInfo<SeriesInfo>, IMetadataContainer
{
+ private readonly Dictionary<int, string> _seasonNames;
+
public Series()
{
AirDays = Array.Empty<DayOfWeek>();
- SeasonNames = new Dictionary<int, string>();
+ _seasonNames = new Dictionary<int, string>();
}
public DayOfWeek[] AirDays { get; set; }
@@ -36,9 +38,6 @@ namespace MediaBrowser.Controller.Entities.TV
public string AirTime { get; set; }
[JsonIgnore]
- public Dictionary<int, string> SeasonNames { get; set; }
-
- [JsonIgnore]
public override bool SupportsAddingToPlaylist => true;
[JsonIgnore]
@@ -213,6 +212,26 @@ namespace MediaBrowser.Controller.Entities.TV
return LibraryManager.GetItemList(query);
}
+ public Dictionary<int, string> GetSeasonNames()
+ {
+ var newSeasons = Children.OfType<Season>()
+ .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);