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));
        }
예제 #2
0
        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));
        }