From 9dfa9a89a02484cb65c651bc2e9d9e9311475dce Mon Sep 17 00:00:00 2001 From: Wyatt Ross <2treecko@gmail.com> Date: Thu, 24 Apr 2025 13:11:45 -0400 Subject: [PATCH] Add recursive parsing for chapters in ComicHubFree (#8605) Fixed pagination --- src/en/comichubfree/build.gradle | 2 +- .../extension/en/comichubfree/ComicHubFree.kt | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/en/comichubfree/build.gradle b/src/en/comichubfree/build.gradle index 3bbccdf5a..80d715fcd 100644 --- a/src/en/comichubfree/build.gradle +++ b/src/en/comichubfree/build.gradle @@ -1,7 +1,7 @@ ext { extName = "ComicHubFree" extClass = ".ComicHubFree" - extVersionCode = 1 + extVersionCode = 2 isNsfw = false } diff --git a/src/en/comichubfree/src/eu/kanade/tachiyomi/extension/en/comichubfree/ComicHubFree.kt b/src/en/comichubfree/src/eu/kanade/tachiyomi/extension/en/comichubfree/ComicHubFree.kt index 240d10c0c..f069990d1 100644 --- a/src/en/comichubfree/src/eu/kanade/tachiyomi/extension/en/comichubfree/ComicHubFree.kt +++ b/src/en/comichubfree/src/eu/kanade/tachiyomi/extension/en/comichubfree/ComicHubFree.kt @@ -6,9 +6,11 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import eu.kanade.tachiyomi.util.asJsoup import keiyoushi.utils.tryParse import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request +import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import java.text.SimpleDateFormat @@ -33,7 +35,7 @@ class ComicHubFree : ParsedHttpSource() { override fun searchMangaSelector() = popularMangaSelector() - override fun popularMangaNextPageSelector() = "ul.pagination > li:last-child" + override fun popularMangaNextPageSelector() = "ul.pagination a[rel=next]:not(hidden)" override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() @@ -41,6 +43,21 @@ class ComicHubFree : ParsedHttpSource() { override fun chapterListSelector() = "div.episode-list > div > table > tbody > tr" + override fun chapterListParse(response: Response): List { + val chapters = mutableListOf() + + fun parseChapters(document: Document) { + document.select(chapterListSelector()).map { chapters.add(chapterFromElement(it)) } + document.selectFirst(popularMangaNextPageSelector())?.let { it -> + parseChapters(client.newCall(GET(it.absUrl("href"), headers)).execute().asJsoup()) + } + } + + parseChapters(response.asJsoup()) + + return chapters + } + override fun imageUrlParse(document: Document) = "" private fun Element.imageAttr(): String {