[NhentaiWorld] Fixes

Koitharu 1 year ago
parent 63dc67b6fd
commit e83636edc0
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -49,32 +49,27 @@ internal class NhentaiWorld(context: MangaLoaderContext) :
) )
override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List<Manga> { override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List<Manga> {
val url = buildString { val urlBuilder = urlBuilder()
append("/genre/") .addPathSegment("genre")
if (filter.tags.isEmpty()) { filter.tags.oneOrThrowIfMany()?.also {
append("all") urlBuilder.addPathSegment(it.key)
} else { } ?: urlBuilder.addPathSegment("all")
append(filter.tags.first().key) urlBuilder.addQueryParameter(
} "sort",
append("?sort=")
append(
when (order) { when (order) {
SortOrder.UPDATED -> "recent-update" SortOrder.UPDATED -> "recent-update"
SortOrder.POPULARITY -> "view" SortOrder.POPULARITY -> "view"
else -> "recent-update" else -> "recent-update"
}, },
) )
filter.query?.nullIfEmpty()?.let {
if (!filter.query.isNullOrEmpty()) { urlBuilder.addQueryParameter("search", it)
append("&search=")
append(filter.query.urlEncoded())
} }
if (filter.states.isNotEmpty()) { filter.states.oneOrThrowIfMany()?.let {
append("&status=") urlBuilder.addQueryParameter(
append( "status",
when (filter.states.first()) { when (it) {
MangaState.ONGOING -> "progress" MangaState.ONGOING -> "progress"
MangaState.FINISHED -> "completed" MangaState.FINISHED -> "completed"
else -> "" else -> ""
@ -82,11 +77,9 @@ internal class NhentaiWorld(context: MangaLoaderContext) :
) )
} }
append("&page=") urlBuilder.addQueryParameter("page", page.toString())
append(page)
}
val doc = webClient.httpGet(url.toAbsoluteUrl(domain)).parseHtml() val doc = webClient.httpGet(urlBuilder.build()).parseHtml()
return doc.select("div.relative.mb-1.h-full.max-h-\\[375px\\]").map { div -> return doc.select("div.relative.mb-1.h-full.max-h-\\[375px\\]").map { div ->
val img = div.selectFirst("img.hover\\:scale-105.transition-all.w-full.h-full") val img = div.selectFirst("img.hover\\:scale-105.transition-all.w-full.h-full")
val a = div.selectFirstOrThrow("a") val a = div.selectFirstOrThrow("a")
@ -96,7 +89,7 @@ internal class NhentaiWorld(context: MangaLoaderContext) :
val href = a.attrAsRelativeUrl("href") val href = a.attrAsRelativeUrl("href")
Manga( Manga(
id = generateUid(url), id = generateUid(href),
title = title, title = title,
altTitles = emptySet(), altTitles = emptySet(),
url = href, url = href,
@ -211,7 +204,12 @@ internal class NhentaiWorld(context: MangaLoaderContext) :
} }
private suspend fun fetchTags(): Set<MangaTag> { private suspend fun fetchTags(): Set<MangaTag> {
val doc = webClient.httpGet("$domain/genre/all").parseHtml() val doc = webClient.httpGet(
urlBuilder()
.addPathSegment("genre")
.addPathSegment("all")
.build(),
).parseHtml()
val tagItems = doc.select("div.genre-list a") val tagItems = doc.select("div.genre-list a")
return tagItems.mapNotNullToSet { item -> return tagItems.mapNotNullToSet { item ->
val title = item.text().toTitleCase(sourceLocale) val title = item.text().toTitleCase(sourceLocale)

Loading…
Cancel
Save