< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Music.AudioMetadataService
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Music/AudioMetadataService.cs
Line coverage
9%
Covered lines: 2
Uncovered lines: 20
Coverable lines: 22
Total lines: 79
Line coverage: 9%
Branch coverage
0%
Covered branches: 0
Total branches: 18
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%
SetProviderId(...)0%110100%
MergeData(...)0%7280%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Music/AudioMetadataService.cs

#LineLine coverage
 1using System;
 2using System.Linq;
 3using MediaBrowser.Controller.Configuration;
 4using MediaBrowser.Controller.Entities.Audio;
 5using MediaBrowser.Controller.Library;
 6using MediaBrowser.Controller.Providers;
 7using MediaBrowser.Model.Entities;
 8using MediaBrowser.Model.IO;
 9using MediaBrowser.Providers.Manager;
 10using Microsoft.Extensions.Logging;
 11
 12namespace MediaBrowser.Providers.Music
 13{
 14    /// <summary>
 15    /// The audio metadata service.
 16    /// </summary>
 17    public class AudioMetadataService : MetadataService<Audio, SongInfo>
 18    {
 19        /// <summary>
 20        /// Initializes a new instance of the <see cref="AudioMetadataService"/> class.
 21        /// </summary>
 22        /// <param name="serverConfigurationManager">Instance of the <see cref="IServerConfigurationManager"/>.</param>
 23        /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
 24        /// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
 25        /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
 26        /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
 27        public AudioMetadataService(
 28            IServerConfigurationManager serverConfigurationManager,
 29            ILogger<AudioMetadataService> logger,
 30            IProviderManager providerManager,
 31            IFileSystem fileSystem,
 32            ILibraryManager libraryManager)
 2233            : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager)
 34        {
 2235        }
 36
 37        private void SetProviderId(Audio sourceItem, Audio targetItem, bool replaceData, MetadataProvider provider)
 38        {
 039            var target = targetItem.GetProviderId(provider);
 040            if (replaceData || string.IsNullOrEmpty(target))
 41            {
 042                var source = sourceItem.GetProviderId(provider);
 043                if (!string.IsNullOrEmpty(source)
 044                    && (string.IsNullOrEmpty(target)
 045                        || !target.Equals(source, StringComparison.Ordinal)))
 46                {
 047                    targetItem.SetProviderId(provider, source);
 48                }
 49            }
 050        }
 51
 52        /// <inheritdoc />
 53        protected override void MergeData(MetadataResult<Audio> source, MetadataResult<Audio> target, MetadataField[] lo
 54        {
 055            base.MergeData(source, target, lockedFields, replaceData, mergeMetadataSettings);
 56
 057            var sourceItem = source.Item;
 058            var targetItem = target.Item;
 59
 060            if (replaceData || targetItem.Artists.Count == 0)
 61            {
 062                targetItem.Artists = sourceItem.Artists;
 63            }
 64            else
 65            {
 066                targetItem.Artists = targetItem.Artists.Concat(sourceItem.Artists).Distinct().ToArray();
 67            }
 68
 069            if (replaceData || string.IsNullOrEmpty(targetItem.Album))
 70            {
 071                targetItem.Album = sourceItem.Album;
 72            }
 73
 074            SetProviderId(sourceItem, targetItem, replaceData, MetadataProvider.MusicBrainzAlbumArtist);
 075            SetProviderId(sourceItem, targetItem, replaceData, MetadataProvider.MusicBrainzAlbum);
 076            SetProviderId(sourceItem, targetItem, replaceData, MetadataProvider.MusicBrainzReleaseGroup);
 077        }
 78    }
 79}