PlaylistImageProvider.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #nullable disable
  2. #pragma warning disable CS1591
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using MediaBrowser.Common.Configuration;
  6. using MediaBrowser.Controller.Drawing;
  7. using MediaBrowser.Controller.Entities;
  8. using MediaBrowser.Controller.Entities.Audio;
  9. using MediaBrowser.Controller.Entities.TV;
  10. using MediaBrowser.Controller.Playlists;
  11. using MediaBrowser.Controller.Providers;
  12. using MediaBrowser.Model.Entities;
  13. using MediaBrowser.Model.IO;
  14. namespace Emby.Server.Implementations.Images
  15. {
  16. public class PlaylistImageProvider : BaseDynamicImageProvider<Playlist>
  17. {
  18. public PlaylistImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor)
  19. {
  20. }
  21. protected override IReadOnlyList<BaseItem> GetItemsWithImages(BaseItem item)
  22. {
  23. var playlist = (Playlist)item;
  24. return playlist.GetManageableItems()
  25. .Select(i =>
  26. {
  27. var subItem = i.Item2;
  28. if (subItem is Episode episode)
  29. {
  30. var series = episode.Series;
  31. if (series is not null && series.HasImage(ImageType.Primary))
  32. {
  33. return series;
  34. }
  35. }
  36. if (subItem.HasImage(ImageType.Primary))
  37. {
  38. return subItem;
  39. }
  40. var parent = subItem.GetOwner() ?? subItem.GetParent();
  41. if (parent is not null && parent.HasImage(ImageType.Primary))
  42. {
  43. if (parent is MusicAlbum)
  44. {
  45. return parent;
  46. }
  47. }
  48. return null;
  49. })
  50. .Where(i => i is not null)
  51. .DistinctBy(x => x.Id)
  52. .ToList();
  53. }
  54. }
  55. }