From 71986a1c6ea298186c6217d21122236da69bec4c Mon Sep 17 00:00:00 2001 From: Maxim Kuleshov Date: Sat, 12 Jun 2021 01:11:29 +0300 Subject: [PATCH] Hentaimimi proper fix (#7608) * Properly parse HentaiMimi pages list * HentaiMimi version bump * Add kotlinx-serialization to build.gradle (HentaiMimi) --- src/en/hentaimimi/build.gradle | 3 ++- .../extension/en/hentaimimi/HentaiMimi.kt | 20 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/en/hentaimimi/build.gradle b/src/en/hentaimimi/build.gradle index 921eff2f2..ce0c3b4f4 100644 --- a/src/en/hentaimimi/build.gradle +++ b/src/en/hentaimimi/build.gradle @@ -1,11 +1,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' ext { extName = 'HentaiMimi' pkgNameSuffix = 'en.hentaimimi' extClass = '.HentaiMimi' - extVersionCode = 4 + extVersionCode = 5 libVersion = '1.2' containsNsfw = true } diff --git a/src/en/hentaimimi/src/eu/kanade/tachiyomi/extension/en/hentaimimi/HentaiMimi.kt b/src/en/hentaimimi/src/eu/kanade/tachiyomi/extension/en/hentaimimi/HentaiMimi.kt index 38ea7ac60..60e1379f0 100644 --- a/src/en/hentaimimi/src/eu/kanade/tachiyomi/extension/en/hentaimimi/HentaiMimi.kt +++ b/src/en/hentaimimi/src/eu/kanade/tachiyomi/extension/en/hentaimimi/HentaiMimi.kt @@ -9,12 +9,16 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonPrimitive import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document import org.jsoup.nodes.Element import rx.Observable +import uy.kohesive.injekt.injectLazy import java.util.concurrent.TimeUnit /* @@ -30,6 +34,8 @@ class HentaiMimi : ParsedHttpSource() { override val name = "HentaiMimi" override val supportsLatest = true + private val json: Json by injectLazy() + override val client: OkHttpClient = network.client.newBuilder() .addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS)) .build() @@ -150,16 +156,16 @@ class HentaiMimi : ParsedHttpSource() { override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used") override fun pageListParse(document: Document): List { + val pagesJsSource = document.select("body main script").html() + val pagesJsArray = pagesJsSource.substring(pagesJsSource.indexOf("[")) + val pages = mutableListOf() - document.select("body main script").html().substringAfter("[").substringBefore("]").split("\",\"").forEachIndexed { index, it -> - val url = "$baseUrl/${it.replace("\\/", "/").replace("\"", "")}" + + // note: a simple JS array is also a valid JSON array - just unmarshal it + json.parseToJsonElement(pagesJsArray).jsonArray.mapIndexed { index, jsonElement -> + val url = "$baseUrl/${jsonElement.jsonPrimitive.content.replace("#", "%23")}" pages.add(Page(index, url, url)) } - - /*document.select("div#lightgallery > a").forEachIndexed() { index, it -> - val url = it.select("img").attr("abs:src") - pages.add(Page(index, url, url)) - }*/ return pages }