#nullable disable #pragma warning disable CS1591 using System.Collections.Generic; using System.Net.Http; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; namespace MediaBrowser.Providers.Plugins.AudioDb { public class AudioDbArtistImageProvider : IRemoteImageProvider, IHasOrder { private readonly IHttpClientFactory _httpClientFactory; public AudioDbArtistImageProvider(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } /// public string Name => "TheAudioDB"; /// // After fanart public int Order => 1; /// public IEnumerable GetSupportedImages(BaseItem item) { return [ ImageType.Primary, ImageType.Logo, ImageType.Banner, ImageType.Backdrop ]; } /// public async Task> GetImages(BaseItem item, CancellationToken cancellationToken) { item.TryGetProviderId(MetadataProvider.MusicBrainzArtist, out var musicBrainzId); item.TryGetProviderId(MetadataProvider.AudioDbArtist, out var audioDbId); var artist = await AudioDbArtistProvider.Current.GetArtist(musicBrainzId, audioDbId, cancellationToken).ConfigureAwait(false); if (artist is not null) { return GetImages(artist); } return []; } private List GetImages(AudioDbArtistProvider.Artist item) { var list = new List(); if (!string.IsNullOrWhiteSpace(item.strArtistThumb)) { list.Add(new RemoteImageInfo { ProviderName = Name, Url = item.strArtistThumb, Type = ImageType.Primary }); } if (!string.IsNullOrWhiteSpace(item.strArtistLogo)) { list.Add(new RemoteImageInfo { ProviderName = Name, Url = item.strArtistLogo, Type = ImageType.Logo }); } if (!string.IsNullOrWhiteSpace(item.strArtistBanner)) { list.Add(new RemoteImageInfo { ProviderName = Name, Url = item.strArtistBanner, Type = ImageType.Banner }); } if (!string.IsNullOrWhiteSpace(item.strArtistFanart)) { list.Add(new RemoteImageInfo { ProviderName = Name, Url = item.strArtistFanart, Type = ImageType.Backdrop }); } if (!string.IsNullOrWhiteSpace(item.strArtistFanart2)) { list.Add(new RemoteImageInfo { ProviderName = Name, Url = item.strArtistFanart2, Type = ImageType.Backdrop }); } if (!string.IsNullOrWhiteSpace(item.strArtistFanart3)) { list.Add(new RemoteImageInfo { ProviderName = Name, Url = item.strArtistFanart3, Type = ImageType.Backdrop }); } return list; } public Task GetImageResponse(string url, CancellationToken cancellationToken) { var httpClient = _httpClientFactory.CreateClient(NamedClient.Default); return httpClient.GetAsync(url, cancellationToken); } /// public bool Supports(BaseItem item) => item is MusicArtist; } }