[NudeMoon] Fix pages loading

master
Koitharu 2 years ago
parent 014ea5ef49
commit e338237e2a
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -54,7 +54,13 @@ internal class NudeMoonParser(
): List<Manga> { ): List<Manga> {
val domain = domain val domain = domain
val url = when { val url = when {
!query.isNullOrEmpty() -> "https://$domain/search?stext=${query.urlEncoded()}&rowstart=$offset" !query.isNullOrEmpty() -> {
if (!isAuthorized) {
throw AuthRequiredException(source)
}
"https://$domain/search?stext=${query.urlEncoded()}&rowstart=$offset"
}
!tags.isNullOrEmpty() -> tags.joinToString( !tags.isNullOrEmpty() -> tags.joinToString(
separator = "_", separator = "_",
prefix = "https://$domain/tags/", prefix = "https://$domain/tags/",
@ -96,7 +102,7 @@ internal class NudeMoonParser(
override suspend fun getDetails(manga: Manga): Manga { override suspend fun getDetails(manga: Manga): Manga {
val body = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml().body() val body = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml().body()
val root = body.selectFirstOrThrow("table.news_pic2") val root = body.selectFirstOrThrow("table.news_pic2")
val dateFormat = SimpleDateFormat("dd/MM/yyyy") val dateFormat = SimpleDateFormat("dd MMMM yyyy", sourceLocale)
return manga.copy( return manga.copy(
largeCoverUrl = body.selectFirstOrThrow("img[data-src]").attrAsAbsoluteUrl("data-src"), largeCoverUrl = body.selectFirstOrThrow("img[data-src]").attrAsAbsoluteUrl("data-src"),
description = root.selectFirst(".description")?.html() ?: manga.description, description = root.selectFirst(".description")?.html() ?: manga.description,
@ -114,12 +120,14 @@ internal class NudeMoonParser(
id = manga.id, id = manga.id,
url = manga.url, url = manga.url,
source = source, source = source,
number = 1, number = 0f,
volume = 0,
name = manga.title, name = manga.title,
scanlator = root.getElementsByAttributeValueContaining("href", "/perevod/").firstOrNull() scanlator = root.getElementsByAttributeValueContaining("href", "/perevod/").firstOrNull()
?.textOrNull(), ?.textOrNull(),
uploadDate = dateFormat.tryParse( uploadDate = dateFormat.tryParse(
root.getElementsMatchingOwnText("\\d{1,2}/\\d{2}/\\d{4}").firstOrNull()?.text(), root.getElementsByAttributeValueEnding("src", "ico/time.png").firstOrNull()
?.nextElementSibling()?.text(),
), ),
branch = null, branch = null,
), ),
@ -142,10 +150,6 @@ internal class NudeMoonParser(
}.toList() }.toList()
} }
override suspend fun getPageUrl(page: MangaPage): String {
return page.url.toAbsoluteUrl("img.$domain")
}
override suspend fun getAvailableTags(): Set<MangaTag> { override suspend fun getAvailableTags(): Set<MangaTag> {
val domain = domain val domain = domain
val doc = webClient.httpGet("https://$domain/tags").parseHtml() val doc = webClient.httpGet("https://$domain/tags").parseHtml()

@ -91,13 +91,15 @@ fun concatUrl(host: String, path: String): String {
} }
fun DateFormat.tryParse(str: String?): Long = if (str.isNullOrEmpty()) { fun DateFormat.tryParse(str: String?): Long = if (str.isNullOrEmpty()) {
assert(false) { "Date string is null or empty" } // assert(false) { "Date string is null or empty" }
0L 0L
} else { } else {
runCatching { runCatching {
parse(str)?.time ?: 0L parse(str)?.time ?: 0L
}.onFailure { }.onFailure {
assert(false) { "Cannot parse date $str: ${it.message}" } if (javaClass.desiredAssertionStatus()) {
throw AssertionError("Cannot parse date $str", it)
}
}.getOrDefault(0L) }.getOrDefault(0L)
} }

Loading…
Cancel
Save