< Summary - Jellyfin

Information
Class: Emby.Server.Implementations.Library.SimilarItems.MusicAlbumSimilarItemsProvider
Assembly: Emby.Server.Implementations
File(s): /srv/git/jellyfin/Emby.Server.Implementations/Library/SimilarItems/MusicAlbumSimilarItemsProvider.cs
Line coverage
11%
Covered lines: 2
Uncovered lines: 16
Coverable lines: 18
Total lines: 55
Line coverage: 11.1%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 5/16/2026 - 12:15:55 AM Line coverage: 11.1% (2/18) Branch coverage: 0% (0/2) Total lines: 55 5/16/2026 - 12:15:55 AM Line coverage: 11.1% (2/18) Branch coverage: 0% (0/2) Total lines: 55

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Name()100%210%
get_Type()100%210%
GetSimilarItemsAsync(...)0%620%

File(s)

/srv/git/jellyfin/Emby.Server.Implementations/Library/SimilarItems/MusicAlbumSimilarItemsProvider.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Threading;
 3using System.Threading.Tasks;
 4using Jellyfin.Data.Enums;
 5using Jellyfin.Database.Implementations.Enums;
 6using MediaBrowser.Controller.Dto;
 7using MediaBrowser.Controller.Entities;
 8using MediaBrowser.Controller.Entities.Audio;
 9using MediaBrowser.Controller.Library;
 10using MediaBrowser.Model.Configuration;
 11
 12namespace Emby.Server.Implementations.Library.SimilarItems;
 13
 14/// <summary>
 15/// Provides similar items for music albums.
 16/// </summary>
 17public class MusicAlbumSimilarItemsProvider : ILocalSimilarItemsProvider<MusicAlbum>
 18{
 19    private readonly ILibraryManager _libraryManager;
 20
 21    /// <summary>
 22    /// Initializes a new instance of the <see cref="MusicAlbumSimilarItemsProvider"/> class.
 23    /// </summary>
 24    /// <param name="libraryManager">The library manager.</param>
 25    public MusicAlbumSimilarItemsProvider(ILibraryManager libraryManager)
 26    {
 2127        _libraryManager = libraryManager;
 2128    }
 29
 30    /// <inheritdoc/>
 031    public string Name => "Local Genre/Tag";
 32
 33    /// <inheritdoc/>
 034    public MetadataPluginType Type => MetadataPluginType.LocalSimilarityProvider;
 35
 36    /// <inheritdoc/>
 37    public Task<IReadOnlyList<BaseItem>> GetSimilarItemsAsync(MusicAlbum item, SimilarItemsQuery query, CancellationToke
 38    {
 039        var internalQuery = new InternalItemsQuery(query.User)
 040        {
 041            Genres = item.Genres,
 042            Tags = item.Tags,
 043            Limit = query.Limit,
 044            DtoOptions = query.DtoOptions ?? new DtoOptions(),
 045            ExcludeItemIds = [.. query.ExcludeItemIds],
 046            ExcludeArtistIds = [.. query.ExcludeArtistIds],
 047            IncludeItemTypes = [BaseItemKind.MusicAlbum],
 048            EnableGroupByMetadataKey = false,
 049            EnableTotalRecordCount = true,
 050            OrderBy = [(ItemSortBy.Random, SortOrder.Ascending)]
 051        };
 52
 053        return Task.FromResult(_libraryManager.GetItemList(internalQuery));
 54    }
 55}