using System; using System.Xml; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; namespace MediaBrowser.LocalMetadata.Parsers { /// /// Class SeriesXmlParser /// public class SeriesXmlParser : BaseItemXmlParser { /// /// Initializes a new instance of the class. /// /// The logger. public SeriesXmlParser(ILogger logger, IProviderManager providerManager) : base(logger, providerManager) { } /// /// Fetches the data from XML node. /// /// The reader. /// The result. protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult result) { var item = result.Item; switch (reader.Name) { case "Series": //MB generated metadata is within a "Series" node using (var subTree = reader.ReadSubtree()) { subTree.MoveToContent(); // Loop through each element while (subTree.Read()) { if (subTree.NodeType == XmlNodeType.Element) { FetchDataFromXmlNode(subTree, result); } } } break; case "id": string id = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(id)) { item.SetProviderId(MetadataProviders.Tvdb, id); } break; case "Airs_DayOfWeek": { item.AirDays = TVUtils.GetAirDays(reader.ReadElementContentAsString()); break; } case "Airs_Time": { var val = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(val)) { item.AirTime = val; } break; } case "AnimeSeriesIndex": { var number = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(number)) { int num; if (int.TryParse(number, out num)) { item.AnimeSeriesIndex = num; } } break; } case "Status": { var status = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(status)) { SeriesStatus seriesStatus; if (Enum.TryParse(status, true, out seriesStatus)) { item.Status = seriesStatus; } else { Logger.Info("Unrecognized series status: " + status); } } break; } default: base.FetchDataFromXmlNode(reader, result); break; } } } }