[Tatakae Scans] Migrate from Madara to Madara v6
parent
f3217bc2f0
commit
3fb37d6672
@ -1,61 +1,50 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara
|
package org.koitharu.kotatsu.parsers.site.madara
|
||||||
|
|
||||||
|
import org.jsoup.nodes.Element
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.exception.ParseException
|
|
||||||
import org.koitharu.kotatsu.parsers.model.Manga
|
import org.koitharu.kotatsu.parsers.model.Manga
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaTag
|
import org.koitharu.kotatsu.parsers.model.MangaState
|
||||||
import org.koitharu.kotatsu.parsers.util.*
|
import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrlOrNull
|
||||||
import java.text.SimpleDateFormat
|
import org.koitharu.kotatsu.parsers.util.mapToSet
|
||||||
|
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@MangaSourceParser("TATAKAE_SCANS", "Tatakae Scans", "pt-BR")
|
@MangaSourceParser("TATAKAE_SCANS", "Tatakae Scans", "pt")
|
||||||
internal class TatakaeScansParser(context: MangaLoaderContext) :
|
internal class TatakaeScansParser(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaSource.TATAKAE_SCANS, "tatakaescan.com") {
|
Madara6Parser(context, MangaSource.TATAKAE_SCANS, "tatakaescan.com") {
|
||||||
|
|
||||||
override suspend fun getDetails(manga: Manga): Manga {
|
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||||
val fullUrl = manga.url.toAbsoluteUrl(getDomain())
|
|
||||||
val doc = context.httpGet(fullUrl).parseHtml()
|
override fun parseDetails(manga: Manga, body: Element, chapters: List<MangaChapter>): Manga {
|
||||||
val root = doc.body().selectFirst("div.profile-manga")
|
val root = body.selectFirstOrThrow(".site-content")
|
||||||
?.selectFirst("div.summary_content")
|
val postContent = root.selectFirstOrThrow(".post-content")
|
||||||
?.selectFirst("div.post-content")
|
val tags = postContent.getElementsContainingOwnText("Gênero")
|
||||||
?: throw ParseException("Root not found", fullUrl)
|
.firstOrNull()?.tableValue()
|
||||||
val root2 = doc.body().selectFirst("div.content-area")
|
?.getElementsByAttributeValueContaining("href", tagPrefix)
|
||||||
?.selectFirst("div.c-page")
|
?.mapToSet { a -> a.asMangaTag() } ?: manga.tags
|
||||||
?: throw ParseException("Root2 not found", fullUrl)
|
|
||||||
val dateFormat = SimpleDateFormat("dd 'de' MMMMM 'de' yyyy", Locale("pt", "BR"))
|
|
||||||
return manga.copy(
|
return manga.copy(
|
||||||
tags = root.selectFirst("div.genres-content")?.select("a")
|
largeCoverUrl = root.selectFirst("picture")
|
||||||
?.mapNotNullToSet { a ->
|
?.selectFirst("img[data-src]")
|
||||||
MangaTag(
|
?.attrAsAbsoluteUrlOrNull("data-src"),
|
||||||
key = a.attr("href").removeSuffix("/").substringAfterLast('/'),
|
description = (root.selectFirst(".detail-content")
|
||||||
title = a.text().toTitleCase(),
|
?: root.selectFirstOrThrow(".manga-excerpt")).html(),
|
||||||
source = source,
|
author = postContent.getElementsContainingOwnText("Autor")
|
||||||
)
|
.firstOrNull()?.tableValue()?.text()?.trim(),
|
||||||
} ?: manga.tags,
|
state = postContent.getElementsContainingOwnText("Status")
|
||||||
description = root.selectFirst("div.post-content")
|
.firstOrNull()?.tableValue()?.text()?.asMangaState(),
|
||||||
?.select("p")
|
tags = tags,
|
||||||
?.joinToString { it.html() },
|
isNsfw = body.hasClass("adult-content"),
|
||||||
chapters = root2.select("li").asReversed().mapChapters { i, li ->
|
chapters = chapters,
|
||||||
val a = li.selectFirst("a")
|
|
||||||
val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing")
|
|
||||||
MangaChapter(
|
|
||||||
id = generateUid(href),
|
|
||||||
name = a.ownText(),
|
|
||||||
number = i + 1,
|
|
||||||
url = href,
|
|
||||||
uploadDate = parseChapterDate(
|
|
||||||
dateFormat,
|
|
||||||
li.selectFirst("span.chapter-release-date")?.text(),
|
|
||||||
),
|
|
||||||
source = source,
|
|
||||||
scanlator = null,
|
|
||||||
branch = null,
|
|
||||||
)
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun String.asMangaState() = when (trim().lowercase(Locale.ROOT)) {
|
||||||
|
"em lançamento" -> MangaState.ONGOING
|
||||||
|
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue