< Summary - Jellyfin

Information
Class: MediaBrowser.XbmcMetadata.Parsers.SeriesNfoParser
Assembly: MediaBrowser.XbmcMetadata
File(s): /srv/git/jellyfin/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs
Line coverage
92%
Covered lines: 24
Uncovered lines: 2
Coverable lines: 26
Total lines: 100
Line coverage: 92.3%
Branch coverage
93%
Covered branches: 15
Total branches: 16
Branch coverage: 93.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_SupportsUrlAfterClosingXmlTag()100%11100%
FetchDataFromXmlNode(...)93.75%16.171691.3%

File(s)

/srv/git/jellyfin/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs

#LineLine coverage
 1using System.Globalization;
 2using System.Xml;
 3using Emby.Naming.TV;
 4using MediaBrowser.Common.Configuration;
 5using MediaBrowser.Controller.Entities.TV;
 6using MediaBrowser.Controller.Extensions;
 7using MediaBrowser.Controller.Library;
 8using MediaBrowser.Controller.Providers;
 9using MediaBrowser.Model.Entities;
 10using Microsoft.Extensions.Logging;
 11
 12namespace MediaBrowser.XbmcMetadata.Parsers
 13{
 14    /// <summary>
 15    /// Nfo parser for series.
 16    /// </summary>
 17    public class SeriesNfoParser : BaseNfoParser<Series>
 18    {
 19        /// <summary>
 20        /// Initializes a new instance of the <see cref="SeriesNfoParser"/> class.
 21        /// </summary>
 22        /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
 23        /// <param name="config">Instance of the <see cref="IConfigurationManager"/> interface.</param>
 24        /// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
 25        /// <param name="userManager">Instance of the <see cref="IUserManager"/> interface.</param>
 26        /// <param name="userDataManager">Instance of the <see cref="IUserDataManager"/> interface.</param>
 27        /// <param name="directoryService">Instance of the <see cref="IDirectoryService"/> interface.</param>
 28        public SeriesNfoParser(
 29            ILogger logger,
 30            IConfigurationManager config,
 31            IProviderManager providerManager,
 32            IUserManager userManager,
 33            IUserDataManager userDataManager,
 34            IDirectoryService directoryService)
 435            : base(logger, config, providerManager, userManager, userDataManager, directoryService)
 36        {
 437        }
 38
 39        /// <inheritdoc />
 240        protected override bool SupportsUrlAfterClosingXmlTag => true;
 41
 42        /// <inheritdoc />
 43        protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Series> itemResult)
 44        {
 11745            var item = itemResult.Item;
 46
 11747            switch (reader.Name)
 48            {
 49                case "id":
 50                    {
 151                        item.TrySetProviderId(MetadataProvider.Imdb, reader.GetAttribute("IMDB"));
 152                        item.TrySetProviderId(MetadataProvider.Tmdb, reader.GetAttribute("TMDB"));
 53
 154                        string? tvdbId = reader.GetAttribute("TVDB");
 155                        if (string.IsNullOrWhiteSpace(tvdbId))
 56                        {
 157                            tvdbId = reader.ReadElementContentAsString();
 58                        }
 59
 160                        item.TrySetProviderId(MetadataProvider.Tvdb, tvdbId);
 61
 162                        break;
 63                    }
 64
 65                case "airs_dayofweek":
 166                    item.AirDays = TVUtils.GetAirDays(reader.ReadElementContentAsString());
 167                    break;
 68                case "airs_time":
 169                    item.AirTime = reader.ReadNormalizedString();
 170                    break;
 71                case "status":
 72                    {
 173                        var status = reader.ReadElementContentAsString();
 74
 175                        if (!string.IsNullOrWhiteSpace(status))
 76                        {
 177                            if (TvParserHelpers.TryParseSeriesStatus(status, out var seriesStatus))
 78                            {
 179                                item.Status = seriesStatus;
 80                            }
 81                            else
 82                            {
 083                                Logger.LogInformation("Unrecognized series status: {Status}", status);
 84                            }
 85                        }
 86
 087                        break;
 88                    }
 89
 90                // Season names are processed by SeriesNfoSeasonParser
 91                case "namedseason":
 292                    reader.Skip();
 293                    break;
 94                default:
 11195                    base.FetchDataFromXmlNode(reader, itemResult);
 96                    break;
 97            }
 11198        }
 99    }
 100}