PlaylistImageProvider.cs 2.1 KB

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