From 456b3fff5eadc5dba619b129b33f33938fc78d00 Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Mon, 17 Mar 2025 11:46:06 -0300 Subject: [PATCH] Add OsakaScan (#8094) * Add OsakaScan * Fix chapter sort * Fix page loading --- src/pt/osakascan/build.gradle | 10 ++++ .../extension/pt/osakascan/OsakaScan.kt | 50 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/pt/osakascan/build.gradle create mode 100644 src/pt/osakascan/src/eu/kanade/tachiyomi/extension/pt/osakascan/OsakaScan.kt diff --git a/src/pt/osakascan/build.gradle b/src/pt/osakascan/build.gradle new file mode 100644 index 000000000..374a8f0f5 --- /dev/null +++ b/src/pt/osakascan/build.gradle @@ -0,0 +1,10 @@ +ext { + extName = 'Osaka Scan' + extClass = '.OsakaScan' + themePkg = 'zeistmanga' + baseUrl = 'https://www.osakascan.com' + overrideVersionCode = 0 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/pt/osakascan/src/eu/kanade/tachiyomi/extension/pt/osakascan/OsakaScan.kt b/src/pt/osakascan/src/eu/kanade/tachiyomi/extension/pt/osakascan/OsakaScan.kt new file mode 100644 index 000000000..16d8fd364 --- /dev/null +++ b/src/pt/osakascan/src/eu/kanade/tachiyomi/extension/pt/osakascan/OsakaScan.kt @@ -0,0 +1,50 @@ +package eu.kanade.tachiyomi.extension.pt.osakascan + +import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.Response + +class OsakaScan : ZeistManga( + "Osaka Scan", + "https://www.osakascan.com", + "pt-BR", +) { + override val client = super.client.newBuilder() + .rateLimit(2) + .build() + + override val popularMangaSelector = "#PopularPosts2 article" + override val popularMangaSelectorTitle = "h3 a" + override val popularMangaSelectorUrl = popularMangaSelectorTitle + + override fun mangaDetailsParse(response: Response) = SManga.create().apply { + val document = response.asJsoup() + title = document.selectFirst("h1")!!.text() + description = document.selectFirst(mangaDetailsSelectorDescription)?.text() + document.selectFirst("span[data-status]")?.text()?.let { + status = parseStatus(it) + } + genre = document.select("dt:contains(GĂȘnero) + dd a").joinToString { it.text() } + } + + override fun chapterListParse(response: Response): List { + return super.chapterListParse(response) + .map { chapter -> + chapter.apply { + CHAPTER_NUMBER_REGEX.find(name)?.groups?.get(0)?.value?.let { + chapter_number = it.toFloat() + } + } + } + .sortedBy(SChapter::chapter_number).reversed() + } + + override val pageListSelector = "#reader div.separator" + + companion object { + val CHAPTER_NUMBER_REGEX = """\d+(\.\d+)?""".toRegex() + } +}