< Summary - Jellyfin

Information
Class: MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver
Assembly: MediaBrowser.XbmcMetadata
File(s): /srv/git/jellyfin/MediaBrowser.XbmcMetadata/Savers/ArtistNfoSaver.cs
Line coverage
14%
Covered lines: 3
Uncovered lines: 18
Coverable lines: 21
Total lines: 102
Line coverage: 14.2%
Branch coverage
25%
Covered branches: 3
Total branches: 12
Branch coverage: 25%
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%620%
AddAlbums(...)0%4260%

File(s)

/srv/git/jellyfin/MediaBrowser.XbmcMetadata/Savers/ArtistNfoSaver.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.Audio;
 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 artsist.
 17    /// </summary>
 18    public class ArtistNfoSaver : BaseNfoSaver
 19    {
 20        /// <summary>
 21        /// Initializes a new instance of the <see cref="ArtistNfoSaver"/> 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 ArtistNfoSaver(
 30            IFileSystem fileSystem,
 31            IServerConfigurationManager configurationManager,
 32            ILibraryManager libraryManager,
 33            IUserManager userManager,
 34            IUserDataManager userDataManager,
 35            ILogger<ArtistNfoSaver> logger)
 2236            : base(fileSystem, configurationManager, libraryManager, userManager, userDataManager, logger)
 37        {
 2238        }
 39
 40        /// <inheritdoc />
 41        protected override string GetLocalSavePath(BaseItem item)
 042            => Path.Combine(item.Path, "artist.nfo");
 43
 44        /// <inheritdoc />
 45        protected override string GetRootElementName(BaseItem item)
 046            => "artist";
 47
 48        /// <inheritdoc />
 49        public override bool IsEnabledFor(BaseItem item, ItemUpdateType updateType)
 10450            => item.SupportsLocalMetadata && item is MusicArtist && updateType >= MinimumUpdateType;
 51
 52        /// <inheritdoc />
 53        protected override void WriteCustomElements(BaseItem item, XmlWriter writer)
 54        {
 055            var artist = (MusicArtist)item;
 56
 057            if (artist.EndDate.HasValue)
 58            {
 059                var formatString = ConfigurationManager.GetNfoConfiguration().ReleaseDateFormat;
 60
 061                writer.WriteElementString("disbanded", artist.EndDate.Value.ToString(formatString, CultureInfo.Invariant
 62            }
 63
 064            var albums = artist
 065                .GetRecursiveChildren(i => i is MusicAlbum);
 66
 067            AddAlbums(albums, writer);
 068        }
 69
 70        private void AddAlbums(IList<BaseItem> albums, XmlWriter writer)
 71        {
 072            foreach (var album in albums)
 73            {
 074                writer.WriteStartElement("album");
 75
 076                if (!string.IsNullOrEmpty(album.Name))
 77                {
 078                    writer.WriteElementString("title", album.Name);
 79                }
 80
 081                if (album.ProductionYear.HasValue)
 82                {
 083                    writer.WriteElementString("year", album.ProductionYear.Value.ToString(CultureInfo.InvariantCulture))
 84                }
 85
 086                writer.WriteEndElement();
 87            }
 088        }
 89
 90        /// <inheritdoc />
 91        protected override IEnumerable<string> GetTagsUsed(BaseItem item)
 92        {
 93            foreach (var tag in base.GetTagsUsed(item))
 94            {
 95                yield return tag;
 96            }
 97
 98            yield return "album";
 99            yield return "disbanded";
 100        }
 101    }
 102}