/// <inheritdoc /> public async Task <IEnumerable <RemoteImageInfo> > GetImages(BaseItem item, CancellationToken cancellationToken) { if (!item.TryGetProviderId(ImvdbPlugin.ProviderName, out var imvdbId)) { return(Enumerable.Empty <RemoteImageInfo>()); } var imvdbVideo = await _imvdbClient.GetVideoIdResultAsync(imvdbId, cancellationToken) .ConfigureAwait(false); if (string.IsNullOrEmpty(imvdbVideo?.Image?.Size1)) { return(Enumerable.Empty <RemoteImageInfo>()); } return(new[] { new RemoteImageInfo { ProviderName = ImvdbPlugin.ProviderName, Url = imvdbVideo.Image.Size1, Type = ImageType.Primary } }); }
/// <inheritdoc /> public async Task<MetadataResult<MusicVideo>> GetMetadata(MusicVideoInfo info, CancellationToken cancellationToken) { _logger.LogDebug("Get metadata result for {Name}", info.Name); var imvdbId = info.GetProviderId(ImvdbPlugin.ProviderName); var result = new MetadataResult<MusicVideo> { HasMetadata = false }; // IMVDb id not provided, find first result. if (string.IsNullOrEmpty(imvdbId)) { var searchResults = await GetSearchResults(info, cancellationToken) .ConfigureAwait(false); searchResults.FirstOrDefault()?.TryGetProviderId(ImvdbPlugin.ProviderName, out imvdbId); } // No results found, return without populating metadata. if (string.IsNullOrEmpty(imvdbId)) { return result; } // do lookup here by imvdb id var releaseResult = await _imvdbClient.GetVideoIdResultAsync(imvdbId, cancellationToken) .ConfigureAwait(false); if (releaseResult != null) { result.HasMetadata = true; // set properties from data result.Item = new MusicVideo { Name = releaseResult.SongTitle, ProductionYear = releaseResult.Year, Artists = releaseResult.Artists.Select(i => i.Name).ToArray(), ImageInfos = new[] { new ItemImageInfo { Path = releaseResult.Image?.Size1 } } }; foreach (var director in releaseResult.Directors) { result.AddPerson(new PersonInfo { Name = director.Name, ProviderIds = new Dictionary<string, string> { { ImvdbPlugin.ProviderName, director.Id.ToString(CultureInfo.InvariantCulture) }, { ImvdbPlugin.ProviderName + "_slug", director.Url }, }, Type = director.Position }); } result.Item.SetProviderId(ImvdbPlugin.ProviderName, imvdbId); if (!string.IsNullOrEmpty(releaseResult.Url)) { result.Item.SetProviderId(ImvdbPlugin.ProviderName + "_slug", releaseResult.Url); } } return result; }