< Summary - Jellyfin

Information
Class: MediaBrowser.LocalMetadata.Images.EpisodeLocalImageProvider
Assembly: MediaBrowser.LocalMetadata
File(s): /srv/git/jellyfin/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
Line coverage
4%
Covered lines: 1
Uncovered lines: 24
Coverable lines: 25
Total lines: 85
Line coverage: 4%
Branch coverage
6%
Covered branches: 1
Total branches: 16
Branch coverage: 6.2%
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
get_Name()100%210%
get_Order()100%210%
Supports(...)50%22100%
GetImages(...)0%2040%
GetImageFilesFromFolder(...)0%110100%

File(s)

/srv/git/jellyfin/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.IO;
 4using System.Linq;
 5using Jellyfin.Extensions;
 6using MediaBrowser.Controller.Entities;
 7using MediaBrowser.Controller.Entities.TV;
 8using MediaBrowser.Controller.Providers;
 9using MediaBrowser.Model.Entities;
 10using MediaBrowser.Model.IO;
 11
 12namespace MediaBrowser.LocalMetadata.Images
 13{
 14    /// <summary>
 15    /// Episode local image provider.
 16    /// </summary>
 17    public class EpisodeLocalImageProvider : ILocalImageProvider, IHasOrder
 18    {
 19        /// <inheritdoc />
 020        public string Name => "Local Images";
 21
 22        /// <inheritdoc />
 023        public int Order => 0;
 24
 25        /// <inheritdoc />
 26        public bool Supports(BaseItem item)
 27        {
 4628            return item is Episode && item.SupportsLocalMetadata;
 29        }
 30
 31        /// <inheritdoc />
 32        public IEnumerable<LocalImageInfo> GetImages(BaseItem item, IDirectoryService directoryService)
 33        {
 034            var parentPath = Path.GetDirectoryName(item.Path);
 035            if (parentPath is null)
 36            {
 037                return Enumerable.Empty<LocalImageInfo>();
 38            }
 39
 040            var parentPathFiles = directoryService.GetFiles(parentPath);
 041            var nameWithoutExtension = Path.GetFileNameWithoutExtension(item.Path.AsSpan()).ToString();
 42
 043            var images = GetImageFilesFromFolder(nameWithoutExtension, parentPathFiles);
 44
 045            var metadataSubDir = directoryService.GetDirectories(parentPath).FirstOrDefault(d => d.Name.Equals("metadata
 046            if (metadataSubDir is not null)
 47            {
 048                var files = directoryService.GetFiles(metadataSubDir.FullName);
 049                images.AddRange(GetImageFilesFromFolder(nameWithoutExtension, files));
 50            }
 51
 052            return images;
 53        }
 54
 55        private List<LocalImageInfo> GetImageFilesFromFolder(ReadOnlySpan<char> filenameWithoutExtension, List<FileSyste
 56        {
 057            var list = new List<LocalImageInfo>(1);
 058            var thumbName = string.Concat(filenameWithoutExtension, "-thumb");
 59
 060            foreach (var i in filePaths)
 61            {
 062                if (i.IsDirectory)
 63                {
 64                    continue;
 65                }
 66
 067                if (BaseItem.SupportedImageExtensions.Contains(i.Extension.AsSpan(), StringComparison.OrdinalIgnoreCase)
 68                {
 069                    var currentNameWithoutExtension = Path.GetFileNameWithoutExtension(i.FullName.AsSpan());
 70
 071                    if (filenameWithoutExtension.Equals(currentNameWithoutExtension, StringComparison.OrdinalIgnoreCase)
 72                    {
 073                        list.Add(new LocalImageInfo { FileInfo = i, Type = ImageType.Primary });
 74                    }
 075                    else if (currentNameWithoutExtension.Equals(thumbName, StringComparison.OrdinalIgnoreCase))
 76                    {
 077                        list.Add(new LocalImageInfo { FileInfo = i, Type = ImageType.Primary });
 78                    }
 79                }
 80            }
 81
 082            return list;
 83        }
 84    }
 85}