From 8cf1485c313524e26722a49ae409bf8b85656e37 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Mon, 5 Feb 2024 23:47:47 -0500 Subject: [PATCH] CreepyScans - add query search (#1036) * CreepyScans - add query search * Boolean --- .../madara/creepyscans/src/CreepyScans.kt | 42 ++++++++++++++++++- .../multisrc/madara/MadaraGenerator.kt | 2 +- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/multisrc/overrides/madara/creepyscans/src/CreepyScans.kt b/multisrc/overrides/madara/creepyscans/src/CreepyScans.kt index b5359f463..7289de59c 100644 --- a/multisrc/overrides/madara/creepyscans/src/CreepyScans.kt +++ b/multisrc/overrides/madara/creepyscans/src/CreepyScans.kt @@ -2,15 +2,25 @@ package eu.kanade.tachiyomi.extension.en.creepyscans import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive import okhttp3.CacheControl +import okhttp3.FormBody import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document +import rx.Observable import java.util.concurrent.TimeUnit class CreepyScans : Madara( @@ -47,9 +57,37 @@ class CreepyScans : Madara( // Search - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - if (query.isNotBlank()) throw Exception("Search not available") + override fun fetchSearchManga( + page: Int, + query: String, + filters: FilterList, + ): Observable<MangasPage> { + return if (query.isNotBlank()) { + val form = FormBody.Builder() + .add("action", "wp-manga-search-manga") + .add("title", query) + .build() + client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, form)).asObservableSuccess().map { res -> + json.parseToJsonElement(res.body.string()).jsonObject.let { obj -> + if (!obj["success"]!!.jsonPrimitive.boolean) { + MangasPage(emptyList(), false) + } else { + val mangas = obj["data"]!!.jsonArray.map { + SManga.create().apply { + title = it.jsonObject["title"]!!.jsonPrimitive.content + setUrlWithoutDomain(it.jsonObject["url"]!!.jsonPrimitive.content) + } + } + MangasPage(mangas, false) + } + } + } + } else { + super.fetchSearchManga(page, query, filters) + } + } + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val url = "$baseUrl/$mangaSubString/".toHttpUrl().newBuilder() filters.forEach { filter -> when (filter) { diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt index f5e3b4627..c7243c0ef 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt @@ -66,7 +66,7 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("Comicz.net v2", "https://v2.comiz.net", "all", isNsfw = true, className = "ComiczNetV2"), SingleLang("Cookie Kiara", "https://18.kiara.cool", "en", isNsfw = true), SingleLang("CopyPasteScan", "https://copypastescan.xyz", "es", overrideVersionCode = 1), - SingleLang("CreepyScans", "https://creepyscans.com", "en"), + SingleLang("CreepyScans", "https://creepyscans.com", "en", overrideVersionCode = 1), SingleLang("DapRob", "https://daprob.com", "es"), SingleLang("Dark Scans", "https://darkscans.com", "en", overrideVersionCode = 1), SingleLang("Dark-scan", "https://dark-scan.com", "en", isNsfw = true, className = "DarkScan"),