From fab28866840b665ff7fce39392e94efbac776ce5 Mon Sep 17 00:00:00 2001 From: glax Date: Wed, 18 Jun 2025 01:55:19 +0200 Subject: [PATCH] ComickIo Stop double work for retrieving chapters: We can build the canonical url from the hids --- API/Schema/MangaConnectors/ComickIo.cs | 45 +++++++++++--------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/API/Schema/MangaConnectors/ComickIo.cs b/API/Schema/MangaConnectors/ComickIo.cs index da8629c..79ff036 100644 --- a/API/Schema/MangaConnectors/ComickIo.cs +++ b/API/Schema/MangaConnectors/ComickIo.cs @@ -78,7 +78,7 @@ public class ComickIo : MangaConnector public override Chapter[] GetChapters(Manga manga, string? language = null) { Log.Info($"Getting Chapters: {manga.IdOnConnectorSite}"); - List chapterHids = new(); + List chapters = new(); int page = 1; while(page < 50) { @@ -95,16 +95,13 @@ public class ComickIo : MangaConnector JToken data = JToken.Parse(sr.ReadToEnd()); JArray? chaptersArray = data["chapters"] as JArray; - if (chaptersArray?.Count < 1) + if (chaptersArray is null || chaptersArray.Count < 1) break; - chapterHids.AddRange(chaptersArray?.Select(token => token.Value("hid")!)!); + chapters.AddRange(ParseChapters(manga, chaptersArray)); page++; } - Log.Debug($"Getting chapters for {manga.Name} yielded {chapterHids.Count} hids. Requesting chapters now..."); - - List chapters = chapterHids.Select(hid => ChapterFromHid(manga, hid)).ToList(); return chapters.ToArray(); } @@ -219,29 +216,23 @@ public class ComickIo : MangaConnector year: year, originalLanguage: originalLanguage); } - private Chapter ChapterFromHid(Manga parentManga, string hid) + private List ParseChapters(Manga parentManga, JArray chaptersArray) { - string requestUrl = $"https://api.comick.fun/chapter/{hid}"; - RequestResult result = downloadClient.MakeRequest(requestUrl, RequestType.Default); - if ((int)result.statusCode < 200 || (int)result.statusCode >= 300) + List chapters = new (); + foreach (JToken chapter in chaptersArray) { - Log.Error("Request failed"); - throw new Exception("Request failed"); + string? chapterNum = chapter.Value("chap"); + string? volumeNumStr = chapter.Value("vol"); + int? volumeNum = volumeNumStr is null ? null : int.Parse(volumeNumStr); + string? title = chapter.Value("title"); + string? hid = chapter.Value("hid"); + string url = $"https://comick.io/comic/{parentManga.IdOnConnectorSite}/{hid}"; + + if(chapterNum is null || hid is null) + continue; + + chapters.Add(new (parentManga, url, chapterNum, volumeNum, hid, title)); } - - using StreamReader sr = new (result.result); - JToken data = JToken.Parse(sr.ReadToEnd()); - - string? canonical = data.Value("canonical"); - string? chapterNum = data["chapter"]?.Value("chap"); - string? volumeNumStr = data["chapter"]?.Value("vol"); - int? volumeNum = volumeNumStr is null ? null : int.Parse(volumeNumStr); - string? title = data["chapter"]?.Value("title"); - - if(chapterNum is null) - throw new Exception("chapterNum is null"); - - string url = $"https://comick.io{canonical}"; - return new Chapter(parentManga, url, chapterNum, volumeNum, hid, title); + return chapters; } } \ No newline at end of file