PlaylistImageProvider.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. namespace MediaBrowser.Server.Implementations.Playlists
  16. {
  17. public class PlaylistImageProvider : BaseDynamicImageProvider<Playlist>
  18. {
  19. public PlaylistImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor)
  20. {
  21. }
  22. protected override Task<List<BaseItem>> GetItemsWithImages(IHasImages item)
  23. {
  24. var playlist = (Playlist)item;
  25. var items = playlist.GetManageableItems()
  26. .Select(i =>
  27. {
  28. var subItem = i.Item2;
  29. var episode = subItem as Episode;
  30. if (episode != null)
  31. {
  32. var series = episode.Series;
  33. if (series != null && series.HasImage(ImageType.Primary))
  34. {
  35. return series;
  36. }
  37. }
  38. if (subItem.HasImage(ImageType.Primary))
  39. {
  40. return subItem;
  41. }
  42. var parent = subItem.Parent;
  43. if (parent != null && parent.HasImage(ImageType.Primary))
  44. {
  45. if (parent is MusicAlbum)
  46. {
  47. return parent;
  48. }
  49. }
  50. return null;
  51. })
  52. .Where(i => i != null)
  53. .DistinctBy(i => i.Id)
  54. .ToList();
  55. return Task.FromResult(GetFinalItems(items));
  56. }
  57. }
  58. }