From 31476a55f90c883d67b863e9bce8bcdc5e90a8eb Mon Sep 17 00:00:00 2001 From: devi Date: Tue, 4 Jul 2023 21:20:42 +0200 Subject: [PATCH] Fix small bug parse on desc --- .../site/madara/fr/HentaiScantradVf.kt | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt index be049c50b..ca79a96c7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt @@ -1,9 +1,19 @@ package org.koitharu.kotatsu.parsers.site.madara.fr +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.mapNotNullToSet +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.toTitleCase import java.util.Locale @MangaSourceParser("HENTAISCANTRADVF", "Hentai-Scantrad", "fr") @@ -13,4 +23,41 @@ internal class HentaiScantradVf(context: MangaLoaderContext) : override val isNsfwSource = true override val datePattern = "d MMMM, yyyy" override val sourceLocale: Locale = Locale.FRENCH + + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { + val fullUrl = manga.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + + val chaptersDeferred = async { loadChapters(manga.url, doc) } + + val stateselect = doc.body().select("div.summary-content").last() + val state = + stateselect?.let { + when (it.text()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + } + } + + val desc = doc.body().selectFirst("div.description-summary div.summary__content")?.text() + ?: doc.body() .selectFirst("div.datas_synopsis")?.text() + + manga.copy( + tags = doc.body().select("div.genres-content a").mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix("/").substringAfterLast('/'), + title = a.text().toTitleCase(), + source = source, + ) + }, + description = desc, + altTitle = + doc.body().select(".post-content_item:contains(Alt) .summary-content").firstOrNull()?.tableValue()?.text() + ?.trim() ?: doc.body().select(".post-content_item:contains(Nomes alternativos: ) .summary-content") + .firstOrNull()?.tableValue()?.text()?.trim(), + state = state, + chapters = chaptersDeferred.await(), + ) + } }