From ce3dd41b2597c93e064d11aca2039efeb3b42dd6 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Mon, 3 Aug 2020 03:42:45 -0400 Subject: [PATCH] Kumanga - crash fix (#3994) --- src/es/kumanga/build.gradle | 2 +- .../tachiyomi/extension/es/kumanga/Kumanga.kt | 23 +++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/es/kumanga/build.gradle b/src/es/kumanga/build.gradle index 8bf8a902b..b2e200c8a 100755 --- a/src/es/kumanga/build.gradle +++ b/src/es/kumanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Kumanga' pkgNameSuffix = 'es.kumanga' extClass = '.Kumanga' - extVersionCode = 2 + extVersionCode = 3 libVersion = '1.2' } diff --git a/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt b/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt index 4f240f6ac..09e314706 100755 --- a/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt +++ b/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt @@ -16,6 +16,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.util.asJsoup +import java.io.IOException import java.text.SimpleDateFormat import java.util.Locale import kotlin.math.roundToInt @@ -31,6 +32,17 @@ class Kumanga : HttpSource() { override val client: OkHttpClient = network.cloudflareClient .newBuilder() .followRedirects(true) + .addInterceptor { chain -> + val originalRequest = chain.request() + if (originalRequest.url().toString().endsWith("token=")) { + getKumangaToken() + val url = originalRequest.url().toString() + kumangaToken + val newRequest = originalRequest.newBuilder().url(url).build() + chain.proceed(newRequest) + } else { + chain.proceed(originalRequest) + } + } .build() override val name = "Kumanga" @@ -45,12 +57,11 @@ class Kumanga : HttpSource() { .add("Referer", baseUrl) .build() - private val kumangaToken = getKumangaToken() + private var kumangaToken = "" - private fun getKumangaToken(): String { - val document = client.newCall(GET("$baseUrl/mangalist?&page=1", headers)).execute().asJsoup() - - return document.select("#kmtkn").attr("value").orEmpty() + private fun getKumangaToken() { + kumangaToken = client.newCall(GET("$baseUrl/mangalist?&page=1", headers)).execute().asJsoup() + .select("div.input-group [value]").firstOrNull()?.attr("value") ?: throw IOException("No fue posible obtener la lista de mangas") } private fun getMangaCover(mangaId: String) = "https://static.kumanga.com/manga_covers/$mangaId.jpg?w=201" @@ -76,7 +87,6 @@ class Kumanga : HttpSource() { private fun parseGenresFromJson(json: JsonElement) = json["name"].string override fun popularMangaRequest(page: Int): Request { - if (kumangaToken.isEmpty()) throw Exception("No fue posible obtener la lista de mangas") return POST("$baseUrl/backend/ajax/searchengine.php?page=$page&perPage=10&keywords=&retrieveCategories=true&retrieveAuthors=false&contentType=manga&token=$kumangaToken", headers) } @@ -172,7 +182,6 @@ class Kumanga : HttpSource() { override fun imageUrlParse(response: Response) = throw Exception("Not Used") override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - if (kumangaToken.isEmpty()) throw Exception("No fue posible obtener la lista de mangas") val url = HttpUrl.parse("$baseUrl/backend/ajax/searchengine.php?page=$page&perPage=10&keywords=$query&retrieveCategories=true&retrieveAuthors=false&contentType=manga&token=$kumangaToken")!!.newBuilder() filters.forEach { filter ->