mirror of
https://github.com/C9Glax/tranga.git
synced 2025-10-11 05:09:49 +02:00
Fix Mangapark duplicate entries
This commit is contained in:
@@ -29,7 +29,7 @@ public class Global : MangaConnector
|
|||||||
}while(tasks.Any(t => !t.IsCompleted));
|
}while(tasks.Any(t => !t.IsCompleted));
|
||||||
|
|
||||||
//Concatenate all results into one
|
//Concatenate all results into one
|
||||||
(Manga, MangaConnectorId<Manga>)[] ret = tasks.Select(t => t.IsCompletedSuccessfully ? t.Result : []).ToArray().SelectMany(i => i).ToArray();
|
(Manga, MangaConnectorId<Manga>)[] ret = tasks.Select(t => t.IsCompletedSuccessfully ? t.Result : []).SelectMany(i => i).ToArray();
|
||||||
Log.Debug($"Got {ret.Length} results.");
|
Log.Debug($"Got {ret.Length} results.");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@@ -38,25 +38,22 @@ public class MangaPark : MangaConnector
|
|||||||
Uri searchUri = new(baseUri, $"search?word={HttpUtility.UrlEncode(mangaSearchName)}&lang={Tranga.Settings.DownloadLanguage}&page={page}");
|
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)
|
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
|
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract HAP sucks with nullable types
|
||||||
if (document.DocumentNode.SelectSingleNode("//button[contains(text(),\"No Data\")]") is not null) // No results found
|
if (document.DocumentNode.SelectSingleNode("//button[contains(text(),\"No Data\")]") is not null) // No results found
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if (document.GetNodesWith("q4_9") is not { Count: > 0 } resultNodes)
|
||||||
|
return [];
|
||||||
|
IEnumerable<string> 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<Manga>))GetMangaFromUrl(new Uri(baseUri, link).ToString())!));
|
||||||
}else
|
}else
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret.ToArray();
|
return ret.DistinctBy(r => r.Item1.Key).ToArray();
|
||||||
}
|
|
||||||
|
|
||||||
private (Manga, MangaConnectorId<Manga>) ParseSingleMangaFromSearchResultsList(Uri baseUri, HtmlNode resultNode)
|
|
||||||
{
|
|
||||||
HtmlNode titleAndLinkNode = resultNode.SelectSingleNode("//a[contains(@href,'title')]");
|
|
||||||
string link = titleAndLinkNode.Attributes["href"].Value;
|
|
||||||
|
|
||||||
return ((Manga, MangaConnectorId<Manga>))GetMangaFromUrl(new Uri(baseUri, link).ToString())!;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override (Manga, MangaConnectorId<Manga>)? GetMangaFromId(string mangaIdOnSite)
|
public override (Manga, MangaConnectorId<Manga>)? GetMangaFromId(string mangaIdOnSite)
|
||||||
|
Reference in New Issue
Block a user