From ad45480439d0849c3c4efb34c44505a32c8bb3e4 Mon Sep 17 00:00:00 2001 From: Draken <131387159+dragonx943@users.noreply.github.com> Date: Tue, 22 Jul 2025 16:35:13 +0700 Subject: [PATCH] [BatCave] Small fix for getDetails (#1994) --- .../org/koitharu/kotatsu/parsers/site/en/BatCave.kt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BatCave.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BatCave.kt index 258599f1..b7e56039 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BatCave.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BatCave.kt @@ -106,9 +106,16 @@ internal class BatCave(context: MangaLoaderContext) : val dateFormat = SimpleDateFormat("dd.MM.yyyy", Locale.US) val scriptData = doc.selectFirst("script:containsData(__DATA__)")?.data() - ?.substringAfter("window.__DATA__ = ") - ?.substringBefore(";") - ?: doc.parseFailed("Script data not found") + ?.let { data -> + val jsonStart = data.indexOf("window.__DATA__ = ") + "window.__DATA__ = ".length + val jsonEnd = data.indexOf("};", startIndex = jsonStart) + if (jsonEnd != -1) { + // substring, include "}" symbol + data.substring(jsonStart, jsonEnd + 1) + } else { + null + } + } ?: doc.parseFailed("Script data not found") val jsonData = JSONObject(scriptData) val newsId = jsonData.getLong("news_id")