< Summary - Jellyfin

Information
Class: MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver
Assembly: MediaBrowser.XbmcMetadata
File(s): /srv/git/jellyfin/MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.cs
Line coverage
10%
Covered lines: 3
Uncovered lines: 26
Coverable lines: 29
Total lines: 108
Line coverage: 10.3%
Branch coverage
30%
Covered branches: 3
Total branches: 10
Branch coverage: 30%
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%4260%

File(s)

/srv/git/jellyfin/MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.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.Entities;
 10using MediaBrowser.Model.IO;
 11using Microsoft.Extensions.Logging;
 12
 13namespace MediaBrowser.XbmcMetadata.Savers
 14{
 15    /// <summary>
 16    /// Nfo saver for series.
 17    /// </summary>
 18    public class SeriesNfoSaver : BaseNfoSaver
 19    {
 20        /// <summary>
 21        /// Initializes a new instance of the <see cref="SeriesNfoSaver"/> 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 SeriesNfoSaver(
 30            IFileSystem fileSystem,
 31            IServerConfigurationManager configurationManager,
 32            ILibraryManager libraryManager,
 33            IUserManager userManager,
 34            IUserDataManager userDataManager,
 35            ILogger<SeriesNfoSaver> 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, "tvshow.nfo");
 43
 44        /// <inheritdoc />
 45        protected override string GetRootElementName(BaseItem item)
 046            => "tvshow";
 47
 48        /// <inheritdoc />
 49        public override bool IsEnabledFor(BaseItem item, ItemUpdateType updateType)
 10450            => item.SupportsLocalMetadata && item is Series && updateType >= MinimumUpdateType;
 51
 52        /// <inheritdoc />
 53        protected override void WriteCustomElements(BaseItem item, XmlWriter writer)
 54        {
 055            var series = (Series)item;
 56
 057            var tvdb = item.GetProviderId(MetadataProvider.Tvdb);
 58
 059            if (!string.IsNullOrEmpty(tvdb))
 60            {
 061                writer.WriteElementString("id", tvdb);
 62
 063                writer.WriteStartElement("episodeguide");
 64
 065                var language = item.GetPreferredMetadataLanguage();
 066                language = string.IsNullOrEmpty(language)
 067                    ? "en"
 068                    : language;
 69
 070                writer.WriteStartElement("url");
 071                writer.WriteAttributeString("cache", tvdb + ".xml");
 072                writer.WriteString(
 073                    string.Format(
 074                        CultureInfo.InvariantCulture,
 075                        "http://www.thetvdb.com/api/1D62F2F90030C444/series/{0}/all/{1}.zip",
 076                        tvdb,
 077                        language));
 078                writer.WriteEndElement();
 79
 080                writer.WriteEndElement();
 81            }
 82
 083            writer.WriteElementString("season", "-1");
 084            writer.WriteElementString("episode", "-1");
 85
 086            if (series.Status.HasValue)
 87            {
 088                writer.WriteElementString("status", series.Status.Value.ToString());
 89            }
 090        }
 91
 92        /// <inheritdoc />
 93        protected override IEnumerable<string> GetTagsUsed(BaseItem item)
 94        {
 95            foreach (var tag in base.GetTagsUsed(item))
 96            {
 97                yield return tag;
 98            }
 99
 100            yield return "id";
 101            yield return "episodeguide";
 102            yield return "season";
 103            yield return "episode";
 104            yield return "status";
 105            yield return "displayorder";
 106        }
 107    }
 108}