From 3af754cb20f10201ce2b91e886d01931aba5b277 Mon Sep 17 00:00:00 2001 From: Wyatt Ross <2treecko@gmail.com> Date: Fri, 11 Apr 2025 13:25:35 -0400 Subject: [PATCH] Add Comichubfree (#8423) * Added base level functionality * Added base level functionality * Added icons * removed redundant override * feedback * feedback, also fixed a bug with the selector to do with searches without results * feedback --------- Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> --- src/en/comichubfree/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4511 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2428 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6850 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12762 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 19606 bytes .../extension/en/comichubfree/ComicHubFree.kt | 148 ++++++++++++++++++ 7 files changed, 156 insertions(+) create mode 100644 src/en/comichubfree/build.gradle create mode 100644 src/en/comichubfree/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/comichubfree/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/comichubfree/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/comichubfree/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/comichubfree/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/comichubfree/src/eu/kanade/tachiyomi/extension/en/comichubfree/ComicHubFree.kt diff --git a/src/en/comichubfree/build.gradle b/src/en/comichubfree/build.gradle new file mode 100644 index 000000000..3bbccdf5a --- /dev/null +++ b/src/en/comichubfree/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = "ComicHubFree" + extClass = ".ComicHubFree" + extVersionCode = 1 + isNsfw = false +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/comichubfree/res/mipmap-hdpi/ic_launcher.png b/src/en/comichubfree/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..591e6d97c672ccd7e2871de98409d65e5670299b GIT binary patch literal 4511 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 literal 0 HcmV?d00001 diff --git a/src/en/comichubfree/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/comichubfree/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..22e85a83acd900e90b794b4e0c4243d6dfe1c265 GIT binary patch literal 19606 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..240d10c0c --- /dev/null +++ b/src/en/comichubfree/src/eu/kanade/tachiyomi/extension/en/comichubfree/ComicHubFree.kt @@ -0,0 +1,148 @@ +package eu.kanade.tachiyomi.extension.en.comichubfree + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.FilterList +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 keiyoushi.utils.tryParse +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import java.text.SimpleDateFormat +import java.util.Locale + +class ComicHubFree : ParsedHttpSource() { + private val dateFormat = SimpleDateFormat("d-MMM-yyyy", Locale.getDefault()) + + override val baseUrl = "https://comichubfree.com" + + override val lang = "en" + + override val name = "ComicHubFree" + + override val supportsLatest = true + + override val client = network.cloudflareClient + + override fun popularMangaSelector() = ".movie-list-index > .cartoon-box:has(.detail)" + + override fun latestUpdatesSelector() = popularMangaSelector() + + override fun searchMangaSelector() = popularMangaSelector() + + override fun popularMangaNextPageSelector() = "ul.pagination > li:last-child" + + override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() + + override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() + + override fun chapterListSelector() = "div.episode-list > div > table > tbody > tr" + + override fun imageUrlParse(document: Document) = "" + + private fun Element.imageAttr(): String { + return when { + hasAttr("data-src") -> absUrl("data-src") + else -> absUrl("src") + } + } + + override fun popularMangaRequest(page: Int): Request { + val url = "$baseUrl/popular-comic".toHttpUrl().newBuilder().apply { + addQueryParameter("page", page.toString()) + }.build() + + return GET(url, headers) + } + + override fun latestUpdatesRequest(page: Int): Request { + val url = "$baseUrl/new-comic".toHttpUrl().newBuilder().apply { + addQueryParameter("page", page.toString()) + }.build() + + return GET(url, headers) + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = "$baseUrl/search-comic".toHttpUrl().newBuilder().apply { + addQueryParameter("key", query) + addQueryParameter("page", page.toString()) + }.build() + + return GET(url, headers) + } + + override fun pageListRequest(chapter: SChapter): Request { + val url = (baseUrl + chapter.url + "/all").toHttpUrl() + + return GET(url, headers) + } + + override fun popularMangaFromElement(element: Element): SManga { + return SManga.create().apply { + setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) + title = element.selectFirst("h3")!!.text() + val image = element.selectFirst("img") + thumbnail_url = image?.imageAttr() + } + } + + override fun latestUpdatesFromElement(element: Element): SManga { + return popularMangaFromElement(element) + } + + override fun searchMangaFromElement(element: Element): SManga { + return popularMangaFromElement(element) + } + + override fun chapterFromElement(element: Element): SChapter { + val urlElement = element.selectFirst("a")!! + val dateElement = element.select("td:last-of-type") + + val chapter = SChapter.create().apply { + setUrlWithoutDomain(urlElement.attr("href")) + name = urlElement.text() + date_upload = dateFormat.tryParse(dateElement.text()) + } + + return chapter + } + + private fun parseStatus(status: String): Int { + return when (status) { + "Ongoing" -> SManga.ONGOING + "Completed" -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + } + + override fun mangaDetailsParse(document: Document): SManga { + val infoElement = document.selectFirst("div.movie-info")!! + val seriesInfoElement = infoElement.selectFirst("div.series-info") + val seriesDescriptionElement = infoElement.selectFirst("div#film-content") + + val authorElement = seriesInfoElement?.select("dt:contains(Authors:) + dd") + val statusElement = seriesInfoElement?.select("dt:contains(Status:) + dd") + + val image = seriesInfoElement?.selectFirst("img") + + val manga = SManga.create().apply { + description = seriesDescriptionElement?.text() + thumbnail_url = image?.imageAttr() + author = authorElement?.text() + status = statusElement?.text().orEmpty().let { parseStatus(it) } + } + + return manga + } + + override fun pageListParse(document: Document): List { + return document.select("img.chapter_img").mapIndexed { index, element -> + val img = element.imageAttr() + Page(index, imageUrl = img) + }.distinctBy { it.imageUrl } + } +}