[Tatakae Scans] New source
This commit is contained in:
@@ -18,6 +18,7 @@ abstract class Madara5Parser @InternalParsersApi constructor(
|
||||
domain: String,
|
||||
) : PagedMangaParser(source, pageSize = 22) {
|
||||
|
||||
protected open val datePattern = "MMMM dd, HH:mm"
|
||||
protected open val tagPrefix = "/mangas/"
|
||||
protected open val nsfwTags = arraySetOf("yaoi", "yuri", "mature")
|
||||
|
||||
@@ -125,7 +126,7 @@ abstract class Madara5Parser @InternalParsersApi constructor(
|
||||
}
|
||||
|
||||
private suspend fun loadChapters(mangaId: Long): List<MangaChapter> {
|
||||
val dateFormat = SimpleDateFormat("MMMM dd, HH:mm", sourceLocale ?: Locale.US)
|
||||
val dateFormat = SimpleDateFormat(datePattern, sourceLocale ?: Locale.US)
|
||||
val doc = context.httpGet("https://${getDomain()}/ajax-list-chapter?mangaID=$mangaId").parseHtml()
|
||||
return doc.select("li.wp-manga-chapter").asReversed().mapChapters { i, li ->
|
||||
val a = li.selectFirstOrThrow("a")
|
||||
|
||||
@@ -15,6 +15,8 @@ internal abstract class Madara6Parser(
|
||||
domain: String,
|
||||
) : MadaraParser(context, source, domain) {
|
||||
|
||||
override val datePattern: String = "dd MMMM yyyy"
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
return coroutineScope {
|
||||
val chapters = async { loadChapters(manga.url) }
|
||||
@@ -44,7 +46,7 @@ internal abstract class Madara6Parser(
|
||||
|
||||
protected open suspend fun loadChapters(mangaUrl: String): List<MangaChapter> {
|
||||
val url = mangaUrl.toAbsoluteUrl(getDomain()).removeSuffix('/') + "/ajax/chapters/"
|
||||
val dateFormat = SimpleDateFormat("dd MMMM yyyy", sourceLocale ?: Locale.ROOT)
|
||||
val dateFormat = SimpleDateFormat(datePattern, sourceLocale ?: Locale.ROOT)
|
||||
val doc = context.httpPost(url, emptyMap()).parseHtml()
|
||||
return doc.select("li.wp-manga-chapter").asReversed().mapChapters { i, li ->
|
||||
val a = li.selectFirstOrThrow("a")
|
||||
|
||||
@@ -27,6 +27,7 @@ internal abstract class MadaraParser(
|
||||
|
||||
protected open val tagPrefix = "manga-genre/"
|
||||
protected open val isNsfwSource = false
|
||||
protected open val datePattern = "MMMM dd, yyyy"
|
||||
|
||||
init {
|
||||
paginator.firstPage = 0
|
||||
@@ -125,7 +126,7 @@ internal abstract class MadaraParser(
|
||||
val root2 = doc.body().selectFirst("div.content-area")
|
||||
?.selectFirst("div.c-page")
|
||||
?: throw ParseException("Root2 not found", fullUrl)
|
||||
val dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US)
|
||||
val dateFormat = SimpleDateFormat(datePattern, Locale.US)
|
||||
return manga.copy(
|
||||
tags = root.selectFirst("div.genres-content")?.select("a")
|
||||
?.mapNotNullToSet { a ->
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
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
|
||||
import org.koitharu.kotatsu.parsers.model.MangaState
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrlOrNull
|
||||
import org.koitharu.kotatsu.parsers.util.mapToSet
|
||||
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
||||
import java.util.*
|
||||
|
||||
@MangaSourceParser("TATAKAE_SCANS", "Tatakae Scans", "pt")
|
||||
internal class TatakaeScansParser(context: MangaLoaderContext) :
|
||||
Madara6Parser(context, MangaSource.TATAKAE_SCANS, "tatakaescan.com") {
|
||||
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
|
||||
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("Gênero")
|
||||
.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("Autor")
|
||||
.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.ROOT)) {
|
||||
"em lançamento" -> MangaState.ONGOING
|
||||
|
||||
else -> null
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user