From ccd9dd989c267b8bbf0df5b3dc53340ace78e50a Mon Sep 17 00:00:00 2001 From: Vetle Ledaal Date: Mon, 22 Aug 2022 17:31:09 +0200 Subject: [PATCH] MangaHub: update API key again (#13129) --- .../tachiyomi/multisrc/mangahub/MangaHub.kt | 31 ++++++++++++++++--- .../multisrc/mangahub/MangaHubGenerator.kt | 2 +- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt index 5a0f92707..a28f5a308 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHub.kt @@ -16,10 +16,14 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.buildJsonObject import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlinx.serialization.json.putJsonObject import okhttp3.Cookie import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.Request @@ -79,12 +83,29 @@ abstract class MangaHub( private fun refreshApiKey(chapter: SChapter) { val now = Calendar.getInstance().time.time - val url = "$baseUrl${chapter.url}".toHttpUrl() - val number = chapter.url - .substringAfter("chapter-") - .substringBefore("/") - val recently = "{\"${now - (0..120).random()}\":{\"mangaID\":${(1..42000).random()},\"number\":$number}}" + val slug = "$baseUrl${chapter.url}" + .toHttpUrlOrNull() + ?.pathSegments + ?.get(1) + + val url = if (slug != null) { + "$baseUrl/manga/$slug".toHttpUrl() + } else { + baseUrl.toHttpUrl() + } + + // Clear key cookie + val cookie = Cookie.parse(url, "mhub_access=; Max-Age=8640000; Path=/; Expires=Mon, 1 Jan 2080 00:00:00 GMT")!! + client.cookieJar.saveFromResponse(url, listOf(cookie)) + + // Set required cookie (for cache busting?) + val recently = buildJsonObject { + putJsonObject((now - (0..3600).random()).toString()) { + put("mangaID", (1..42_000).random()) + put("number", (1..20).random()) + } + }.toString() client.cookieJar.saveFromResponse( url, diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHubGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHubGenerator.kt index 531676eb1..76f850b97 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHubGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangahub/MangaHubGenerator.kt @@ -9,7 +9,7 @@ class MangaHubGenerator : ThemeSourceGenerator { override val themeClass = "MangaHub" - override val baseVersionCode: Int = 9 + override val baseVersionCode: Int = 10 override val sources = listOf( SingleLang("1Manga.co", "https://1manga.co", "en", isNsfw = true, className = "OneMangaCo"),