From d52dc85288d9afe8b676079dfb0e625ab8707513 Mon Sep 17 00:00:00 2001 From: Henrik <22085664+henrik9999@users.noreply.github.com> Date: Tue, 18 Oct 2022 21:21:37 +0200 Subject: [PATCH] fix reaperscans (#13907) * fix reaperscans * get routename --- src/en/reaperscans/build.gradle | 2 +- .../extension/en/reaperscans/ReaperScans.kt | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/en/reaperscans/build.gradle b/src/en/reaperscans/build.gradle index bc16be118..752009cb5 100644 --- a/src/en/reaperscans/build.gradle +++ b/src/en/reaperscans/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Reaper Scans' pkgNameSuffix = 'en.reaperscans' extClass = '.ReaperScans' - extVersionCode = 37 + extVersionCode = 38 } apply from: "$rootDir/common.gradle" diff --git a/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScans.kt b/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScans.kt index 053f6f249..a3a637e11 100644 --- a/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScans.kt +++ b/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScans.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.extension.en.reaperscans import eu.kanade.tachiyomi.network.GET 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.MangasPage 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.addJsonObject import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.contentOrNull +import kotlinx.serialization.json.jsonPrimitive import kotlinx.serialization.json.put import kotlinx.serialization.json.putJsonArray import kotlinx.serialization.json.putJsonObject @@ -29,6 +32,7 @@ import org.jsoup.nodes.Document import org.jsoup.nodes.Element import uy.kohesive.injekt.injectLazy import java.util.Calendar +import java.util.concurrent.TimeUnit class ReaperScans : ParsedHttpSource() { @@ -44,7 +48,9 @@ class ReaperScans : ParsedHttpSource() { 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 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 livewareData = soup.selectFirst("div[wire:initial-data*=frontend.global-search]") + val livewareData = soup.selectFirst("div[wire:initial-data*=comics]") ?.attr("wire:initial-data") ?.parseJson() if (csrfToken == null) error("Couldn't find csrf-token") if (livewareData == null) error("Couldn't find LiveWireData") + val routeName = livewareData.fingerprint["name"]?.jsonPrimitive?.contentOrNull + ?: error("Couldn't find routeName") + val payload = buildJsonObject { put("fingerprint", livewareData.fingerprint) put("serverMemo", livewareData.serverMemo) @@ -114,7 +123,7 @@ class ReaperScans : ParsedHttpSource() { .add("x-livewire", "true") .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/]" @@ -175,13 +184,16 @@ class ReaperScans : ParsedHttpSource() { 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") ?.parseJson() if (csrfToken == null) error("Couldn't find csrf-token") if (livewareData == null) error("Couldn't find LiveWireData") + val routeName = livewareData.fingerprint["name"]?.jsonPrimitive?.contentOrNull + ?: error("Couldn't find routeName") + val fingerprint = livewareData.fingerprint var serverMemo = livewareData.serverMemo @@ -213,7 +225,7 @@ class ReaperScans : ParsedHttpSource() { .add("x-livewire", "true") .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()