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"),