public async Task <IEnumerable <RemoteSearchResult> > GetSearchResults(SeriesInfo searchInfo, CancellationToken cancellationToken) { var results = new Dictionary <string, RemoteSearchResult>(); var aid = searchInfo.ProviderIds.GetOrDefault(ProviderNames.AniList); if (!string.IsNullOrEmpty(aid)) { var anime = await _api.GetAnime(aid); if (anime != null && !results.ContainsKey(aid)) { results.Add(aid, ToSearchResult(anime)); } } if (!string.IsNullOrEmpty(searchInfo.Name)) { var search = await _api.Search(searchInfo.Name); foreach (var a in search) { if (!results.ContainsKey(a.id.ToString())) { results.Add(a.id.ToString(), ToSearchResult(a)); } } var cleaned = AniDbTitleMatcher.GetComparableName(searchInfo.Name); if (String.Compare(cleaned, searchInfo.Name, StringComparison.OrdinalIgnoreCase) != 0) { search = await _api.Search(cleaned); foreach (var a in search) { if (!results.ContainsKey(a.id.ToString())) { results.Add(a.id.ToString(), ToSearchResult(a)); } } } } return(results.Values); }
public async Task Identify(SeriesInfo info) { if (!string.IsNullOrEmpty(info.ProviderIds.GetOrDefault(ProviderNames.AniList)) && !Plugin.Instance.CheckForceRefreshFlag()) { return; } if (string.IsNullOrEmpty(info.Name)) { return; } try { var search = await _api.Search(info.Name); var cleaned = AniDbTitleMatcher.GetComparableName(info.Name); if (!search.Any() && String.Compare(info.Name, cleaned, StringComparison.OrdinalIgnoreCase) != 0) { search = await _api.Search(cleaned); } var first = search.FirstOrDefault(); if (first == null) { return; } info.ProviderIds.Remove(ProviderNames.AniList); info.ProviderIds.Add(ProviderNames.AniList, first.id.ToString()); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e); // ignore } }