From 302ac4b0cb185266d4b4038f463a022969089935 Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Wed, 30 Apr 2025 13:40:13 -0500 Subject: [PATCH] EternalMangas: Fetch regex from external repo (#8674) * get regex from repo * bump --- src/all/eternalmangas/build.gradle | 2 +- .../all/eternalmangas/EternalMangas.kt | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/all/eternalmangas/build.gradle b/src/all/eternalmangas/build.gradle index 5f0db2266..76f8c8717 100644 --- a/src/all/eternalmangas/build.gradle +++ b/src/all/eternalmangas/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.EternalMangasFactory' themePkg = 'mangaesp' baseUrl = 'https://eternalmangas.com' - overrideVersionCode = 3 + overrideVersionCode = 4 isNsfw = true } diff --git a/src/all/eternalmangas/src/eu/kanade/tachiyomi/extension/all/eternalmangas/EternalMangas.kt b/src/all/eternalmangas/src/eu/kanade/tachiyomi/extension/all/eternalmangas/EternalMangas.kt index a3a8b5aa6..4da11b1a1 100644 --- a/src/all/eternalmangas/src/eu/kanade/tachiyomi/extension/all/eternalmangas/EternalMangas.kt +++ b/src/all/eternalmangas/src/eu/kanade/tachiyomi/extension/all/eternalmangas/EternalMangas.kt @@ -11,6 +11,9 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.contentOrNull +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive import okhttp3.FormBody import okhttp3.Request import okhttp3.Response @@ -46,7 +49,7 @@ open class EternalMangas( return GET("$baseUrl/comics", headers) } - private val tokenRegex = """self\.__next_f\.push\(.*token\\":\\"(.*?)\\"\}""".toRegex() + private val dataUrl = "https://raw.githubusercontent.com/bapeey/extensions-tools/refs/heads/main/keiyoushi/eternalmangas/values.txt" override fun searchMangaParse( response: Response, @@ -54,14 +57,22 @@ open class EternalMangas( query: String, filters: FilterList, ): MangasPage { - val token = tokenRegex.find(response.body.string())?.groupValues?.get(1) - ?: throw Exception("Token not found") - + val body = response.body.string() + val data = client.newCall(GET(dataUrl)).execute().body.string().split("\n") + val headersJson = json.parseToJsonElement(data[1]).jsonObject val apiHeaders = headersBuilder() - .add("X-Eternal-Key", token) - .build() + headersJson.forEach { (key, jsonElement) -> + var value = jsonElement.jsonPrimitive.contentOrNull.orEmpty() + if (value.startsWith("1-")) { + val match = value.substringAfter("-").toRegex().find(body) + value = match?.groupValues?.get(1).orEmpty() + } else { + value = value.substringAfter("-") + } + apiHeaders.add(key, value) + } - val apiResponse = client.newCall(GET("$apiBaseUrl$apiPath/comics-actu", apiHeaders)).execute() + val apiResponse = client.newCall(GET(data[0], apiHeaders.build())).execute() return super.searchMangaParse(apiResponse, page, query, filters) }