#nullable disable #pragma warning disable CS1591 using System.Collections.Generic; using System.Linq; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.Images { public class PlaylistImageProvider : BaseDynamicImageProvider { public PlaylistImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor) { } protected override IReadOnlyList GetItemsWithImages(BaseItem item) { var playlist = (Playlist)item; return playlist.GetManageableItems() .Select(i => { var subItem = i.Item2; if (subItem is Episode episode) { var series = episode.Series; if (series is not null && series.HasImage(ImageType.Primary)) { return series; } } if (subItem.HasImage(ImageType.Primary)) { return subItem; } var parent = subItem.GetOwner() ?? subItem.GetParent(); if (parent is not null && parent.HasImage(ImageType.Primary)) { if (parent is MusicAlbum) { return parent; } } return null; }) .Where(i => i is not null) .DistinctBy(x => x.Id) .ToList(); } } }