From c19a5c64ce627e23989d1b74c0daeba3db84211f Mon Sep 17 00:00:00 2001 From: Arraiment <76941874+Arraiment@users.noreply.github.com> Date: Fri, 20 Aug 2021 18:22:43 +0800 Subject: [PATCH] Fix search and add filters (#8667) --- src/en/mangahere/build.gradle | 2 +- .../extension/en/mangahere/Mangahere.kt | 40 ++++++++++++++----- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/en/mangahere/build.gradle b/src/en/mangahere/build.gradle index ecd64ec87..62d9ece8f 100644 --- a/src/en/mangahere/build.gradle +++ b/src/en/mangahere/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Mangahere' pkgNameSuffix = 'en.mangahere' extClass = '.Mangahere' - extVersionCode = 16 + extVersionCode = 17 libVersion = '1.2' } diff --git a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt index 5679c5212..11d6a39e3 100644 --- a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt +++ b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt @@ -93,6 +93,10 @@ class Mangahere : ParsedHttpSource() { when (filter) { is TypeList -> url.addEncodedQueryParameter("type", types[filter.values[filter.state]].toString()) is CompletionList -> url.addEncodedQueryParameter("st", filter.state.toString()) + is RatingList -> { + url.addEncodedQueryParameter("rating_method", "gt") + url.addEncodedQueryParameter("rating", filter.state.toString()) + } is GenreList -> { val includeGenres = mutableSetOf<Int>() val excludeGenres = mutableSetOf<Int>() @@ -105,6 +109,18 @@ class Mangahere : ParsedHttpSource() { addEncodedQueryParameter("nogenres", excludeGenres.joinToString(",")) } } + is ArtistFilter -> { + url.addEncodedQueryParameter("artist_method", "cw") + url.addEncodedQueryParameter("artist", filter.state) + } + is AuthorFilter -> { + url.addEncodedQueryParameter("author_method", "cw") + url.addEncodedQueryParameter("author", filter.state) + } + is YearFilter -> { + url.addEncodedQueryParameter("released_method", "eq") + url.addEncodedQueryParameter("released", filter.state) + } } } @@ -114,14 +130,6 @@ class Mangahere : ParsedHttpSource() { addEncodedQueryParameter("sort", null) addEncodedQueryParameter("stype", 1.toString()) addEncodedQueryParameter("name", null) - addEncodedQueryParameter("author_method", "cw") - addEncodedQueryParameter("author", null) - addEncodedQueryParameter("artist_method", "cw") - addEncodedQueryParameter("artist", null) - addEncodedQueryParameter("rating_method", "eq") - addEncodedQueryParameter("rating", null) - addEncodedQueryParameter("released_method", "eq") - addEncodedQueryParameter("released", null) } return GET(url.toString(), headers) @@ -316,14 +324,23 @@ class Mangahere : ParsedHttpSource() { private class Genre(title: String, val id: Int) : Filter.TriState(title) - private class TypeList(types: Array<String>) : Filter.Select<String>("Type", types, 0) + private class TypeList(types: Array<String>) : Filter.Select<String>("Type", types, 1) private class CompletionList(completions: Array<String>) : Filter.Select<String>("Completed series", completions, 0) + private class RatingList(ratings: Array<String>) : Filter.Select<String>("Minimum rating", ratings, 0) private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genres", genres) + private class ArtistFilter(name: String) : Filter.Text(name) + private class AuthorFilter(name: String) : Filter.Text(name) + private class YearFilter(name: String) : Filter.Text(name) + override fun getFilterList() = FilterList( TypeList(types.keys.toList().sorted().toTypedArray()), - CompletionList(completions), - GenreList(genres()) + ArtistFilter("Artist"), + AuthorFilter("Author"), + GenreList(genres()), + RatingList(ratings), + YearFilter("Year released"), + CompletionList(completions) ) private val types = hashMapOf( @@ -338,6 +355,7 @@ class Mangahere : ParsedHttpSource() { ) private val completions = arrayOf("Either", "No", "Yes") + private val ratings = arrayOf("No Stars", "1 Star", "2 Stars", "3 Stars", "4 Stars", "5 Stars") private fun genres() = arrayListOf( Genre("Action", 1),