[HentaiVN18] Refactor + Fixes

Draken 1 year ago
parent 4adf485208
commit faf2f2a312

@ -24,9 +24,10 @@ internal class Hentai18VN(context: MangaLoaderContext) : PagedMangaParser(contex
keys.add(userAgentKey) keys.add(userAgentKey)
} }
override fun getRequestHeaders(): Headers = Headers.Builder() // Testing...
.add("X-Requested-With", "XMLHttpRequest") // override fun getRequestHeaders(): Headers = Headers.Builder()
.build() // .add("X-Requested-With", "XMLHttpRequest")
// .build()
override val filterCapabilities: MangaListFilterCapabilities override val filterCapabilities: MangaListFilterCapabilities
get() = MangaListFilterCapabilities( get() = MangaListFilterCapabilities(
@ -49,7 +50,6 @@ internal class Hentai18VN(context: MangaLoaderContext) : PagedMangaParser(contex
} }
val keyword = filter.query val keyword = filter.query
// val body = JSONObject().apply { put("keyword", filter.query) }
val url = "http://$domain/search/html/1" val url = "http://$domain/search/html/1"
val headers = Headers.Builder().add("X-Requested-With", "XMLHttpRequest").build() val headers = Headers.Builder().add("X-Requested-With", "XMLHttpRequest").build()
val response = webClient.httpPost(url.toHttpUrl(), payload = "keyword=$keyword", headers).parseHtml() val response = webClient.httpPost(url.toHttpUrl(), payload = "keyword=$keyword", headers).parseHtml()
@ -120,8 +120,8 @@ internal class Hentai18VN(context: MangaLoaderContext) : PagedMangaParser(contex
private fun parseMangaList(doc: Document): List<Manga> { private fun parseMangaList(doc: Document): List<Manga> {
return doc.select("div.visual").map { div -> return doc.select("div.visual").map { div ->
val a = div.selectFirst("div.main_text h3.title a")!! val a = div.selectFirst("div.main_text h3.title a")
val img = div.selectFirst("div.hentai-cover img")!! val img = div.selectFirst("div.hentai-cover img")
val mangaUrl = a.attr("href") val mangaUrl = a.attr("href")
Manga( Manga(
id = generateUid(mangaUrl), id = generateUid(mangaUrl),
@ -152,13 +152,12 @@ internal class Hentai18VN(context: MangaLoaderContext) : PagedMangaParser(contex
) )
}.toSet() }.toSet()
val chapters = doc.select("ul#chapter-list li.citem").map { li -> val chapters = doc.select("ul#chapter-list li.citem").mapChapters(reversed=true) { i, li ->
val a = li.selectFirst("a")!! val a = li.selectFirst("a")
val number = a.text().substringAfter("Chap ").toFloatOrNull() ?: 0f
MangaChapter( MangaChapter(
id = generateUid(a.attr("href")), id = generateUid(a.attr("href")),
name = a.text(), name = a.text(),
number = number, number = i + 1f,
url = a.attr("href").removePrefix("https://$domain"), url = a.attr("href").removePrefix("https://$domain"),
uploadDate = parseChapterDate(li.selectFirst(".time")?.text()), uploadDate = parseChapterDate(li.selectFirst(".time")?.text()),
source = source, source = source,
@ -178,7 +177,7 @@ internal class Hentai18VN(context: MangaLoaderContext) : PagedMangaParser(contex
return manga.copy( return manga.copy(
tags = tags, tags = tags,
author = author?.takeUnless { it == "Đang cập nhật" }, author = author,
altTitle = altTitle, altTitle = altTitle,
state = state, state = state,
chapters = chapters, chapters = chapters,
@ -216,8 +215,8 @@ internal class Hentai18VN(context: MangaLoaderContext) : PagedMangaParser(contex
doc.select("ul.list-tags li").mapNotNull { li -> doc.select("ul.list-tags li").mapNotNull { li ->
val a = li.selectFirst("a") ?: return@mapNotNull null val a = li.selectFirst("a") ?: return@mapNotNull null
val title = a.selectFirst("h3.tag-name")?.text()?.trim() ?: return@mapNotNull null val title = a.selectFirst("h3.tag-name")?.text()?.trim() ?: return@mapNotNull null
val url = a.attr("href") val key = a.attr("href").substringAfterLast("/")
MangaTag( title = title, key = url.substringAfterLast("/"), source = source ) MangaTag( title = title, key = key, source = source )
} }
}.toSet() }.toSet()
} }

@ -38,7 +38,7 @@ internal class TruyenHentaiVN(context: MangaLoaderContext) : PagedMangaParser(co
when { when {
!filter.tags.isNullOrEmpty() -> { !filter.tags.isNullOrEmpty() -> {
val tag = filter.tags.first() val tag = filter.tags.first()
append(tag.key) append(tag.key) // Testing...
if (page > 1) { if (page > 1) {
append("?page=") append("?page=")
append(page) append(page)
@ -158,16 +158,10 @@ internal class TruyenHentaiVN(context: MangaLoaderContext) : PagedMangaParser(co
private suspend fun getAvailableTags(): Set<MangaTag> { private suspend fun getAvailableTags(): Set<MangaTag> {
val doc = webClient.httpGet("https://$domain").parseHtml() val doc = webClient.httpGet("https://$domain").parseHtml()
return doc.select("a.py-2[href^=/the-loai-]").mapNotNull { element -> return doc.select("a.py-2[href^=/the-loai-]").mapNotNull { a ->
val key = element.attr("href") val key = a.attr("href")
val title = element.text() val title = a.text()
if (key.isNotEmpty() && title.isNotEmpty()) { MangaTag( key = key, title = title, source = source )
MangaTag(
key = key,
title = title,
source = source
)
} else null
}.toSet() }.toSet()
} }
} }
Loading…
Cancel
Save