< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.TV.SeasonMetadataService
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/TV/SeasonMetadataService.cs
Line coverage
6%
Covered lines: 2
Uncovered lines: 30
Coverable lines: 32
Total lines: 103
Line coverage: 6.2%
Branch coverage
0%
Covered branches: 0
Total branches: 24
Branch coverage: 0%
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_EnableUpdatingPremiereDateFromChildren()100%210%
BeforeSaveInternal(...)0%210140%
GetChildrenForMetadataUpdates(...)100%210%
UpdateMetadataFromChildren(...)0%2040%
SaveIsVirtualItem(...)0%4260%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/TV/SeasonMetadataService.cs

#LineLine coverage
 1#pragma warning disable CS1591
 2
 3using System;
 4using System.Collections.Generic;
 5using System.Linq;
 6using MediaBrowser.Controller.Configuration;
 7using MediaBrowser.Controller.Entities;
 8using MediaBrowser.Controller.Entities.TV;
 9using MediaBrowser.Controller.Library;
 10using MediaBrowser.Controller.Providers;
 11using MediaBrowser.Model.Entities;
 12using MediaBrowser.Model.IO;
 13using MediaBrowser.Providers.Manager;
 14using Microsoft.Extensions.Logging;
 15
 16namespace MediaBrowser.Providers.TV
 17{
 18    public class SeasonMetadataService : MetadataService<Season, SeasonInfo>
 19    {
 20        public SeasonMetadataService(
 21            IServerConfigurationManager serverConfigurationManager,
 22            ILogger<SeasonMetadataService> logger,
 23            IProviderManager providerManager,
 24            IFileSystem fileSystem,
 25            ILibraryManager libraryManager)
 2226            : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager)
 27        {
 2228        }
 29
 30        /// <inheritdoc />
 031        protected override bool EnableUpdatingPremiereDateFromChildren => true;
 32
 33        /// <inheritdoc />
 34        protected override ItemUpdateType BeforeSaveInternal(Season item, bool isFullRefresh, ItemUpdateType updateType)
 35        {
 036            var updatedType = base.BeforeSaveInternal(item, isFullRefresh, updateType);
 37
 038            if (item.IndexNumber == 0 && !item.IsLocked && !item.LockedFields.Contains(MetadataField.Name))
 39            {
 040                var seasonZeroDisplayName = LibraryManager.GetLibraryOptions(item).SeasonZeroDisplayName;
 41
 042                if (!string.Equals(item.Name, seasonZeroDisplayName, StringComparison.OrdinalIgnoreCase))
 43                {
 044                    item.Name = seasonZeroDisplayName;
 045                    updatedType |= ItemUpdateType.MetadataEdit;
 46                }
 47            }
 48
 049            var seriesName = item.FindSeriesName();
 050            if (!string.Equals(item.SeriesName, seriesName, StringComparison.Ordinal))
 51            {
 052                item.SeriesName = seriesName;
 053                updatedType |= ItemUpdateType.MetadataImport;
 54            }
 55
 056            var seriesPresentationUniqueKey = item.FindSeriesPresentationUniqueKey();
 057            if (!string.Equals(item.SeriesPresentationUniqueKey, seriesPresentationUniqueKey, StringComparison.Ordinal))
 58            {
 059                item.SeriesPresentationUniqueKey = seriesPresentationUniqueKey;
 060                updatedType |= ItemUpdateType.MetadataImport;
 61            }
 62
 063            var seriesId = item.FindSeriesId();
 064            if (!item.SeriesId.Equals(seriesId))
 65            {
 066                item.SeriesId = seriesId;
 067                updatedType |= ItemUpdateType.MetadataImport;
 68            }
 69
 070            return updatedType;
 71        }
 72
 73        /// <inheritdoc />
 74        protected override IList<BaseItem> GetChildrenForMetadataUpdates(Season item)
 075            => item.GetEpisodes();
 76
 77        /// <inheritdoc />
 78        protected override ItemUpdateType UpdateMetadataFromChildren(Season item, IList<BaseItem> children, bool isFullR
 79        {
 080            var updateType = base.UpdateMetadataFromChildren(item, children, isFullRefresh, currentUpdateType);
 81
 082            if (isFullRefresh || currentUpdateType > ItemUpdateType.None)
 83            {
 084                updateType |= SaveIsVirtualItem(item, children);
 85            }
 86
 087            return updateType;
 88        }
 89
 90        private ItemUpdateType SaveIsVirtualItem(Season item, IList<BaseItem> episodes)
 91        {
 092            var isVirtualItem = item.LocationType == LocationType.Virtual && (episodes.Count == 0 || episodes.All(i => i
 93
 094            if (item.IsVirtualItem != isVirtualItem)
 95            {
 096                item.IsVirtualItem = isVirtualItem;
 097                return ItemUpdateType.MetadataEdit;
 98            }
 99
 0100            return ItemUpdateType.None;
 101        }
 102    }
 103}