ChannelItemImageProvider.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using MediaBrowser.Common.Net;
  2. using MediaBrowser.Controller.Channels;
  3. using MediaBrowser.Controller.Entities;
  4. using MediaBrowser.Controller.Providers;
  5. using MediaBrowser.Model.Entities;
  6. using MediaBrowser.Model.Logging;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using MediaBrowser.Model.MediaInfo;
  12. namespace MediaBrowser.Server.Implementations.Channels
  13. {
  14. public class ChannelItemImageProvider : IDynamicImageProvider, IHasItemChangeMonitor
  15. {
  16. private readonly IHttpClient _httpClient;
  17. private readonly ILogger _logger;
  18. public ChannelItemImageProvider(IHttpClient httpClient, ILogger logger)
  19. {
  20. _httpClient = httpClient;
  21. _logger = logger;
  22. }
  23. public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
  24. {
  25. return new[] { ImageType.Primary };
  26. }
  27. public async Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken)
  28. {
  29. var channelItem = (IChannelItem)item;
  30. var imageResponse = new DynamicImageResponse();
  31. if (!string.IsNullOrEmpty(channelItem.ExternalImagePath))
  32. {
  33. imageResponse.Path = channelItem.ExternalImagePath;
  34. imageResponse.Protocol = MediaProtocol.Http;
  35. imageResponse.HasImage = true;
  36. }
  37. return imageResponse;
  38. }
  39. public string Name
  40. {
  41. get { return "Channel Image Provider"; }
  42. }
  43. public bool Supports(IHasImages item)
  44. {
  45. return item is IChannelItem;
  46. }
  47. public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
  48. {
  49. var channelItem = item as IChannelItem;
  50. if (channelItem != null)
  51. {
  52. return !channelItem.HasImage(ImageType.Primary) && !string.IsNullOrWhiteSpace(channelItem.ExternalImagePath);
  53. }
  54. return false;
  55. }
  56. }
  57. }