aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs')
-rw-r--r--MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs60
1 files changed, 60 insertions, 0 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.cs
new file mode 100644
index 000000000..44ca3f472
--- /dev/null
+++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoSeasonParser.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
+{
+ /// <summary>
+ /// NFO parser for seasons based on series NFO.
+ /// </summary>
+ public class SeriesNfoSeasonParser : BaseNfoParser<Season>
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SeriesNfoSeasonParser"/> class.
+ /// </summary>
+ /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
+ /// <param name="config">Instance of the <see cref="IConfigurationManager"/> interface.</param>
+ /// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
+ /// <param name="userManager">Instance of the <see cref="IUserManager"/> interface.</param>
+ /// <param name="userDataManager">Instance of the <see cref="IUserDataManager"/> interface.</param>
+ /// <param name="directoryService">Instance of the <see cref="IDirectoryService"/> interface.</param>
+ public SeriesNfoSeasonParser(
+ ILogger logger,
+ IConfigurationManager config,
+ IProviderManager providerManager,
+ IUserManager userManager,
+ IUserDataManager userDataManager,
+ IDirectoryService directoryService)
+ : base(logger, config, providerManager, userManager, userDataManager, directoryService)
+ {
+ }
+
+ /// <inheritdoc />
+ protected override bool SupportsUrlAfterClosingXmlTag => true;
+
+ /// <inheritdoc />
+ protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Season> 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();
+ }
+ }
+ }
+}