parent
d21bb3ec00
commit
d52dc85288
@ -6,7 +6,7 @@ ext {
|
|||||||
extName = 'Reaper Scans'
|
extName = 'Reaper Scans'
|
||||||
pkgNameSuffix = 'en.reaperscans'
|
pkgNameSuffix = 'en.reaperscans'
|
||||||
extClass = '.ReaperScans'
|
extClass = '.ReaperScans'
|
||||||
extVersionCode = 37
|
extVersionCode = 38
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.extension.en.reaperscans
|
|||||||
|
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.network.POST
|
import eu.kanade.tachiyomi.network.POST
|
||||||
|
import eu.kanade.tachiyomi.network.interceptor.rateLimit
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
@ -15,6 +16,8 @@ import kotlinx.serialization.json.JsonObject
|
|||||||
import kotlinx.serialization.json.add
|
import kotlinx.serialization.json.add
|
||||||
import kotlinx.serialization.json.addJsonObject
|
import kotlinx.serialization.json.addJsonObject
|
||||||
import kotlinx.serialization.json.buildJsonObject
|
import kotlinx.serialization.json.buildJsonObject
|
||||||
|
import kotlinx.serialization.json.contentOrNull
|
||||||
|
import kotlinx.serialization.json.jsonPrimitive
|
||||||
import kotlinx.serialization.json.put
|
import kotlinx.serialization.json.put
|
||||||
import kotlinx.serialization.json.putJsonArray
|
import kotlinx.serialization.json.putJsonArray
|
||||||
import kotlinx.serialization.json.putJsonObject
|
import kotlinx.serialization.json.putJsonObject
|
||||||
@ -29,6 +32,7 @@ import org.jsoup.nodes.Document
|
|||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
class ReaperScans : ParsedHttpSource() {
|
class ReaperScans : ParsedHttpSource() {
|
||||||
|
|
||||||
@ -44,7 +48,9 @@ class ReaperScans : ParsedHttpSource() {
|
|||||||
|
|
||||||
private val json: Json by injectLazy()
|
private val json: Json by injectLazy()
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
|
.rateLimit(1, 2, TimeUnit.SECONDS)
|
||||||
|
.build()
|
||||||
|
|
||||||
// Popular
|
// Popular
|
||||||
override fun popularMangaRequest(page: Int) = GET("$baseUrl/comics?page=$page", headers)
|
override fun popularMangaRequest(page: Int) = GET("$baseUrl/comics?page=$page", headers)
|
||||||
@ -87,13 +93,16 @@ class ReaperScans : ParsedHttpSource() {
|
|||||||
|
|
||||||
val csrfToken = soup.selectFirst("meta[name=csrf-token]")?.attr("content")
|
val csrfToken = soup.selectFirst("meta[name=csrf-token]")?.attr("content")
|
||||||
|
|
||||||
val livewareData = soup.selectFirst("div[wire:initial-data*=frontend.global-search]")
|
val livewareData = soup.selectFirst("div[wire:initial-data*=comics]")
|
||||||
?.attr("wire:initial-data")
|
?.attr("wire:initial-data")
|
||||||
?.parseJson<LiveWireDataDto>()
|
?.parseJson<LiveWireDataDto>()
|
||||||
|
|
||||||
if (csrfToken == null) error("Couldn't find csrf-token")
|
if (csrfToken == null) error("Couldn't find csrf-token")
|
||||||
if (livewareData == null) error("Couldn't find LiveWireData")
|
if (livewareData == null) error("Couldn't find LiveWireData")
|
||||||
|
|
||||||
|
val routeName = livewareData.fingerprint["name"]?.jsonPrimitive?.contentOrNull
|
||||||
|
?: error("Couldn't find routeName")
|
||||||
|
|
||||||
val payload = buildJsonObject {
|
val payload = buildJsonObject {
|
||||||
put("fingerprint", livewareData.fingerprint)
|
put("fingerprint", livewareData.fingerprint)
|
||||||
put("serverMemo", livewareData.serverMemo)
|
put("serverMemo", livewareData.serverMemo)
|
||||||
@ -114,7 +123,7 @@ class ReaperScans : ParsedHttpSource() {
|
|||||||
.add("x-livewire", "true")
|
.add("x-livewire", "true")
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
return POST("$baseUrl/livewire/message/frontend.global-search", headers, payload)
|
return POST("$baseUrl/livewire/message/$routeName", headers, payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun searchMangaSelector(): String = "a[href*=/comics/]"
|
override fun searchMangaSelector(): String = "a[href*=/comics/]"
|
||||||
@ -175,13 +184,16 @@ class ReaperScans : ParsedHttpSource() {
|
|||||||
|
|
||||||
val csrfToken = document.selectFirst("meta[name=csrf-token]")?.attr("content")
|
val csrfToken = document.selectFirst("meta[name=csrf-token]")?.attr("content")
|
||||||
|
|
||||||
val livewareData = document.selectFirst("div[wire:initial-data*=frontend.comic-chapters-list]")
|
val livewareData = document.selectFirst("div[wire:initial-data*=Models\\\\Comic]")
|
||||||
?.attr("wire:initial-data")
|
?.attr("wire:initial-data")
|
||||||
?.parseJson<LiveWireDataDto>()
|
?.parseJson<LiveWireDataDto>()
|
||||||
|
|
||||||
if (csrfToken == null) error("Couldn't find csrf-token")
|
if (csrfToken == null) error("Couldn't find csrf-token")
|
||||||
if (livewareData == null) error("Couldn't find LiveWireData")
|
if (livewareData == null) error("Couldn't find LiveWireData")
|
||||||
|
|
||||||
|
val routeName = livewareData.fingerprint["name"]?.jsonPrimitive?.contentOrNull
|
||||||
|
?: error("Couldn't find routeName")
|
||||||
|
|
||||||
val fingerprint = livewareData.fingerprint
|
val fingerprint = livewareData.fingerprint
|
||||||
var serverMemo = livewareData.serverMemo
|
var serverMemo = livewareData.serverMemo
|
||||||
|
|
||||||
@ -213,7 +225,7 @@ class ReaperScans : ParsedHttpSource() {
|
|||||||
.add("x-livewire", "true")
|
.add("x-livewire", "true")
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val request = POST("$baseUrl/livewire/message/frontend.comic-chapters-list", headers, payload)
|
val request = POST("$baseUrl/livewire/message/$routeName", headers, payload)
|
||||||
|
|
||||||
val responseData = client.newCall(request).execute().parseJson<LiveWireResponseDto>()
|
val responseData = client.newCall(request).execute().parseJson<LiveWireResponseDto>()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user