From 16bda48c5692f1547a9adcec4a843c8cf365103a Mon Sep 17 00:00:00 2001 From: Romain Date: Thu, 15 May 2025 17:25:52 +0200 Subject: [PATCH] Add ComicTop (#8849) * Add ComicTop Closes #1264 * Wtff * Watch out for a second train * Shloud be good * Add isNsfw --- src/ja/comictop/build.gradle | 8 ++ .../comictop/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2505 bytes .../comictop/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1419 bytes .../comictop/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3239 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 5775 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 7961 bytes .../extension/ja/comictop/ComicTop.kt | 109 ++++++++++++++++++ 7 files changed, 117 insertions(+) create mode 100644 src/ja/comictop/build.gradle create mode 100644 src/ja/comictop/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/ja/comictop/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/ja/comictop/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/ja/comictop/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/ja/comictop/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/ja/comictop/src/eu/kanade/tachiyomi/extension/ja/comictop/ComicTop.kt diff --git a/src/ja/comictop/build.gradle b/src/ja/comictop/build.gradle new file mode 100644 index 000000000..9e6236c5f --- /dev/null +++ b/src/ja/comictop/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'ComicTop' + extClass = '.ComicTop' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/ja/comictop/res/mipmap-hdpi/ic_launcher.png b/src/ja/comictop/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e5a80ebc2de1b2fa38e18810a29b1a913b5ac4 GIT binary patch literal 2505 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 Z{}1X)p6K6&TcrR1002ovPDHLkV1nOF459!4 literal 0 HcmV?d00001 diff --git a/src/ja/comictop/res/mipmap-xxhdpi/ic_launcher.png b/src/ja/comictop/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0bb220465f43ceb8898e9d708c6205a9d8b8db GIT binary patch literal 5775 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 literal 0 HcmV?d00001 diff --git a/src/ja/comictop/src/eu/kanade/tachiyomi/extension/ja/comictop/ComicTop.kt b/src/ja/comictop/src/eu/kanade/tachiyomi/extension/ja/comictop/ComicTop.kt new file mode 100644 index 000000000..1838ba646 --- /dev/null +++ b/src/ja/comictop/src/eu/kanade/tachiyomi/extension/ja/comictop/ComicTop.kt @@ -0,0 +1,109 @@ +package eu.kanade.tachiyomi.extension.ja.comictop + +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 ComicTop : ParsedHttpSource() { + + override val name = "ComicTop" + + override val baseUrl = "https://comic-top.com" + + override val lang = "ja" + + override val supportsLatest = true + + // ============================== Popular =============================== + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/popular/page/$page", headers) + + override fun popularMangaSelector() = ".animposx > a" + + override fun popularMangaFromElement(element: Element) = SManga.create().apply { + val img = element.selectFirst("img")!! + thumbnail_url = img.imgAttr() + title = img.attr("title") + setUrlWithoutDomain(element.absUrl("href")) + } + + override fun popularMangaNextPageSelector() = "#nextpagination" + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/latest-chapter/page/$page/", headers) + + override fun latestUpdatesSelector() = popularMangaSelector() + + override fun latestUpdatesFromElement(element: Element) = popularMangaFromElement(element) + override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() + + // =============================== Search =============================== + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = GET( + "$baseUrl/page/$page".toHttpUrl().newBuilder() + .addQueryParameter("s", query).build(), + headers, + ) + + override fun searchMangaSelector() = latestUpdatesSelector() + + override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) + + override fun searchMangaNextPageSelector() = latestUpdatesNextPageSelector() + + // =========================== Manga Details ============================ + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + val infoElement = document.selectFirst(".infoanime")!! + with(infoElement) { + title = getElementsByTag("h1").first()!!.text() + author = select(".author-info > a").eachText().joinToString() + genre = select(".genre-info > a[rel=tag]").eachText().joinToString() + thumbnail_url = select("img").first()?.imgAttr() + description = select("div[itemprop=description]").text() + } + } + + // ============================== Chapters ============================== + override fun chapterListSelector(): String = "#chapter_list li" + + override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply { + with(element.selectFirst("a[title]")!!) { + url = "/" + attr("abs:href").toHttpUrl().queryParameter("ct")!! + name = attr("title") + } + date_upload = dateFormat.tryParse(element.selectFirst(".date")?.text()) + chapter_number = element.getElementsByTag("chapter").text().toFloatOrNull()!! + } + + // =============================== Pages ================================ + override fun pageListParse(document: Document): List { + return document.select("#imagech").map { it -> + Page(it.attr("img-id").toInt(), imageUrl = it.imgAttr()!!) + } + } + + override fun imageUrlParse(document: Document) = throw UnsupportedOperationException("Not used") + + // ============================== Filters =============================== + + // No filters + + // =============================== Utils ================================== + private fun Element.imgAttr(): String? { + return when { + hasAttr("data-src") -> attr("abs:data-src") + else -> attr("abs:src") + } + .substringBefore("?") + } + + private val dateFormat = SimpleDateFormat("M\u6708 d, yyyy", Locale.JAPANESE) +}