diff --git a/src/en/gogoanime/build.gradle b/src/en/gogoanime/build.gradle index f7c334d81..8e9b2a327 100644 --- a/src/en/gogoanime/build.gradle +++ b/src/en/gogoanime/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Gogoanime' pkgNameSuffix = 'en.gogoanime' extClass = '.GogoAnime' - extVersionCode = 13 + extVersionCode = 14 libVersion = '12' } diff --git a/src/en/gogoanime/src/eu/kanade/tachiyomi/animeextension/en/gogoanime/GogoAnime.kt b/src/en/gogoanime/src/eu/kanade/tachiyomi/animeextension/en/gogoanime/GogoAnime.kt index 1545371d5..846e31bbd 100644 --- a/src/en/gogoanime/src/eu/kanade/tachiyomi/animeextension/en/gogoanime/GogoAnime.kt +++ b/src/en/gogoanime/src/eu/kanade/tachiyomi/animeextension/en/gogoanime/GogoAnime.kt @@ -5,6 +5,7 @@ import android.content.SharedPreferences import androidx.preference.ListPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SEpisode @@ -165,8 +166,16 @@ class GogoAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun searchAnimeSelector(): String = "div.img a" - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request = - GET("$baseUrl/search.html?keyword=$query&page=$page", headers) + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val filterList = if (filters.isEmpty()) getFilterList() else filters + val genreFilter = filterList.find { it is GenreFilter } as GenreFilter + + return when { + query.isNotBlank() -> GET("$baseUrl/search.html?keyword=$query&page=$page", headers) + genreFilter.state != 0 -> GET("$baseUrl/genre/${genreFilter.toUriPart()}?page=$page") + else -> GET("$baseUrl/popular.html?page=$page") + } + } override fun animeDetailsParse(document: Document): SAnime { val anime = SAnime.create() @@ -219,4 +228,68 @@ class GogoAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() { } screen.addPreference(videoQualityPref) } + + // Filters + override fun getFilterList(): AnimeFilterList = AnimeFilterList( + AnimeFilter.Header("Text search ignores filters"), + GenreFilter() + ) + + private class GenreFilter : UriPartFilter( + "Genres", + arrayOf( + Pair("