PlaylistImageProvider.cs 2.2 KB

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