Metadata-Site Search (Interactive linking)

This commit is contained in:
2025-06-29 21:13:05 +02:00
parent ae0c6c8240
commit 7c9e0eddf9
4 changed files with 90 additions and 29 deletions

View File

@ -10,7 +10,7 @@ public class MyAnimeList : MetadataFetcher
private static readonly Jikan Jikan = new ();
private static readonly Regex GetIdFromUrl = new(@"https?:\/\/myanimelist\.net\/manga\/([0-9]+)\/?.*");
public override MetadataEntry? FindLinkedMetadataEntry(Manga manga)
public override MetadataSearchResult[] SearchMetadataEntry(Manga manga)
{
if (manga.Links.Any(link => link.LinkProvider.Equals("MyAnimeList", StringComparison.InvariantCultureIgnoreCase)))
{
@ -19,14 +19,23 @@ public class MyAnimeList : MetadataFetcher
if (m.Success && m.Groups[1].Success)
{
long id = long.Parse(m.Groups[1].Value);
return new MetadataEntry(this, manga, id.ToString()!);
JikanDotNet.Manga data = Jikan.GetMangaAsync(id).Result.Data;
return [new MetadataSearchResult(id.ToString(), data.Titles.First().Title, data.Url, data.Synopsis)];
}
}
ICollection<JikanDotNet.Manga> resultData = Jikan.SearchMangaAsync(manga.Name).Result.Data;
return SearchMetadataEntry(manga.Name);
}
public override MetadataSearchResult[] SearchMetadataEntry(string searchTerm)
{
ICollection<JikanDotNet.Manga> resultData = Jikan.SearchMangaAsync(searchTerm).Result.Data;
if (resultData.Count < 1)
return null;
return new MetadataEntry(this, manga, resultData.First().MalId.ToString());
return [];
return resultData.Select(data =>
new MetadataSearchResult(data.MalId.ToString(), data.Titles.First().Title, data.Url, data.Synopsis))
.ToArray();
}
/// <summary>