From 847f8d084f85375d433c9d2647718eccef415eb4 Mon Sep 17 00:00:00 2001 From: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> Date: Thu, 8 Aug 2024 07:24:48 +0500 Subject: [PATCH] Comicaso: change domain and fix page list (#4473) --- src/id/comicaso/build.gradle | 4 +-- .../extension/id/comicaso/Comicaso.kt | 33 +++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/id/comicaso/build.gradle b/src/id/comicaso/build.gradle index 288c2e375..974f34ffe 100644 --- a/src/id/comicaso/build.gradle +++ b/src/id/comicaso/build.gradle @@ -2,8 +2,8 @@ ext { extName = 'Comicaso' extClass = '.Comicaso' themePkg = 'mangathemesia' - baseUrl = 'https://comicaso.com' - overrideVersionCode = 0 + baseUrl = 'https://comicaso.org' + overrideVersionCode = 1 } apply from: "$rootDir/common.gradle" diff --git a/src/id/comicaso/src/eu/kanade/tachiyomi/extension/id/comicaso/Comicaso.kt b/src/id/comicaso/src/eu/kanade/tachiyomi/extension/id/comicaso/Comicaso.kt index 32e262861..0bd668994 100644 --- a/src/id/comicaso/src/eu/kanade/tachiyomi/extension/id/comicaso/Comicaso.kt +++ b/src/id/comicaso/src/eu/kanade/tachiyomi/extension/id/comicaso/Comicaso.kt @@ -1,12 +1,41 @@ package eu.kanade.tachiyomi.extension.id.comicaso +import android.util.Base64 import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.source.model.Page +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonPrimitive +import org.jsoup.nodes.Document import java.text.SimpleDateFormat import java.util.Locale class Comicaso : MangaThemesia( "Comicaso", - "https://comicaso.com", + "https://comicaso.org", "id", dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("id")), -) +) { + override fun pageListParse(document: Document): List { + val script = document.select("script[src^=data:text/javascript;base64,]").map { + Base64.decode( + it.attr("src").substringAfter("base64,"), + Base64.DEFAULT, + ).toString(Charsets.UTF_8) + }.firstOrNull { it.startsWith("ts_reader.run") } + ?: throw Exception("Couldn't find page script") + + countViews(document) + + val imageListJson = JSON_IMAGE_LIST_REGEX.find(script)?.destructured?.toList()?.get(0).orEmpty() + val imageList = try { + json.parseToJsonElement(imageListJson).jsonArray + } catch (_: IllegalArgumentException) { + emptyList() + } + val scriptPages = imageList.mapIndexed { i, jsonEl -> + Page(i, document.location(), jsonEl.jsonPrimitive.content) + } + + return scriptPages + } +}