OmdbImageProvider.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using MediaBrowser.Common.Net;
  2. using MediaBrowser.Controller.Entities;
  3. using MediaBrowser.Controller.Entities.Movies;
  4. using MediaBrowser.Controller.Entities.TV;
  5. using MediaBrowser.Controller.LiveTv;
  6. using MediaBrowser.Controller.Providers;
  7. using MediaBrowser.Model.Entities;
  8. using MediaBrowser.Model.Providers;
  9. using System.Collections.Generic;
  10. using System.Threading;
  11. using System.Threading.Tasks;
  12. namespace MediaBrowser.Providers.Omdb
  13. {
  14. public class OmdbImageProvider : IRemoteImageProvider, IHasOrder
  15. {
  16. private readonly IHttpClient _httpClient;
  17. public OmdbImageProvider(IHttpClient httpClient)
  18. {
  19. _httpClient = httpClient;
  20. }
  21. public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
  22. {
  23. return new List<ImageType>
  24. {
  25. ImageType.Primary
  26. };
  27. }
  28. public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
  29. {
  30. var imdbId = item.GetProviderId(MetadataProviders.Imdb);
  31. var list = new List<RemoteImageInfo>();
  32. if (!string.IsNullOrWhiteSpace(imdbId))
  33. {
  34. list.Add(new RemoteImageInfo
  35. {
  36. ProviderName = Name,
  37. Url = string.Format("https://img.omdbapi.com/?i={0}&apikey=82e83907", imdbId)
  38. });
  39. }
  40. return Task.FromResult<IEnumerable<RemoteImageInfo>>(list);
  41. }
  42. public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken)
  43. {
  44. return _httpClient.GetResponse(new HttpRequestOptions
  45. {
  46. CancellationToken = cancellationToken,
  47. Url = url,
  48. ResourcePool = OmdbProvider.ResourcePool
  49. });
  50. }
  51. public string Name
  52. {
  53. get { return "The Open Movie Database"; }
  54. }
  55. public bool Supports(IHasImages item)
  56. {
  57. // We'll hammer Omdb if we enable this
  58. if (item is Person)
  59. {
  60. return false;
  61. }
  62. // Save the http requests since we know it's not currently supported
  63. if (item is Season || item is Episode)
  64. {
  65. return false;
  66. }
  67. // Supports images for tv movies
  68. var tvProgram = item as LiveTvProgram;
  69. if (tvProgram != null && tvProgram.IsMovie)
  70. {
  71. return true;
  72. }
  73. return item is Movie || item is Trailer;
  74. }
  75. public int Order
  76. {
  77. get
  78. {
  79. // After other internet providers, because they're better
  80. // But before fallback providers like screengrab
  81. return 90;
  82. }
  83. }
  84. }
  85. }