From ea3386eda5fd2caef71e27938b9af48e176d1530 Mon Sep 17 00:00:00 2001 From: devi Date: Sun, 13 Aug 2023 09:19:52 +0200 Subject: [PATCH] add MangaCrab and MantrazScan --- .../parsers/site/madara/MadaraParser.kt | 33 +++++++++++-------- .../parsers/site/madara/es/MangaCrab.kt | 19 +++++++++++ .../parsers/site/madara/es/MantrazScan.kt | 15 +++++++++ 3 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt index f5ebe893..d5b89f4f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt @@ -268,7 +268,7 @@ internal abstract class MadaraParser( "div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.post-content div.manga-summary, div.post-content div.desc, div.c-page__content div.summary__content" protected open val selectGenre = "div.genres-content a" protected open val selectTestAsync = "div.listing-chapters_wrap" - + protected open val selectState = "" override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() @@ -284,18 +284,25 @@ internal abstract class MadaraParser( val desc = body.select(selectDesc).html() - val stateDiv = (body.selectFirst("div.post-content_item:contains(Status)") - ?: body.selectFirst("div.post-content_item:contains(Statut)") - ?: body.selectFirst("div.post-content_item:contains(État)") - ?: body.selectFirst("div.post-content_item:contains(حالة العمل)") - ?: body.selectFirst("div.post-content_item:contains(Estado)") - ?: body.selectFirst("div.post-content_item:contains(สถานะ)") - ?: body.selectFirst("div.post-content_item:contains(Stato)") - ?: body.selectFirst("div.post-content_item:contains(Durum)") - ?: body.selectFirst("div.post-content_item:contains(Statüsü)") - ?: body.selectFirst("div.post-content_item:contains(Статус)") - ?: body.selectFirst("div.post-content_item:contains(状态)") - ?: body.selectFirst("div.post-content_item:contains(الحالة)"))?.selectLast("div.summary-content") + val stateDiv = if(selectState.isEmpty()) + { + (body.selectFirst("div.post-content_item:contains(Status)") + ?: body.selectFirst("div.post-content_item:contains(Statut)") + ?: body.selectFirst("div.post-content_item:contains(État)") + ?: body.selectFirst("div.post-content_item:contains(حالة العمل)") + ?: body.selectFirst("div.post-content_item:contains(Estado)") + ?: body.selectFirst("div.post-content_item:contains(สถานะ)") + ?: body.selectFirst("div.post-content_item:contains(Stato)") + ?: body.selectFirst("div.post-content_item:contains(Durum)") + ?: body.selectFirst("div.post-content_item:contains(Statüsü)") + ?: body.selectFirst("div.post-content_item:contains(Статус)") + ?: body.selectFirst("div.post-content_item:contains(状态)") + ?: body.selectFirst("div.post-content_item:contains(الحالة)"))?.selectLast("div.summary-content") + }else + { + body.selectFirst(selectState) + } + val state = stateDiv?.let { when (it.text()) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt new file mode 100644 index 00000000..1f66285e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt @@ -0,0 +1,19 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("MANGA_CRAB", "Manga Crab", "es") +internal class MangaCrab(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGA_CRAB, "manga-crab.com") { + + override val datePattern = "dd/MM/yyyy" + override val tagPrefix = "manga-genero/" + override val listUrl = "series/" + override val selectChapter = "div.listing-chapters_wrap > ul > li" + override val selectDesc = "div.c-page__content div.modal-contenido p" + override val selectState = "div.summary-content2" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt new file mode 100644 index 00000000..fdad0722 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("MANTRAZSCAN", "MantrazScan", "es") +internal class MantrazScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANTRAZSCAN, "mantrazscan.com") { + + override val datePattern = "dd/MM/yyyy" + override val tagPrefix = "generos-de-manga/" +}