#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 < Playlist >
{
public PlaylistImageProvider ( IFileSystem fileSystem , IProviderManager providerManager , IApplicationPaths applicationPaths , IImageProcessor imageProcessor ) : base ( fileSystem , providerManager , applicationPaths , imageProcessor )
{
}
protected override IReadOnlyList < BaseItem > 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 ( ) ;
}
}
}