From c274062e87c55a94019668305545ad122633a238 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Sat, 18 May 2024 20:19:12 +0200 Subject: [PATCH 1/7] Move NFO series season name parsing to own local provider --- .../Library/Resolvers/TV/SeasonResolver.cs | 25 ++---- MediaBrowser.Controller/Entities/TV/Series.cs | 23 ------ MediaBrowser.Controller/Providers/ItemInfo.cs | 6 ++ .../TV/SeriesMetadataService.cs | 39 +-------- .../Parsers/SeasonFromSeriesNfoParser.cs | 60 ++++++++++++++ .../Parsers/SeriesNfoParser.cs | 13 +-- .../Providers/BaseNfoProvider.cs | 5 +- .../Providers/SeasonFromSeriesNfoProvider.cs | 79 +++++++++++++++++++ 8 files changed, 161 insertions(+), 89 deletions(-) create mode 100644 MediaBrowser.XbmcMetadata/Parsers/SeasonFromSeriesNfoParser.cs create mode 100644 MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs index ff4a881628..6e7d1acf0b 100644 --- a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs @@ -81,24 +81,13 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV if (season.IndexNumber.HasValue) { var seasonNumber = season.IndexNumber.Value; - if (string.IsNullOrEmpty(season.Name)) - { - var seasonNames = series.GetSeasonNames(); - if (seasonNames.TryGetValue(seasonNumber, out var seasonName)) - { - season.Name = seasonName; - } - else - { - season.Name = seasonNumber == 0 ? - args.LibraryOptions.SeasonZeroDisplayName : - string.Format( - CultureInfo.InvariantCulture, - _localization.GetLocalizedString("NameSeasonNumber"), - seasonNumber, - args.LibraryOptions.PreferredMetadataLanguage); - } - } + season.Name = seasonNumber == 0 ? + args.LibraryOptions.SeasonZeroDisplayName : + string.Format( + CultureInfo.InvariantCulture, + _localization.GetLocalizedString("NameSeasonNumber"), + seasonNumber, + args.LibraryOptions.PreferredMetadataLanguage); } return season; diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index d200721b28..e7a8a773ec 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -25,12 +25,9 @@ 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(); } public DayOfWeek[] AirDays { get; set; } @@ -212,26 +209,6 @@ 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); diff --git a/MediaBrowser.Controller/Providers/ItemInfo.cs b/MediaBrowser.Controller/Providers/ItemInfo.cs index 3a97127eaa..da96acc662 100644 --- a/MediaBrowser.Controller/Providers/ItemInfo.cs +++ b/MediaBrowser.Controller/Providers/ItemInfo.cs @@ -11,6 +11,8 @@ namespace MediaBrowser.Controller.Providers public ItemInfo(BaseItem item) { Path = item.Path; + ParentId = item.GetParent().Id; + IndexNumber = item.IndexNumber; ContainingFolderPath = item.ContainingFolderPath; IsInMixedFolder = item.IsInMixedFolder; @@ -27,6 +29,10 @@ namespace MediaBrowser.Controller.Providers public string Path { get; set; } + public Guid ParentId { get; set; } + + public int? IndexNumber { get; set; } + public string ContainingFolderPath { get; set; } public VideoType VideoType { get; set; } diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index 2d0bd60b98..9747c983a2 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -62,7 +62,7 @@ namespace MediaBrowser.Providers.TV RemoveObsoleteEpisodes(item); RemoveObsoleteSeasons(item); - await UpdateAndCreateSeasonsAsync(item, cancellationToken).ConfigureAwait(false); + await CreateSeasonsAsync(item, cancellationToken).ConfigureAwait(false); } /// @@ -88,24 +88,6 @@ namespace MediaBrowser.Providers.TV var sourceItem = source.Item; var targetItem = target.Item; - var sourceSeasonNames = sourceItem.GetSeasonNames(); - var targetSeasonNames = targetItem.GetSeasonNames(); - - if (replaceData) - { - foreach (var (number, name) in sourceSeasonNames) - { - targetItem.SetSeasonName(number, name); - } - } - else - { - var newSeasons = sourceSeasonNames.Where(s => !targetSeasonNames.ContainsKey(s.Key)); - foreach (var (number, name) in newSeasons) - { - targetItem.SetSeasonName(number, name); - } - } if (replaceData || string.IsNullOrEmpty(targetItem.AirTime)) { @@ -218,14 +200,12 @@ namespace MediaBrowser.Providers.TV /// /// Creates seasons for all episodes if they don't exist. /// If no season number can be determined, a dummy season will be created. - /// Updates seasons names. /// /// The series. /// The cancellation token. /// The async task. - private async Task UpdateAndCreateSeasonsAsync(Series series, CancellationToken cancellationToken) + private async Task CreateSeasonsAsync(Series series, CancellationToken cancellationToken) { - var seasonNames = series.GetSeasonNames(); var seriesChildren = series.GetRecursiveChildren(i => i is Episode || i is Season); var seasons = seriesChildren.OfType().ToList(); var uniqueSeasonNumbers = seriesChildren @@ -237,23 +217,12 @@ namespace MediaBrowser.Providers.TV foreach (var seasonNumber in uniqueSeasonNumbers) { // Null season numbers will have a 'dummy' season created because seasons are always required. - var existingSeason = seasons.FirstOrDefault(i => i.IndexNumber == seasonNumber); - - if (!seasonNumber.HasValue || !seasonNames.TryGetValue(seasonNumber.Value, out var seasonName)) - { - seasonName = GetValidSeasonNameForSeries(series, null, seasonNumber); - } - - if (existingSeason is null) + if (!seasons.Any(i => i.IndexNumber == seasonNumber)) { + var seasonName = GetValidSeasonNameForSeries(series, null, seasonNumber); var season = await CreateSeasonAsync(series, seasonName, seasonNumber, cancellationToken).ConfigureAwait(false); series.AddChild(season); } - else if (!existingSeason.LockedFields.Contains(MetadataField.Name) && !string.Equals(existingSeason.Name, seasonName, StringComparison.Ordinal)) - { - existingSeason.Name = seasonName; - await existingSeason.UpdateToRepositoryAsync(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); - } } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeasonFromSeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeasonFromSeriesNfoParser.cs new file mode 100644 index 0000000000..620aed84cf --- /dev/null +++ b/MediaBrowser.XbmcMetadata/Parsers/SeasonFromSeriesNfoParser.cs @@ -0,0 +1,60 @@ +using System.Globalization; +using System.Xml; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; +using Microsoft.Extensions.Logging; + +namespace MediaBrowser.XbmcMetadata.Parsers +{ + /// + /// NFO parser for seasons based on series NFO. + /// + public class SeasonFromSeriesNfoParser : BaseNfoParser + { + /// + /// Initializes a new instance of the class. + /// + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + public SeasonFromSeriesNfoParser( + ILogger logger, + IConfigurationManager config, + IProviderManager providerManager, + IUserManager userManager, + IUserDataManager userDataManager, + IDirectoryService directoryService) + : base(logger, config, providerManager, userManager, userDataManager, directoryService) + { + } + + /// + protected override bool SupportsUrlAfterClosingXmlTag => true; + + /// + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult itemResult) + { + var item = itemResult.Item; + + if (reader.Name == "namedseason") + { + var parsed = int.TryParse(reader.GetAttribute("number"), NumberStyles.Integer, CultureInfo.InvariantCulture, out var seasonNumber); + var name = reader.ReadElementContentAsString(); + + if (parsed && !string.IsNullOrWhiteSpace(name) && item.IndexNumber.HasValue && seasonNumber == item.IndexNumber.Value) + { + item.Name = name; + } + } + else + { + reader.Skip(); + } + } + } +} diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 3b551acec7..241d26a578 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -100,19 +100,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers break; } + // Season names are processed by SeasonFromSeriesNfoParser case "namedseason": - { - var parsed = int.TryParse(reader.GetAttribute("number"), NumberStyles.Integer, CultureInfo.InvariantCulture, out var seasonNumber); - var name = reader.ReadElementContentAsString(); - - if (!string.IsNullOrWhiteSpace(name) && parsed) - { - item.SetSeasonName(seasonNumber, name); - } - - break; - } - default: base.FetchDataFromXmlNode(reader, itemResult); break; diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs index 9b4e1731d1..22c065b5d4 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs @@ -42,7 +42,10 @@ namespace MediaBrowser.XbmcMetadata.Providers try { - result.Item = new T(); + result.Item = new T + { + IndexNumber = info.IndexNumber + }; Fetch(result, path, cancellationToken); result.HasMetadata = true; diff --git a/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs new file mode 100644 index 0000000000..ee9257270a --- /dev/null +++ b/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs @@ -0,0 +1,79 @@ +using System.IO; +using System.Threading; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.IO; +using MediaBrowser.XbmcMetadata.Parsers; +using Microsoft.Extensions.Logging; + +namespace MediaBrowser.XbmcMetadata.Providers +{ + /// + /// NFO provider for seasons based on series NFO. + /// + public class SeasonFromSeriesNfoProvider : BaseNfoProvider + { + private readonly ILogger _logger; + private readonly IConfigurationManager _config; + private readonly IProviderManager _providerManager; + private readonly IUserManager _userManager; + private readonly IUserDataManager _userDataManager; + private readonly IDirectoryService _directoryService; + private readonly ILibraryManager _libraryManager; + + /// + /// Initializes a new instance of the class. + /// + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + /// Instance of the interface. + public SeasonFromSeriesNfoProvider( + ILogger logger, + IFileSystem fileSystem, + IConfigurationManager config, + IProviderManager providerManager, + IUserManager userManager, + IUserDataManager userDataManager, + IDirectoryService directoryService, + ILibraryManager libraryManager) + : base(fileSystem) + { + _logger = logger; + _config = config; + _providerManager = providerManager; + _userManager = userManager; + _userDataManager = userDataManager; + _directoryService = directoryService; + _libraryManager = libraryManager; + } + + /// + protected override void Fetch(MetadataResult result, string path, CancellationToken cancellationToken) + { + new SeasonFromSeriesNfoParser(_logger, _config, _providerManager, _userManager, _userDataManager, _directoryService).Fetch(result, path, cancellationToken); + } + + /// + protected override FileSystemMetadata? GetXmlFile(ItemInfo info, IDirectoryService directoryService) + { + var seriesPath = _libraryManager.GetItemById(info.ParentId)?.Path; + if (seriesPath is not null) + { + var path = Path.Combine(seriesPath, "tvshow.nfo"); + if (Path.Exists(path)) + { + return directoryService.GetFile(path); + } + } + + return null; + } + } +} From c106b399d7df17e43f66f8f2ac6aa38db25a5c91 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Sat, 18 May 2024 20:41:04 +0200 Subject: [PATCH 2/7] Apply review suggestion --- MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 241d26a578..aaa4289ee5 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -102,6 +102,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers // Season names are processed by SeasonFromSeriesNfoParser case "namedseason": + break; default: base.FetchDataFromXmlNode(reader, itemResult); break; From 99de0ca45f101a1352cca5c37914966750ca7b5e Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Sat, 18 May 2024 21:28:07 +0200 Subject: [PATCH 3/7] Directly use ParentId --- MediaBrowser.Controller/Providers/ItemInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Controller/Providers/ItemInfo.cs b/MediaBrowser.Controller/Providers/ItemInfo.cs index da96acc662..be3b25aee0 100644 --- a/MediaBrowser.Controller/Providers/ItemInfo.cs +++ b/MediaBrowser.Controller/Providers/ItemInfo.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Controller.Providers public ItemInfo(BaseItem item) { Path = item.Path; - ParentId = item.GetParent().Id; + ParentId = item.ParentId; IndexNumber = item.IndexNumber; ContainingFolderPath = item.ContainingFolderPath; IsInMixedFolder = item.IsInMixedFolder; From 7fa72260cac43acf1cd8b84d8eb9f9d274a5c555 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Sun, 19 May 2024 16:50:51 +0200 Subject: [PATCH 4/7] Only set season name if it's unset --- .../Library/Resolvers/TV/SeasonResolver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs index 6e7d1acf0b..713964ee23 100644 --- a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs @@ -78,7 +78,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV } } - if (season.IndexNumber.HasValue) + if (season.IndexNumber.HasValue && string.IsNullOrEmpty(season.Name)) { var seasonNumber = season.IndexNumber.Value; season.Name = seasonNumber == 0 ? From 9a9e8e26487b556d8c008e68bd2db266cb9b9ce8 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Sun, 19 May 2024 18:36:18 +0200 Subject: [PATCH 5/7] Prevent infite loop --- MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index aaa4289ee5..2774d8a576 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -102,6 +102,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers // Season names are processed by SeasonFromSeriesNfoParser case "namedseason": + reader.Skip(); break; default: base.FetchDataFromXmlNode(reader, itemResult); From e6eef8becece59fe363a4a67024b4713ddbc39e1 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Mon, 20 May 2024 01:45:12 +0200 Subject: [PATCH 6/7] Set path for season folders --- .../Library/Resolvers/TV/SeasonResolver.cs | 3 ++- .../Providers/SeasonFromSeriesNfoProvider.cs | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs index 713964ee23..733ae2d1ae 100644 --- a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs @@ -54,7 +54,8 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV { IndexNumber = seasonParserResult.SeasonNumber, SeriesId = series.Id, - SeriesName = series.Name + SeriesName = series.Name, + Path = seasonParserResult.IsSeasonFolder ? path : args.Parent.Path }; if (!season.IndexNumber.HasValue || !seasonParserResult.IsSeasonFolder) diff --git a/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs index ee9257270a..a8bf4b4e14 100644 --- a/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs @@ -63,6 +63,16 @@ namespace MediaBrowser.XbmcMetadata.Providers /// protected override FileSystemMetadata? GetXmlFile(ItemInfo info, IDirectoryService directoryService) { + var seasonPath = info.Path; + if (seasonPath is not null) + { + var path = Path.Combine(seasonPath, "tvshow.nfo"); + if (Path.Exists(path)) + { + return directoryService.GetFile(path); + } + } + var seriesPath = _libraryManager.GetItemById(info.ParentId)?.Path; if (seriesPath is not null) { From a2ab34ef4cf4875013f8e54d9be6aea15c9bc04d Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Mon, 20 May 2024 20:12:52 +0200 Subject: [PATCH 7/7] Rename provider to be run after normal season NFO provider --- MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs | 2 +- ...omSeriesNfoParser.cs => SeriesNfoSeasonParser.cs} | 6 +++--- ...riesNfoProvider.cs => SeriesNfoSeasonProvider.cs} | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) rename MediaBrowser.XbmcMetadata/Parsers/{SeasonFromSeriesNfoParser.cs => SeriesNfoSeasonParser.cs} (91%) rename MediaBrowser.XbmcMetadata/Providers/{SeasonFromSeriesNfoProvider.cs => SeriesNfoSeasonProvider.cs} (86%) diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 2774d8a576..d99e11bcd9 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -100,7 +100,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers break; } - // Season names are processed by SeasonFromSeriesNfoParser + // Season names are processed by SeriesNfoSeasonParser case "namedseason": reader.Skip(); break; diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeasonFromSeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs similarity index 91% rename from MediaBrowser.XbmcMetadata/Parsers/SeasonFromSeriesNfoParser.cs rename to MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs index 620aed84cf..44ca3f472b 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeasonFromSeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs @@ -11,10 +11,10 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// /// NFO parser for seasons based on series NFO. /// - public class SeasonFromSeriesNfoParser : BaseNfoParser + public class SeriesNfoSeasonParser : BaseNfoParser { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// Instance of the interface. /// Instance of the interface. @@ -22,7 +22,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Instance of the interface. /// Instance of the interface. /// Instance of the interface. - public SeasonFromSeriesNfoParser( + public SeriesNfoSeasonParser( ILogger logger, IConfigurationManager config, IProviderManager providerManager, diff --git a/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoSeasonProvider.cs similarity index 86% rename from MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs rename to MediaBrowser.XbmcMetadata/Providers/SeriesNfoSeasonProvider.cs index a8bf4b4e14..b141b7afb9 100644 --- a/MediaBrowser.XbmcMetadata/Providers/SeasonFromSeriesNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoSeasonProvider.cs @@ -13,9 +13,9 @@ namespace MediaBrowser.XbmcMetadata.Providers /// /// NFO provider for seasons based on series NFO. /// - public class SeasonFromSeriesNfoProvider : BaseNfoProvider + public class SeriesNfoSeasonProvider : BaseNfoProvider { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IConfigurationManager _config; private readonly IProviderManager _providerManager; private readonly IUserManager _userManager; @@ -24,7 +24,7 @@ namespace MediaBrowser.XbmcMetadata.Providers private readonly ILibraryManager _libraryManager; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// Instance of the interface. /// Instance of the interface. @@ -34,8 +34,8 @@ namespace MediaBrowser.XbmcMetadata.Providers /// Instance of the interface. /// Instance of the interface. /// Instance of the interface. - public SeasonFromSeriesNfoProvider( - ILogger logger, + public SeriesNfoSeasonProvider( + ILogger logger, IFileSystem fileSystem, IConfigurationManager config, IProviderManager providerManager, @@ -57,7 +57,7 @@ namespace MediaBrowser.XbmcMetadata.Providers /// protected override void Fetch(MetadataResult result, string path, CancellationToken cancellationToken) { - new SeasonFromSeriesNfoParser(_logger, _config, _providerManager, _userManager, _userDataManager, _directoryService).Fetch(result, path, cancellationToken); + new SeriesNfoSeasonParser(_logger, _config, _providerManager, _userManager, _userDataManager, _directoryService).Fetch(result, path, cancellationToken); } ///