public async Task <IEnumerable <RemoteSearchResult> > GetSearchResults(BoxSetInfo searchInfo, CancellationToken cancellationToken) { var tmdbId = Convert.ToInt32(searchInfo.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture); var language = searchInfo.MetadataLanguage; if (tmdbId > 0) { var collection = await _tmdbClientManager.GetCollectionAsync(tmdbId, language, TmdbUtils.GetImageLanguagesParam(language), cancellationToken).ConfigureAwait(false); if (collection == null) { return(Enumerable.Empty <RemoteSearchResult>()); } var result = new RemoteSearchResult { Name = collection.Name, SearchProviderName = Name }; if (collection.Images != null) { result.ImageUrl = _tmdbClientManager.GetPosterUrl(collection.PosterPath); } result.SetProviderId(MetadataProvider.Tmdb, collection.Id.ToString(CultureInfo.InvariantCulture)); return(new[] { result }); } var collectionSearchResults = await _tmdbClientManager.SearchCollectionAsync(searchInfo.Name, language, cancellationToken).ConfigureAwait(false); var collections = new List <RemoteSearchResult>(); for (var i = 0; i < collectionSearchResults.Count; i++) { var collection = new RemoteSearchResult { Name = collectionSearchResults[i].Name, SearchProviderName = Name }; collection.SetProviderId(MetadataProvider.Tmdb, collectionSearchResults[i].Id.ToString(CultureInfo.InvariantCulture)); collections.Add(collection); } return(collections); }
public async Task <IEnumerable <RemoteImageInfo> > GetImages(BaseItem item, CancellationToken cancellationToken) { var tmdbId = Convert.ToInt32(item.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture); if (tmdbId <= 0) { return(Enumerable.Empty <RemoteImageInfo>()); } var language = item.GetPreferredMetadataLanguage(); // TODO use image languages if All Languages isn't toggled, but there's currently no way to get that value in here var collection = await _tmdbClientManager.GetCollectionAsync(tmdbId, null, null, cancellationToken).ConfigureAwait(false); if (collection?.Images == null) { return(Enumerable.Empty <RemoteImageInfo>()); } var posters = collection.Images.Posters; var backdrops = collection.Images.Backdrops; var remoteImages = new List <RemoteImageInfo>(posters.Count + backdrops.Count); _tmdbClientManager.ConvertPostersToRemoteImageInfo(posters, language, remoteImages); _tmdbClientManager.ConvertBackdropsToRemoteImageInfo(backdrops, language, remoteImages); return(remoteImages); }
public async Task <IEnumerable <RemoteImageInfo> > GetImages(BaseItem item, CancellationToken cancellationToken) { var tmdbId = Convert.ToInt32(item.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture); if (tmdbId <= 0) { return(Enumerable.Empty <RemoteImageInfo>()); } var language = item.GetPreferredMetadataLanguage(); // TODO use image languages if All Languages isn't toggled, but there's currently no way to get that value in here var collection = await _tmdbClientManager.GetCollectionAsync(tmdbId, null, null, cancellationToken).ConfigureAwait(false); if (collection?.Images == null) { return(Enumerable.Empty <RemoteImageInfo>()); } var remoteImages = new List <RemoteImageInfo>(); for (var i = 0; i < collection.Images.Posters.Count; i++) { var poster = collection.Images.Posters[i]; remoteImages.Add(new RemoteImageInfo { Url = _tmdbClientManager.GetPosterUrl(poster.FilePath), CommunityRating = poster.VoteAverage, VoteCount = poster.VoteCount, Width = poster.Width, Height = poster.Height, Language = TmdbUtils.AdjustImageLanguage(poster.Iso_639_1, language), ProviderName = Name, Type = ImageType.Primary, RatingType = RatingType.Score }); } for (var i = 0; i < collection.Images.Backdrops.Count; i++) { var backdrop = collection.Images.Backdrops[i]; remoteImages.Add(new RemoteImageInfo { Url = _tmdbClientManager.GetBackdropUrl(backdrop.FilePath), CommunityRating = backdrop.VoteAverage, VoteCount = backdrop.VoteCount, Width = backdrop.Width, Height = backdrop.Height, ProviderName = Name, Type = ImageType.Backdrop, RatingType = RatingType.Score }); } return(remoteImages.OrderByLanguageDescending(language)); }