public Task <IEnumerable <RemoteSearchResult> > GetSearchResults(PersonLookupInfo searchInfo, CancellationToken cancellationToken) { _log.Debug( $"Searching for person name: '{searchInfo.Name}', id: '{searchInfo.ProviderIds.GetOrDefault(SourceNames.AniDb)}'"); var result = Enumerable.Empty <RemoteSearchResult>(); if (!string.IsNullOrWhiteSpace(searchInfo.Name)) { result = _aniDbClient.FindSeiyuu(searchInfo.Name).Select(ToSearchResult); } else if (searchInfo.ProviderIds.ContainsKey(SourceNames.AniDb)) { var aniDbPersonIdString = searchInfo.ProviderIds[SourceNames.AniDb]; parseInt(aniDbPersonIdString) .Iter(aniDbPersonId => { _aniDbClient.GetSeiyuu(aniDbPersonId) .Iter(s => result = new[] { ToSearchResult(s) } ); }); } _log.Debug($"Found {result.Count()} results"); return(Task.FromResult(result)); }
public void TestGetMetadata() { PersonLookupInfo info = new PersonLookupInfo { ProviderIds = new Dictionary <string, string> { { OddbPlugin.ProviderId, "1032025" } } }; var meta = _provider.GetMetadata(info, CancellationToken.None).Result; Assert.True(meta.HasMetadata); Assert.Equal("肖恩·比格斯代夫", meta.Item.Name); }
public Task <MetadataResult <Person> > GetMetadata(PersonLookupInfo info, CancellationToken cancellationToken) { _log.Debug( $"Getting metadata for person name: '{info.Name}', id: '{info.ProviderIds.GetOrDefault(SourceNames.AniDb)}'"); var result = new MetadataResult <Person>(); if (info.ProviderIds.ContainsKey(SourceNames.AniDb)) { var aniDbPersonIdString = info.ProviderIds[SourceNames.AniDb]; parseInt(aniDbPersonIdString) .Iter(aniDbPersonId => { _aniDbClient.GetSeiyuu(aniDbPersonId) .Match(s => { result.Item = new Person { Name = s.Name, ImageInfos = new[] { new ItemImageInfo { Type = ImageType.Primary, Path = s.PictureUrl } }, ProviderIds = new Dictionary <string, string> { { SourceNames.AniDb, s.Id.ToString() } } }; _log.Debug("Found metadata"); }, () => _log.Debug("Failed to find metadata")); }); } return(Task.FromResult(result)); }