From d5b6ff4267c54b0e714a875a0ab4023873b1a2fb Mon Sep 17 00:00:00 2001 From: glax Date: Thu, 2 Oct 2025 17:47:52 +0200 Subject: [PATCH] Fix Mangapark duplicate entries --- API/MangaConnectors/Global.cs | 2 +- API/MangaConnectors/MangaPark.cs | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/API/MangaConnectors/Global.cs b/API/MangaConnectors/Global.cs index 537b5b9..3f52c9a 100644 --- a/API/MangaConnectors/Global.cs +++ b/API/MangaConnectors/Global.cs @@ -29,7 +29,7 @@ public class Global : MangaConnector }while(tasks.Any(t => !t.IsCompleted)); //Concatenate all results into one - (Manga, MangaConnectorId)[] ret = tasks.Select(t => t.IsCompletedSuccessfully ? t.Result : []).ToArray().SelectMany(i => i).ToArray(); + (Manga, MangaConnectorId)[] ret = tasks.Select(t => t.IsCompletedSuccessfully ? t.Result : []).SelectMany(i => i).ToArray(); Log.Debug($"Got {ret.Length} results."); return ret; } diff --git a/API/MangaConnectors/MangaPark.cs b/API/MangaConnectors/MangaPark.cs index e2c46d1..0c548b7 100644 --- a/API/MangaConnectors/MangaPark.cs +++ b/API/MangaConnectors/MangaPark.cs @@ -38,25 +38,22 @@ public class MangaPark : MangaConnector Uri searchUri = new(baseUri, $"search?word={HttpUtility.UrlEncode(mangaSearchName)}&lang={Tranga.Settings.DownloadLanguage}&page={page}"); if (downloadClient.MakeRequest(searchUri.ToString(), RequestType.Default) is { statusCode: >= HttpStatusCode.OK and < HttpStatusCode.Ambiguous } result) { - HtmlDocument document= result.CreateDocument(); + HtmlDocument document = result.CreateDocument(); // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract HAP sucks with nullable types if (document.DocumentNode.SelectSingleNode("//button[contains(text(),\"No Data\")]") is not null) // No results found break; + + if (document.GetNodesWith("q4_9") is not { Count: > 0 } resultNodes) + return []; + IEnumerable urls = resultNodes.Select(node => + node.SelectSingleNode("//a[contains(@href,'title')]").Attributes["href"].Value).Distinct(); - ret.AddRange(document.GetNodesWith("q4_9")?.Select(n => ParseSingleMangaFromSearchResultsList(baseUri, n))??[]); + ret.AddRange(urls.Select(link => ((Manga, MangaConnectorId))GetMangaFromUrl(new Uri(baseUri, link).ToString())!)); }else return null; } - return ret.ToArray(); - } - - private (Manga, MangaConnectorId) ParseSingleMangaFromSearchResultsList(Uri baseUri, HtmlNode resultNode) - { - HtmlNode titleAndLinkNode = resultNode.SelectSingleNode("//a[contains(@href,'title')]"); - string link = titleAndLinkNode.Attributes["href"].Value; - - return ((Manga, MangaConnectorId))GetMangaFromUrl(new Uri(baseUri, link).ToString())!; + return ret.DistinctBy(r => r.Item1.Key).ToArray(); } public override (Manga, MangaConnectorId)? GetMangaFromId(string mangaIdOnSite)