use `SuspendLazy` for fetching cdn host

AwkwardPeak7 2 years ago
parent e992566899
commit bf06ab7492
No known key found for this signature in database

@ -19,6 +19,7 @@ import org.koitharu.kotatsu.parsers.model.MangaState
import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.MangaTag
import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN
import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.model.SortOrder
import org.koitharu.kotatsu.parsers.util.SuspendLazy
import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.domain
import org.koitharu.kotatsu.parsers.util.generateUid import org.koitharu.kotatsu.parsers.util.generateUid
import org.koitharu.kotatsu.parsers.util.json.getStringOrNull import org.koitharu.kotatsu.parsers.util.json.getStringOrNull
@ -75,17 +76,13 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) : PagedMang
return chain.proceed(newRequest) return chain.proceed(newRequest)
} }
private var cdnUrl: String? = null private val cdnHost = SuspendLazy(::getUpdatedCdnHost)
private suspend fun getCdnUrl(): String { private suspend fun getUpdatedCdnHost(): String {
if (cdnUrl.isNullOrEmpty()) { val url = "https://$domain/manga-home"
val url = "https://$domain/manga-home" val response = webClient.httpGet(url).parseHtml()
val response = webClient.httpGet(url).parseHtml() val cdn = response.selectFirst("img.v-thumbnail")?.attr("data-src")
val cdn = response.selectFirst("img.v-thumbnail")?.attr("data-src") return cdn?.toHttpUrlOrNull()?.host ?: "edge.fast4speed.rsvp"
cdnUrl = cdn?.toHttpUrlOrNull()?.host
}
return cdnUrl ?: "edge.fast4speed.rsvp"
} }
override suspend fun getAvailableTags(): Set<MangaTag> { override suspend fun getAvailableTags(): Set<MangaTag> {
@ -212,7 +209,7 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) : PagedMang
coverUrl = when { coverUrl = when {
cover?.startsWith("http") == true -> cover cover?.startsWith("http") == true -> cover
cover == null -> "" cover == null -> ""
else -> "https://${getCdnUrl()}/$cover" else -> "https://${cdnHost.get()}/$cover"
}, },
author = null, author = null,
isNsfw = true, isNsfw = true,
@ -265,7 +262,7 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) : PagedMang
coverUrl = when { coverUrl = when {
cover?.startsWith("http") == true -> cover cover?.startsWith("http") == true -> cover
cover == null -> "" cover == null -> ""
else -> "https://${getCdnUrl()}/$cover" else -> "https://${cdnHost.get()}/$cover"
}, },
author = tags?.filter { it.type == "artist" }?.joinToString { it.name.capitalize() }, author = tags?.filter { it.type == "artist" }?.joinToString { it.name.capitalize() },
isNsfw = true, isNsfw = true,
@ -356,7 +353,7 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) : PagedMang
if (it.startsWith("http")) { if (it.startsWith("http")) {
"$it/" "$it/"
} else { } else {
"https://${getCdnUrl()}/$it/" "https://${cdnHost.get()}/$it/"
} }
} }

Loading…
Cancel
Save