From 83719416e8a6c8ea8c75b3cf4af0f8cb680a69e7 Mon Sep 17 00:00:00 2001 From: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:02:53 -0300 Subject: [PATCH] Fix pages not found in some chapters at LM (#18753) Fix pages not found in some chapters at LM. --- src/pt/lermanga/build.gradle | 2 +- .../extension/pt/lermanga/LerManga.kt | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/pt/lermanga/build.gradle b/src/pt/lermanga/build.gradle index a69cf4062..df4ba5111 100644 --- a/src/pt/lermanga/build.gradle +++ b/src/pt/lermanga/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Ler Mangá' pkgNameSuffix = 'pt.lermanga' extClass = '.LerManga' - extVersionCode = 1 + extVersionCode = 2 isNsfw = true } diff --git a/src/pt/lermanga/src/eu/kanade/tachiyomi/extension/pt/lermanga/LerManga.kt b/src/pt/lermanga/src/eu/kanade/tachiyomi/extension/pt/lermanga/LerManga.kt index 91b8b10cf..2f12279a9 100644 --- a/src/pt/lermanga/src/eu/kanade/tachiyomi/extension/pt/lermanga/LerManga.kt +++ b/src/pt/lermanga/src/eu/kanade/tachiyomi/extension/pt/lermanga/LerManga.kt @@ -101,11 +101,21 @@ class LerManga : ParsedHttpSource() { } override fun pageListParse(document: Document): List { - return document.selectFirst("h1.heading-header + script[src^=data]")!! - .attr("src") - .substringAfter("base64,") - .let { Base64.decode(it, Base64.DEFAULT).toString(charset("UTF-8")) } - .substringAfter("var imagens_cap=") + val pagesScript = document.selectFirst("h1.heading-header + script") + ?: return emptyList() + + val pagesJson = when { + pagesScript.hasAttr("src") -> { + pagesScript.attr("src") + .substringAfter("base64,") + .let { Base64.decode(it, Base64.DEFAULT).toString(Charsets.UTF_8) } + } + else -> pagesScript.data() + } + + return pagesJson + .replace(PAGES_VARIABLE_REGEX, "") + .substringBeforeLast(";") .let { json.decodeFromString>(it) } .mapIndexed { index, imageUrl -> Page(index, document.location(), imageUrl) @@ -133,6 +143,7 @@ class LerManga : ParsedHttpSource() { } companion object { + private val PAGES_VARIABLE_REGEX = "var imagens_cap\\s*=\\s*".toRegex() private val DATE_FORMATTER by lazy { SimpleDateFormat("dd-MM-yyyy", Locale("pt", "BR")) }