/// <inheritdoc /> public async Task <IEnumerable <RemoteSearchResult> > GetSearchResults(PersonLookupInfo searchInfo, CancellationToken cancellationToken) { var personTmdbId = Convert.ToInt32(searchInfo.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture); if (personTmdbId <= 0) { var personResult = await _tmdbClientManager.GetPersonAsync(personTmdbId, cancellationToken).ConfigureAwait(false); if (personResult != null) { var result = new RemoteSearchResult { Name = personResult.Name, SearchProviderName = Name, Overview = personResult.Biography }; if (personResult.Images?.Profiles != null && personResult.Images.Profiles.Count > 0) { result.ImageUrl = _tmdbClientManager.GetProfileUrl(personResult.Images.Profiles[0].FilePath); } result.SetProviderId(MetadataProvider.Tmdb, personResult.Id.ToString(CultureInfo.InvariantCulture)); result.SetProviderId(MetadataProvider.Imdb, personResult.ExternalIds.ImdbId); return(new[] { result }); } } // TODO why? Because of the old rate limit? if (searchInfo.IsAutomated) { // Don't hammer moviedb searching by name return(Enumerable.Empty <RemoteSearchResult>()); } var personSearchResult = await _tmdbClientManager.SearchPersonAsync(searchInfo.Name, cancellationToken).ConfigureAwait(false); var remoteSearchResults = new List <RemoteSearchResult>(); for (var i = 0; i < personSearchResult.Count; i++) { var person = personSearchResult[i]; var remoteSearchResult = new RemoteSearchResult { SearchProviderName = Name, Name = person.Name, ImageUrl = _tmdbClientManager.GetProfileUrl(person.ProfilePath) }; remoteSearchResult.SetProviderId(MetadataProvider.Tmdb, person.Id.ToString(CultureInfo.InvariantCulture)); remoteSearchResults.Add(remoteSearchResult); } return(remoteSearchResults); }
public async Task <IEnumerable <RemoteSearchResult> > GetSearchResults(PersonLookupInfo searchInfo, CancellationToken cancellationToken) { if (searchInfo.TryGetProviderId(MetadataProvider.Tmdb, out var personTmdbId)) { var personResult = await _tmdbClientManager.GetPersonAsync(int.Parse(personTmdbId, CultureInfo.InvariantCulture), cancellationToken).ConfigureAwait(false); if (personResult != null) { var result = new RemoteSearchResult { Name = personResult.Name, SearchProviderName = Name, Overview = personResult.Biography }; if (personResult.Images?.Profiles != null && personResult.Images.Profiles.Count > 0) { result.ImageUrl = _tmdbClientManager.GetProfileUrl(personResult.Images.Profiles[0].FilePath); } result.SetProviderId(MetadataProvider.Tmdb, personResult.Id.ToString(CultureInfo.InvariantCulture)); if (!string.IsNullOrEmpty(personResult.ExternalIds.ImdbId)) { result.SetProviderId(MetadataProvider.Imdb, personResult.ExternalIds.ImdbId); } return(new[] { result }); } } var personSearchResult = await _tmdbClientManager.SearchPersonAsync(searchInfo.Name, cancellationToken).ConfigureAwait(false); var remoteSearchResults = new List <RemoteSearchResult>(); for (var i = 0; i < personSearchResult.Count; i++) { var person = personSearchResult[i]; var remoteSearchResult = new RemoteSearchResult { SearchProviderName = Name, Name = person.Name, ImageUrl = _tmdbClientManager.GetProfileUrl(person.ProfilePath) }; remoteSearchResult.SetProviderId(MetadataProvider.Tmdb, person.Id.ToString(CultureInfo.InvariantCulture)); remoteSearchResults.Add(remoteSearchResult); } return(remoteSearchResults); }