< Summary - Jellyfin

Information
Class: Emby.Server.Implementations.Collections.CollectionImageProvider
Assembly: Emby.Server.Implementations
File(s): /srv/git/jellyfin/Emby.Server.Implementations/Collections/CollectionImageProvider.cs
Line coverage
4%
Covered lines: 2
Uncovered lines: 39
Coverable lines: 41
Total lines: 96
Line coverage: 4.8%
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

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Supports(...)0%620%
GetItemsWithImages(...)100%210%
CreateImage(...)100%210%

File(s)

/srv/git/jellyfin/Emby.Server.Implementations/Collections/CollectionImageProvider.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using Emby.Server.Implementations.Images;
 4using MediaBrowser.Common.Configuration;
 5using MediaBrowser.Controller.Drawing;
 6using MediaBrowser.Controller.Entities;
 7using MediaBrowser.Controller.Entities.Audio;
 8using MediaBrowser.Controller.Entities.Movies;
 9using MediaBrowser.Controller.Entities.TV;
 10using MediaBrowser.Controller.Providers;
 11using MediaBrowser.Model.Entities;
 12using MediaBrowser.Model.IO;
 13
 14namespace Emby.Server.Implementations.Collections
 15{
 16    /// <summary>
 17    /// A collection image provider.
 18    /// </summary>
 19    public class CollectionImageProvider : BaseDynamicImageProvider<BoxSet>
 20    {
 21        /// <summary>
 22        /// Initializes a new instance of the <see cref="CollectionImageProvider"/> class.
 23        /// </summary>
 24        /// <param name="fileSystem">The filesystem.</param>
 25        /// <param name="providerManager">The provider manager.</param>
 26        /// <param name="applicationPaths">The application paths.</param>
 27        /// <param name="imageProcessor">The image processor.</param>
 28        public CollectionImageProvider(
 29            IFileSystem fileSystem,
 30            IProviderManager providerManager,
 31            IApplicationPaths applicationPaths,
 32            IImageProcessor imageProcessor)
 2233            : base(fileSystem, providerManager, applicationPaths, imageProcessor)
 34        {
 2235        }
 36
 37        /// <inheritdoc />
 38        protected override bool Supports(BaseItem item)
 39        {
 40            // Right now this is the only way to prevent this image from getting created ahead of internet image provide
 041            if (!item.IsLocked)
 42            {
 043                return false;
 44            }
 45
 046            return base.Supports(item);
 47        }
 48
 49        /// <inheritdoc />
 50        protected override IReadOnlyList<BaseItem> GetItemsWithImages(BaseItem item)
 51        {
 052            var playlist = (BoxSet)item;
 53
 054            return playlist.Children.Concat(playlist.GetLinkedChildren())
 055                .Select(i =>
 056                {
 057                    var subItem = i;
 058
 059                    var episode = subItem as Episode;
 060
 061                    var series = episode?.Series;
 062                    if (series is not null && series.HasImage(ImageType.Primary))
 063                    {
 064                        return series;
 065                    }
 066
 067                    if (subItem.HasImage(ImageType.Primary))
 068                    {
 069                        return subItem;
 070                    }
 071
 072                    var parent = subItem.GetOwner() ?? subItem.GetParent();
 073
 074                    if (parent is not null && parent.HasImage(ImageType.Primary))
 075                    {
 076                        if (parent is MusicAlbum)
 077                        {
 078                            return parent;
 079                        }
 080                    }
 081
 082                    return null;
 083                })
 084                .Where(i => i is not null)
 085                .GroupBy(x => x!.Id) // We removed the null values
 086                .Select(x => x.First())
 087                .ToList()!; // Again... the list doesn't contain any null values
 88        }
 89
 90        /// <inheritdoc />
 91        protected override string CreateImage(BaseItem item, IReadOnlyCollection<BaseItem> itemsWithImages, string outpu
 92        {
 093            return CreateSingleImage(itemsWithImages, outputPathWithoutExtension, ImageType.Primary);
 94        }
 95    }
 96}