MangaGg: Fix chapter list (#2056)

master
Naga 9 months ago committed by GitHub
parent b58cf32b7a
commit f5436977a9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,13 +1,69 @@
package org.koitharu.kotatsu.parsers.site.madara.en package org.koitharu.kotatsu.parsers.site.madara.en
import org.jsoup.nodes.Document
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.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl
import org.koitharu.kotatsu.parsers.util.generateUid
import org.koitharu.kotatsu.parsers.util.parseHtml
import org.koitharu.kotatsu.parsers.util.removeSuffix
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
import java.text.SimpleDateFormat
@MangaSourceParser("MANGAGG", "MangaGg", "en") @MangaSourceParser("MANGAGG", "MangaGg", "en")
internal class Mangagg(context: MangaLoaderContext) : internal class Mangagg(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGAGG, "mangagg.com") { MadaraParser(context, MangaParserSource.MANGAGG, "mangagg.com") {
override val tagPrefix = "genre/" override val tagPrefix = "genre/"
override val datePattern = "MM/dd/yyyy" override val datePattern = "MM/dd/yyyy"
override suspend fun loadChapters(mangaUrl: String, document: Document): List<MangaChapter> {
val chapters = mutableListOf<MangaChapter>()
var page = 1
while (true) {
val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/?t=$page"
val doc = webClient.httpPost(url, emptyMap()).parseHtml()
val pageChapters = parseChapterPage(doc)
if (pageChapters.isEmpty()) {
break
}
chapters.addAll(pageChapters)
page++
}
return chapters.reversed().mapIndexed { index, chapter ->
chapter.copy(number = index + 1f)
}
}
private fun parseChapterPage(doc: Document): List<MangaChapter> {
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
return doc.select(selectChapter).map { li ->
val a = li.selectFirstOrThrow("a")
val href = a.attrAsRelativeUrl("href")
val link = href + stylePage
val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectDate)?.text()
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
title = name,
number = 0f,
volume = 0,
url = link,
uploadDate = parseChapterDate(
dateFormat,
dateText,
),
source = source,
scanlator = null,
branch = null,
)
}
}
} }

Loading…
Cancel
Save