From 553777ef082418a46eacf06399eabe0f9c046c34 Mon Sep 17 00:00:00 2001 From: devi <70220050+davvarrr@users.noreply.github.com> Date: Thu, 22 Jun 2023 20:59:36 +0200 Subject: [PATCH] Create HhentaiFr.kt --- .../kotatsu/parsers/site/madara/HhentaiFr.kt | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/HhentaiFr.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/HhentaiFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/HhentaiFr.kt new file mode 100644 index 00000000..edfee1e0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/HhentaiFr.kt @@ -0,0 +1,64 @@ +package org.koitharu.kotatsu.parsers.site.madara + +import org.jsoup.nodes.Element +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.util.* +import java.util.* + + +@MangaSourceParser("HHENTAIFR", "HhentaiFr", "fr") +internal class HhentaiFr(context: MangaLoaderContext) : + Madara6Parser(context, MangaSource.HHENTAIFR, "hhentai.fr") { + + override val datePattern = "MMMM d, yyyy" + override val sourceLocale: Locale = Locale.FRENCH + + override val isNsfwSource = true + + init { + context.cookieJar.insertCookies( + domain, + "age_gate=32;", + ) + } + + override fun String.asMangaState(): MangaState? = when (this) { + "En Cours", + -> MangaState.ONGOING + + "Terminé", + -> MangaState.FINISHED + + else -> null + } + + override fun parseDetails(manga: Manga, body: Element, chapters: List): Manga { + val root = body.selectFirstOrThrow(".site-content") + val postContent = root.selectFirstOrThrow(".post-content") + val tags = postContent.getElementsContainingOwnText("Genre(s)") + .firstOrNull()?.tableValue() + ?.getElementsByAttributeValueContaining("href", tagPrefix) + ?.mapToSet { a -> a.asMangaTag() } ?: manga.tags + return manga.copy( + rating = postContent.selectFirstOrThrow(".post-rating") + .selectFirstOrThrow(".total_votes").text().toFloat() / 5f, + largeCoverUrl = root.selectFirst(".summary_image") + ?.selectFirst("img[data-src]") + ?.attrAsAbsoluteUrlOrNull("data-src") + .assertNotNull("largeCoverUrl"), + description = root.selectFirstOrThrow(".description-summary") + .firstElementChild()?.html(), + author = postContent.getElementsContainingOwnText("Auteur(s)") + .firstOrNull()?.tableValue()?.text()?.trim(), + altTitle = postContent.getElementsContainingOwnText("Alternatif") + .firstOrNull()?.tableValue()?.text()?.trim(), + state = postContent.getElementsContainingOwnText("Statut") + .firstOrNull()?.tableValue()?.text()?.asMangaState(), + tags = tags, + isNsfw = body.hasClass("adult-content"), + chapters = chapters, + ) + } +}