[IsekaiScan] Fix chapters parsing

pull/168/head
Koitharu 3 years ago
parent cc418570d5
commit a3ffecc00f
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -1,6 +1,7 @@
package org.koitharu.kotatsu.parsers.site.madara package org.koitharu.kotatsu.parsers.site.madara
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
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.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
@ -18,6 +19,9 @@ internal class IsekaiScanEuParser(context: MangaLoaderContext) :
override val datePattern = "MM/dd/yyyy" override val datePattern = "MM/dd/yyyy"
override suspend fun getChapters(manga: Manga, doc: Document): List<MangaChapter> { override suspend fun getChapters(manga: Manga, doc: Document): List<MangaChapter> {
doc.selectFirst("ul.version-chap")?.let {
return parseChapters(it)
}
val mangaId = doc.body().requireElementById("manga-chapters-holder").attr("data-id") val mangaId = doc.body().requireElementById("manga-chapters-holder").attr("data-id")
val ul = webClient.httpPost( val ul = webClient.httpPost(
"https://${domain}/wp-admin/admin-ajax.php", "https://${domain}/wp-admin/admin-ajax.php",
@ -26,24 +30,7 @@ internal class IsekaiScanEuParser(context: MangaLoaderContext) :
"manga" to mangaId, "manga" to mangaId,
), ),
).parseHtml().body().selectFirstOrThrow("ul") ).parseHtml().body().selectFirstOrThrow("ul")
val dateFormat = SimpleDateFormat(datePattern, Locale.US) return parseChapters(ul)
return ul.select("li").asReversed().mapChapters { i, li ->
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 i")?.text(),
),
source = source,
scanlator = null,
branch = null,
)
}
} }
override suspend fun getTags(): Set<MangaTag> { override suspend fun getTags(): Set<MangaTag> {
@ -70,4 +57,25 @@ internal class IsekaiScanEuParser(context: MangaLoaderContext) :
) )
} }
} }
private fun parseChapters(ul: Element): List<MangaChapter> {
val dateFormat = SimpleDateFormat(datePattern, Locale.US)
return ul.select("li").mapChapters { i, li ->
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 i")?.text(),
),
source = source,
scanlator = null,
branch = null,
)
}
}
} }

Loading…
Cancel
Save