< Summary - Jellyfin

Information
Class: MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver
Assembly: MediaBrowser.XbmcMetadata
File(s): /srv/git/jellyfin/MediaBrowser.XbmcMetadata/Savers/EpisodeNfoSaver.cs
Line coverage
10%
Covered lines: 3
Uncovered lines: 26
Coverable lines: 29
Total lines: 131
Line coverage: 10.3%
Branch coverage
8%
Covered branches: 3
Total branches: 36
Branch coverage: 8.3%
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%
GetLocalSavePath(...)100%210%
GetRootElementName(...)100%210%
IsEnabledFor(...)75%44100%
WriteCustomElements(...)0%1056320%

File(s)

/srv/git/jellyfin/MediaBrowser.XbmcMetadata/Savers/EpisodeNfoSaver.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Globalization;
 3using System.IO;
 4using System.Xml;
 5using MediaBrowser.Controller.Configuration;
 6using MediaBrowser.Controller.Entities;
 7using MediaBrowser.Controller.Entities.TV;
 8using MediaBrowser.Controller.Library;
 9using MediaBrowser.Model.IO;
 10using MediaBrowser.XbmcMetadata.Configuration;
 11using Microsoft.Extensions.Logging;
 12
 13namespace MediaBrowser.XbmcMetadata.Savers
 14{
 15    /// <summary>
 16    /// Nfo saver for episodes.
 17    /// </summary>
 18    public class EpisodeNfoSaver : BaseNfoSaver
 19    {
 20        /// <summary>
 21        /// Initializes a new instance of the <see cref="EpisodeNfoSaver"/> class.
 22        /// </summary>
 23        /// <param name="fileSystem">The file system.</param>
 24        /// <param name="configurationManager">the server configuration manager.</param>
 25        /// <param name="libraryManager">The library manager.</param>
 26        /// <param name="userManager">The user manager.</param>
 27        /// <param name="userDataManager">The user data manager.</param>
 28        /// <param name="logger">The logger.</param>
 29        public EpisodeNfoSaver(
 30            IFileSystem fileSystem,
 31            IServerConfigurationManager configurationManager,
 32            ILibraryManager libraryManager,
 33            IUserManager userManager,
 34            IUserDataManager userDataManager,
 35            ILogger<EpisodeNfoSaver> logger)
 2236            : base(fileSystem, configurationManager, libraryManager, userManager, userDataManager, logger)
 37        {
 2238        }
 39
 40        /// <inheritdoc />
 41        protected override string GetLocalSavePath(BaseItem item)
 042            => Path.ChangeExtension(item.Path, ".nfo");
 43
 44        /// <inheritdoc />
 45        protected override string GetRootElementName(BaseItem item)
 046            => "episodedetails";
 47
 48        /// <inheritdoc />
 49        public override bool IsEnabledFor(BaseItem item, ItemUpdateType updateType)
 10450            => item.SupportsLocalMetadata && item is Episode && updateType >= MinimumUpdateType;
 51
 52        /// <inheritdoc />
 53        protected override void WriteCustomElements(BaseItem item, XmlWriter writer)
 54        {
 055            var episode = (Episode)item;
 56
 057            writer.WriteElementString("showtitle", episode.SeriesName);
 58
 059            if (episode.IndexNumber.HasValue)
 60            {
 061                writer.WriteElementString("episode", episode.IndexNumber.Value.ToString(CultureInfo.InvariantCulture));
 62            }
 63
 064            if (episode.IndexNumberEnd.HasValue)
 65            {
 066                writer.WriteElementString("episodenumberend", episode.IndexNumberEnd.Value.ToString(CultureInfo.Invarian
 67            }
 68
 069            if (episode.ParentIndexNumber.HasValue)
 70            {
 071                writer.WriteElementString("season", episode.ParentIndexNumber.Value.ToString(CultureInfo.InvariantCultur
 72            }
 73
 074            if (episode.PremiereDate.HasValue)
 75            {
 076                var formatString = ConfigurationManager.GetNfoConfiguration().ReleaseDateFormat;
 77
 078                writer.WriteElementString("aired", episode.PremiereDate.Value.ToString(formatString, CultureInfo.Invaria
 79            }
 80
 081            if (!episode.ParentIndexNumber.HasValue || episode.ParentIndexNumber.Value == 0)
 82            {
 083                if (episode.AirsAfterSeasonNumber.HasValue && episode.AirsAfterSeasonNumber.Value != -1)
 84                {
 085                    writer.WriteElementString("airsafter_season", episode.AirsAfterSeasonNumber.Value.ToString(CultureIn
 86                }
 87
 088                if (episode.AirsBeforeEpisodeNumber.HasValue && episode.AirsBeforeEpisodeNumber.Value != -1)
 89                {
 090                    writer.WriteElementString("airsbefore_episode", episode.AirsBeforeEpisodeNumber.Value.ToString(Cultu
 91                }
 92
 093                if (episode.AirsBeforeSeasonNumber.HasValue && episode.AirsBeforeSeasonNumber.Value != -1)
 94                {
 095                    writer.WriteElementString("airsbefore_season", episode.AirsBeforeSeasonNumber.Value.ToString(Culture
 96                }
 97
 098                if (episode.AirsBeforeEpisodeNumber.HasValue && episode.AirsBeforeEpisodeNumber.Value != -1)
 99                {
 0100                    writer.WriteElementString("displayepisode", episode.AirsBeforeEpisodeNumber.Value.ToString(CultureIn
 101                }
 102
 0103                var specialSeason = episode.AiredSeasonNumber;
 0104                if (specialSeason.HasValue && specialSeason.Value != -1)
 105                {
 0106                    writer.WriteElementString("displayseason", specialSeason.Value.ToString(CultureInfo.InvariantCulture
 107                }
 108            }
 0109        }
 110
 111        /// <inheritdoc />
 112        protected override IEnumerable<string> GetTagsUsed(BaseItem item)
 113        {
 114            foreach (var tag in base.GetTagsUsed(item))
 115            {
 116                yield return tag;
 117            }
 118
 119            yield return "aired";
 120            yield return "season";
 121            yield return "episode";
 122            yield return "episodenumberend";
 123            yield return "airsafter_season";
 124            yield return "airsbefore_episode";
 125            yield return "airsbefore_season";
 126            yield return "displayseason";
 127            yield return "displayepisode";
 128            yield return "showtitle";
 129        }
 130    }
 131}