CollectionImageProvider.cs 2.2 KB

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