-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathAniDbSeasonImageProvider.cs
58 lines (49 loc) · 1.95 KB
/
AniDbSeasonImageProvider.cs
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
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
namespace Jellyfin.Plugin.Anime.Providers.AniDB.Metadata
{
/// <summary>
/// Copies the series image into a season, if the season does not otherwise have any primary image.
/// </summary>
public class AniDbSeasonImageProvider : IRemoteImageProvider
{
private readonly IApplicationPaths _appPaths;
private readonly IHttpClient _httpClient;
public AniDbSeasonImageProvider(IApplicationPaths appPaths, IHttpClient httpClient)
{
_appPaths = appPaths;
_httpClient = httpClient;
}
public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken)
{
return new AniDbSeriesImagesProvider(_httpClient, _appPaths).GetImageResponse(url, cancellationToken);
}
public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
{
var season = (Season)item;
var series = season.Series;
var seriesId = series.ProviderIds.GetOrDefault(ProviderNames.AniDb);
if (string.IsNullOrEmpty(seriesId))
return Enumerable.Empty<RemoteImageInfo>();
return await new AniDbSeriesImagesProvider(_httpClient, _appPaths).GetImages(seriesId, cancellationToken);
}
public IEnumerable<ImageType> GetSupportedImages(BaseItem item)
{
return new[] { ImageType.Primary };
}
public string Name => "AniDB";
public bool Supports(BaseItem item)
{
return item is Season;
}
}
}