using System.Collections.Generic; using System.Globalization; using System.IO; using System.Xml; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; namespace MediaBrowser.XbmcMetadata.Savers { /// <summary> /// Nfo saver for seasons. /// </summary> public class SeasonNfoSaver : BaseNfoSaver { /// <summary> /// Initializes a new instance of the <see cref="SeasonNfoSaver"/> class. /// </summary> /// <param name="fileSystem">The file system.</param> /// <param name="configurationManager">the server configuration manager.</param> /// <param name="libraryManager">The library manager.</param> /// <param name="userManager">The user manager.</param> /// <param name="userDataManager">The user data manager.</param> /// <param name="logger">The logger.</param> public SeasonNfoSaver( IFileSystem fileSystem, IServerConfigurationManager configurationManager, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataManager, ILogger<SeasonNfoSaver> logger) : base(fileSystem, configurationManager, libraryManager, userManager, userDataManager, logger) { } /// <inheritdoc /> protected override string GetLocalSavePath(BaseItem item) => Path.Combine(item.Path, "season.nfo"); /// <inheritdoc /> protected override string GetRootElementName(BaseItem item) => "season"; /// <inheritdoc /> public override bool IsEnabledFor(BaseItem item, ItemUpdateType updateType) { if (!item.SupportsLocalMetadata) { return false; } if (!(item is Season)) { return false; } return updateType >= MinimumUpdateType || (updateType >= ItemUpdateType.MetadataImport && File.Exists(GetSavePath(item))); } /// <inheritdoc /> protected override void WriteCustomElements(BaseItem item, XmlWriter writer) { var season = (Season)item; if (season.IndexNumber.HasValue) { writer.WriteElementString("seasonnumber", season.IndexNumber.Value.ToString(CultureInfo.InvariantCulture)); } } /// <inheritdoc /> protected override List<string> GetTagsUsed(BaseItem item) { var list = base.GetTagsUsed(item); list.AddRange(new string[] { "seasonnumber" }); return list; } } }