|
|
|
|
@ -2,7 +2,6 @@ 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.Manga
|
|
|
|
|
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
|
|
|
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
|
|
|
|
@ -12,41 +11,41 @@ import org.koitharu.kotatsu.parsers.util.mapToSet
|
|
|
|
|
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
|
|
|
|
import java.util.*
|
|
|
|
|
|
|
|
|
|
@MangaSourceParser("MANGAS_ORIGINES", "Mangas Origines", "fr")
|
|
|
|
|
//@MangaSourceParser("MANGAS_ORIGINES", "Mangas Origines", "fr") TODO: check
|
|
|
|
|
internal class MangasOriginesParser(context: MangaLoaderContext) :
|
|
|
|
|
Madara6Parser(context, MangaSource.MANGAS_ORIGINES, "mangas-origines.fr") {
|
|
|
|
|
Madara6Parser(context, MangaSource.MANGAS_ORIGINES, "mangas-origines.fr") {
|
|
|
|
|
|
|
|
|
|
override val tagPrefix = "catalogues-genre/"
|
|
|
|
|
override val tagPrefix = "catalogues-genre/"
|
|
|
|
|
|
|
|
|
|
override fun parseDetails(manga: Manga, body: Element, chapters: List<MangaChapter>): Manga {
|
|
|
|
|
val root = body.selectFirstOrThrow(".site-content")
|
|
|
|
|
val postContent = root.selectFirstOrThrow(".post-content")
|
|
|
|
|
val tags = postContent.getElementsContainingOwnText("Genre")
|
|
|
|
|
.firstOrNull()?.tableValue()
|
|
|
|
|
?.getElementsByAttributeValueContaining("href", tagPrefix)
|
|
|
|
|
?.mapToSet { a -> a.asMangaTag() } ?: manga.tags
|
|
|
|
|
return manga.copy(
|
|
|
|
|
largeCoverUrl = root.selectFirst("picture")
|
|
|
|
|
?.selectFirst("img[data-src]")
|
|
|
|
|
?.attrAsAbsoluteUrlOrNull("data-src"),
|
|
|
|
|
description = (root.selectFirst(".detail-content")
|
|
|
|
|
?: root.selectFirstOrThrow(".manga-excerpt")).html(),
|
|
|
|
|
author = postContent.getElementsContainingOwnText("Auteur")
|
|
|
|
|
.firstOrNull()?.tableValue()?.text()?.trim(),
|
|
|
|
|
state = postContent.getElementsContainingOwnText("STATUS")
|
|
|
|
|
.firstOrNull()?.tableValue()?.text()?.asMangaState(),
|
|
|
|
|
tags = tags,
|
|
|
|
|
isNsfw = body.hasClass("adult-content"),
|
|
|
|
|
chapters = chapters,
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
override fun parseDetails(manga: Manga, body: Element, chapters: List<MangaChapter>): Manga {
|
|
|
|
|
val root = body.selectFirstOrThrow(".site-content")
|
|
|
|
|
val postContent = root.selectFirstOrThrow(".post-content")
|
|
|
|
|
val tags = postContent.getElementsContainingOwnText("Genre")
|
|
|
|
|
.firstOrNull()?.tableValue()
|
|
|
|
|
?.getElementsByAttributeValueContaining("href", tagPrefix)
|
|
|
|
|
?.mapToSet { a -> a.asMangaTag() } ?: manga.tags
|
|
|
|
|
return manga.copy(
|
|
|
|
|
largeCoverUrl = root.selectFirst("picture")
|
|
|
|
|
?.selectFirst("img[data-src]")
|
|
|
|
|
?.attrAsAbsoluteUrlOrNull("data-src"),
|
|
|
|
|
description = (root.selectFirst(".detail-content")
|
|
|
|
|
?: root.selectFirstOrThrow(".manga-excerpt")).html(),
|
|
|
|
|
author = postContent.getElementsContainingOwnText("Auteur")
|
|
|
|
|
.firstOrNull()?.tableValue()?.text()?.trim(),
|
|
|
|
|
state = postContent.getElementsContainingOwnText("STATUS")
|
|
|
|
|
.firstOrNull()?.tableValue()?.text()?.asMangaState(),
|
|
|
|
|
tags = tags,
|
|
|
|
|
isNsfw = body.hasClass("adult-content"),
|
|
|
|
|
chapters = chapters,
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun String.asMangaState() = when (trim().lowercase(Locale.FRANCE)) {
|
|
|
|
|
"en cours" -> MangaState.ONGOING
|
|
|
|
|
"abandonné",
|
|
|
|
|
"terminé",
|
|
|
|
|
-> MangaState.FINISHED
|
|
|
|
|
override fun String.asMangaState() = when (trim().lowercase(Locale.FRANCE)) {
|
|
|
|
|
"en cours" -> MangaState.ONGOING
|
|
|
|
|
"abandonné",
|
|
|
|
|
"terminé",
|
|
|
|
|
-> MangaState.FINISHED
|
|
|
|
|
|
|
|
|
|
else -> null
|
|
|
|
|
}
|
|
|
|
|
else -> null
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|