From 3c91f2a834d4fe43e89a50a6737c525d14fd0c40 Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Sat, 10 May 2025 09:22:04 -0500 Subject: [PATCH] EternalMangas: Fix browse (#8780) * fix * oops * use destructor --- src/all/eternalmangas/build.gradle | 2 +- .../all/eternalmangas/EternalMangas.kt | 38 ++++++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/all/eternalmangas/build.gradle b/src/all/eternalmangas/build.gradle index 76f8c8717..5a0eabee6 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 = 4 + overrideVersionCode = 5 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 4da11b1a1..518fddcb7 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 @@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.contentOrNull import kotlinx.serialization.json.jsonObject @@ -57,23 +58,32 @@ open class EternalMangas( query: String, filters: FilterList, ): MangasPage { - 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() - 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("-") + val (apiComicsUrl, jsonHeaders, useApi, scriptSelector, comicsRegex) = client.newCall(GET(dataUrl)).execute().body.string().split("\n") + val apiSearch = useApi == "1" + comicsList = if (apiSearch) { + val headersJson = json.parseToJsonElement(jsonHeaders).jsonObject + val apiHeaders = headersBuilder() + headersJson.forEach { (key, jsonElement) -> + var value = jsonElement.jsonPrimitive.contentOrNull.orEmpty() + if (value.startsWith("1-")) { + val match = value.substringAfter("-").toRegex().find(response.body.string()) + value = match?.groupValues?.get(1).orEmpty() + } else { + value = value.substringAfter("-") + } + apiHeaders.add(key, value) } - apiHeaders.add(key, value) + val apiResponse = client.newCall(GET(apiComicsUrl, apiHeaders.build())).execute() + json.decodeFromString>(apiResponse.body.string()).toMutableList() + } else { + val script = response.asJsoup().select(scriptSelector).joinToString { it.data() } + val jsonString = comicsRegex.toRegex().find(script)?.groupValues?.get(1) + ?: throw Exception(intl["comics_list_error"]) + val unescapedJson = jsonString.unescape() + json.decodeFromString>(unescapedJson).toMutableList() } - val apiResponse = client.newCall(GET(data[0], apiHeaders.build())).execute() - return super.searchMangaParse(apiResponse, page, query, filters) + return parseComicsList(page, query, filters) } override fun mangaDetailsParse(response: Response) = SManga.create().apply {