blob: 7f804f9df4e2f470ffa068ed8c337270d9bc8eff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Providers;
using System.Collections.Generic;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Providers.Omdb
{
public class OmdbImageProvider : IRemoteImageProvider, IHasOrder
{
private readonly IHttpClient _httpClient;
public OmdbImageProvider(IHttpClient httpClient)
{
_httpClient = httpClient;
}
public IEnumerable<ImageType> GetSupportedImages(IHasImages item)
{
return new List<ImageType>
{
ImageType.Primary
};
}
public Task<IEnumerable<RemoteImageInfo>> GetImages(IHasImages item, CancellationToken cancellationToken)
{
var imdbId = item.GetProviderId(MetadataProviders.Imdb);
var list = new List<RemoteImageInfo>();
if (!string.IsNullOrWhiteSpace(imdbId))
{
list.Add(new RemoteImageInfo
{
ProviderName = Name,
Url = string.Format("http://img.omdbapi.com/?i={0}&apikey=82e83907", imdbId)
});
}
return Task.FromResult<IEnumerable<RemoteImageInfo>>(list);
}
public async Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken)
{
var response = await _httpClient.GetResponse(new HttpRequestOptions
{
CancellationToken = cancellationToken,
Url = url,
ResourcePool = OmdbProvider.ResourcePool
}).ConfigureAwait(false);
if (response.ContentLength == 11059)
{
throw new HttpException("File not found")
{
StatusCode = HttpStatusCode.NotFound
};
}
return response;
}
public string Name
{
get { return "The Open Movie Database"; }
}
public bool Supports(IHasImages item)
{
// Save the http requests since we know it's not currently supported
// TODO: Check again periodically
if (item is Person)
{
return false;
}
// Save the http requests since we know it's not currently supported
if (item is Series || item is Season || item is Episode)
{
return false;
}
var channelItem = item as IChannelMediaItem;
if (channelItem != null)
{
if (channelItem.ContentType == ChannelMediaContentType.Movie)
{
return true;
}
if (channelItem.ContentType == ChannelMediaContentType.MovieExtra)
{
if (channelItem.ExtraType == ExtraType.Trailer)
{
return true;
}
}
}
// Supports images for tv movies
var tvProgram = item as LiveTvProgram;
if (tvProgram != null && tvProgram.IsMovie)
{
return true;
}
return item is Movie;
}
public int Order
{
get
{
// After other internet providers, because they're better
// But before fallback providers like screengrab
return 90;
}
}
}
}
|