From 3fc3a8261db642fb7d3f3cba8e3049c6f2f8dbf6 Mon Sep 17 00:00:00 2001 From: dec05eba <66856951+dec05eba@users.noreply.github.com> Date: Fri, 26 Aug 2022 04:20:56 +0200 Subject: [PATCH] Fix mangakatana Image array not found (#13194) Mangakatana updated their javascript again and is using the ytaw variable again as the array of images. To make sure mangakatana keeps working even if the website changes back and forth we check both variables and choose the array that is most likely the one with all of the pages. Closes #13188 --- src/en/mangakatana/build.gradle | 2 +- .../extension/en/mangakatana/MangaKatana.kt | 31 ++++++++++++++----- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/en/mangakatana/build.gradle b/src/en/mangakatana/build.gradle index e02d8038c..470fb22da 100644 --- a/src/en/mangakatana/build.gradle +++ b/src/en/mangakatana/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'MangaKatana' pkgNameSuffix = 'en.mangakatana' extClass = '.MangaKatana' - extVersionCode = 7 + extVersionCode = 8 } apply from: "$rootDir/common.gradle" diff --git a/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt b/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt index 39cde73cf..430d1c239 100644 --- a/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt +++ b/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt @@ -179,7 +179,8 @@ class MangaKatana : ConfigurableSource, ParsedHttpSource() { date_upload = dateFormat.parse(element.select(".update_time").text())?.time ?: 0 } - private val imageArrayRegex = Regex("""var htnc=\[([^\[]*)]""") + private val imageArrayYtawRegex = Regex("""var ytaw=\[([^\[]*)]""") + private val imageArrayHtncRegex = Regex("""var htnc=\[([^\[]*)]""") private val imageUrlRegex = Regex("""'([^']*)'""") // Page List @@ -190,12 +191,28 @@ class MangaKatana : ConfigurableSource, ParsedHttpSource() { } override fun pageListParse(document: Document): List { - val imageArray = document.select("script:containsData(var htnc)").firstOrNull()?.data() - ?.let { imageArrayRegex.find(it)?.groupValues?.get(1) } - ?: throw Exception("Image array not found") - return imageUrlRegex.findAll(imageArray).asIterable().mapIndexed { i, mr -> - Page(i, "", mr.groupValues[1]) - } + val imageArrayYtaw = document.select("script:containsData(var ytaw)").firstOrNull()?.data() + ?.let { imageArrayYtawRegex.find(it)?.groupValues?.get(1) } + val imageArrayHtnc = document.select("script:containsData(var htnc)").firstOrNull()?.data() + ?.let { imageArrayHtncRegex.find(it)?.groupValues?.get(1) } + + val pagesYtaw = + imageArrayYtaw?.let { + imageUrlRegex.findAll(it).asIterable().mapIndexed { i, mr -> + Page(i, "", mr.groupValues[1]) + } + } ?: emptyList() + val pagesHtnc = + imageArrayHtnc?.let { + imageUrlRegex.findAll(it).asIterable().mapIndexed { i, mr -> + Page(i, "", mr.groupValues[1]) + } + } ?: emptyList() + + return if (pagesYtaw.size >= pagesHtnc.size) + pagesYtaw + else + pagesHtnc } override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not Used")