Tachiyomi-Extensions/multisrc/overrides/mangathemesia/realmscans/src/RealmScans.kt

52 lines
1.6 KiB
Kotlin
Raw Normal View History

2021-11-14 09:42:17 +00:00
package eu.kanade.tachiyomi.extension.en.realmscans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.Page
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.OkHttpClient
import org.jsoup.nodes.Document
import java.lang.IllegalArgumentException
import java.util.concurrent.TimeUnit
class RealmScans : MangaThemesia(
"Realm Scans",
"https://realmscans.com",
"en",
"/series"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 1, TimeUnit.SECONDS)
.build()
2021-11-14 09:42:17 +00:00
override fun pageListParse(document: Document): List<Page> {
val htmlPages = document.select(pageSelector)
.mapIndexed { i, img ->
val url = img.attr("data-wpfc-original-src")
.ifEmpty { img.attr("abs:src") }
Page(i, "", url)
}
countViews(document)
// Some sites also loads pages via javascript
if (htmlPages.isNotEmpty()) { return htmlPages }
val docString = document.toString()
val imageListJson = JSON_IMAGE_LIST_REGEX.find(docString)?.destructured?.toList()?.get(0).orEmpty()
val imageList = try {
json.parseToJsonElement(imageListJson).jsonArray
} catch (_: IllegalArgumentException) {
emptyList()
}
val scriptPages = imageList.mapIndexed { i, jsonEl ->
Page(i, "", jsonEl.jsonPrimitive.content)
}
return scriptPages
}
}