From 268b4cb4d7698675ddacbb785628828b001382f1 Mon Sep 17 00:00:00 2001 From: Luqman Date: Sat, 5 Nov 2022 03:05:48 +0700 Subject: [PATCH] Ngomik: Fix search & filter issue (#14124) Closes #14094 --- .../mangathemesia/ngomik/src/Ngomik.kt | 54 ++++++++++++++++++- .../multisrc/mangathemesia/MangaThemesia.kt | 4 +- .../mangathemesia/MangaThemesiaGenerator.kt | 2 +- 3 files changed, 56 insertions(+), 4 deletions(-) diff --git a/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt b/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt index 645f8baca..36d145b67 100644 --- a/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt +++ b/multisrc/overrides/mangathemesia/ngomik/src/Ngomik.kt @@ -1,11 +1,63 @@ package eu.kanade.tachiyomi.extension.id.ngomik import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request + +class Ngomik : MangaThemesia("Ngomik", "https://ngomik.net", "id", "/manga") { -class Ngomik : MangaThemesia("Ngomik", "https://ngomik.net", "id", "/all-komik") { private val userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36" + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = baseUrl.toHttpUrl().newBuilder() + .addPathSegment(mangaUrlDirectory.substring(1)) + .addQueryParameter("page", page.toString()) + + if (query.isNullOrBlank().not()) { + url.addQueryParameter("title", query) + } + + filters.forEach { filter -> + when (filter) { + is AuthorFilter -> { + url.addQueryParameter("author", filter.state) + } + is YearFilter -> { + url.addQueryParameter("yearx", filter.state) + } + is StatusFilter -> { + url.addQueryParameter("status", filter.selectedValue()) + } + is TypeFilter -> { + url.addQueryParameter("type", filter.selectedValue()) + } + is OrderByFilter -> { + url.addQueryParameter("order", filter.selectedValue()) + } + is GenreListFilter -> { + filter.state + .filter { it.state != Filter.TriState.STATE_IGNORE } + .forEach { + val value = if (it.state == Filter.TriState.STATE_EXCLUDE) "-${it.value}" else it.value + url.addQueryParameter("genre[]", value) + } + } + // if site has project page, default value "hasProjectPage" = false + is ProjectFilter -> { + if (filter.selectedValue() == "project-filter-on") { + url.setPathSegment(0, projectPageString.substring(1)) + } + } + else -> { /* Do Nothing */ } + } + } + return GET(url.toString()) + } + override fun headersBuilder(): Headers.Builder = Headers.Builder() .add("User-Agent", userAgent) .add("Referer", baseUrl) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesia.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesia.kt index 95ee48d69..58c4a156b 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesia.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesia.kt @@ -304,9 +304,9 @@ abstract class MangaThemesia( } // Filters - private class AuthorFilter : Filter.Text("Author") + protected class AuthorFilter : Filter.Text("Author") - private class YearFilter : Filter.Text("Year") + protected class YearFilter : Filter.Text("Year") open class SelectFilter( displayName: String, diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt index 93a7639b7..568ea9ea0 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt @@ -77,7 +77,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("Mihentai", "https://mihentai.com", "all", isNsfw = true, overrideVersionCode = 2), SingleLang("Mode Scanlator", "https://modescanlator.com", "pt-BR", overrideVersionCode = 8), SingleLang("Nekomik", "https://nekomik.com", "id"), - SingleLang("Ngomik", "https://ngomik.net", "id", overrideVersionCode = 1), + SingleLang("Ngomik", "https://ngomik.net", "id", overrideVersionCode = 2), SingleLang("NIGHT SCANS", "https://nightscans.org", "en", isNsfw = true, className = "NightScans"), SingleLang("Nocturnal Scans", "https://nocturnalscans.com", "en", overrideVersionCode = 1), SingleLang("Omega Scans", "https://omegascans.org", "en", isNsfw = true),