EternalMangas: Fetch regex from external repo (#8674)

* get regex from repo

* bump
This commit is contained in:
bapeey 2025-04-30 13:40:13 -05:00 committed by Draff
parent 06aaa51240
commit 302ac4b0cb
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 19 additions and 8 deletions

View File

@ -3,7 +3,7 @@ ext {
extClass = '.EternalMangasFactory' extClass = '.EternalMangasFactory'
themePkg = 'mangaesp' themePkg = 'mangaesp'
baseUrl = 'https://eternalmangas.com' baseUrl = 'https://eternalmangas.com'
overrideVersionCode = 3 overrideVersionCode = 4
isNsfw = true isNsfw = true
} }

View File

@ -11,6 +11,9 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.contentOrNull
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.FormBody import okhttp3.FormBody
import okhttp3.Request import okhttp3.Request
import okhttp3.Response import okhttp3.Response
@ -46,7 +49,7 @@ open class EternalMangas(
return GET("$baseUrl/comics", headers) 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( override fun searchMangaParse(
response: Response, response: Response,
@ -54,14 +57,22 @@ open class EternalMangas(
query: String, query: String,
filters: FilterList, filters: FilterList,
): MangasPage { ): MangasPage {
val token = tokenRegex.find(response.body.string())?.groupValues?.get(1) val body = response.body.string()
?: throw Exception("Token not found") val data = client.newCall(GET(dataUrl)).execute().body.string().split("\n")
val headersJson = json.parseToJsonElement(data[1]).jsonObject
val apiHeaders = headersBuilder() val apiHeaders = headersBuilder()
.add("X-Eternal-Key", token) headersJson.forEach { (key, jsonElement) ->
.build() 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) return super.searchMangaParse(apiResponse, page, query, filters)
} }