From a3c7399863ba35f3dc8caf1da7fc62d449bdf64c Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Sat, 1 Apr 2023 10:47:55 -0300 Subject: [PATCH] Vizer.tv(pt): Fix episode list + refactor (#1457) * fix: Fix error when serializing episodes list * refactor: General refactoration * chore: Bump version --- src/pt/vizer/build.gradle | 2 +- .../animeextension/pt/vizer/Vizer.kt | 116 ++++++++---------- .../animeextension/pt/vizer/dto/VizerDto.kt | 1 - 3 files changed, 53 insertions(+), 66 deletions(-) diff --git a/src/pt/vizer/build.gradle b/src/pt/vizer/build.gradle index d7db6cb9a..93061296a 100644 --- a/src/pt/vizer/build.gradle +++ b/src/pt/vizer/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Vizer.tv' pkgNameSuffix = 'pt.vizer' extClass = '.Vizer' - extVersionCode = 6 + extVersionCode = 7 libVersion = '13' containsNsfw = true } diff --git a/src/pt/vizer/src/eu/kanade/tachiyomi/animeextension/pt/vizer/Vizer.kt b/src/pt/vizer/src/eu/kanade/tachiyomi/animeextension/pt/vizer/Vizer.kt index c3a4512a2..692bc1e32 100644 --- a/src/pt/vizer/src/eu/kanade/tachiyomi/animeextension/pt/vizer/Vizer.kt +++ b/src/pt/vizer/src/eu/kanade/tachiyomi/animeextension/pt/vizer/Vizer.kt @@ -4,6 +4,7 @@ import android.app.Application import android.content.SharedPreferences import androidx.preference.ListPreference import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animeextension.pt.vizer.VizerFilters.FilterSearchParams import eu.kanade.tachiyomi.animeextension.pt.vizer.dto.EpisodeListDto import eu.kanade.tachiyomi.animeextension.pt.vizer.dto.PlayersDto import eu.kanade.tachiyomi.animeextension.pt.vizer.dto.SearchItemDto @@ -26,7 +27,7 @@ import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request @@ -61,20 +62,13 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { // ============================== Popular =============================== override fun popularAnimeRequest(page: Int): Request { - val initialUrl = "$API_URL/ajaxPagination.php?categoryFilterOrderBy=vzViews&page=${page - 1}&categoryFilterOrderWay=desc&categoryFilterYearMin=1950&categoryFilterYearMax=2022" - val pageType = preferences.getString(PREF_POPULAR_PAGE_KEY, "movie")!! - val finalUrl = if ("movie" in pageType) { - initialUrl + "&saga=0&categoriesListMovies=all" - } else { - (initialUrl + "&categoriesListSeries=all").let { - if ("anime" in pageType) { - it + "&anime=1" - } else { - it + "&anime=0" - } - } - } - return GET(finalUrl) + val pageType = preferences.getString(PREF_POPULAR_PAGE_KEY, PREF_POPULAR_PAGE_DEFAULT)!! + val params = FilterSearchParams( + orderBy = "vzViews", + orderWay = "desc", + type = pageType, + ) + return searchAnimeRequest(page, "", params) } override fun popularAnimeParse(response: Response): AnimesPage { @@ -164,8 +158,8 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { .execute() .parseAs() val langPrefix = if (videoObj.lang == "1") "LEG" else "DUB" - val videoList = players.iterator().mapNotNull loop@{ (name, status) -> - if (status == "0") return@loop null + val videoList = players.iterator().mapNotNull { (name, status) -> + if (status == "0") return@mapNotNull null val url = getPlayerUrl(videoObj.id, name) when (name) { "mixdrop" -> @@ -200,12 +194,7 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { searchAnimeByPathParse(response, path) } } else { - val params = VizerFilters.getSearchParameters(filters) - client.newCall(searchAnimeRequest(page - 1, query, params)) - .asObservableSuccess() - .map { response -> - searchAnimeParse(response) - } + super.fetchSearchAnime(page, query, filters) } } @@ -215,26 +204,33 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { return AnimesPage(listOf(details), false) } - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request = throw Exception("not used") + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val params = VizerFilters.getSearchParameters(filters) + return searchAnimeRequest(page, query, params) + } - private fun searchAnimeRequest(page: Int, query: String, filters: VizerFilters.FilterSearchParams): Request { - val urlBuilder = "$API_URL/ajaxPagination.php".toHttpUrlOrNull()!!.newBuilder() - .addQueryParameter("page", page.toString()) - .addQueryParameter("search", query) - .addQueryParameter("saga", "0") - .addQueryParameter("categoryFilterYearMin", filters.minYear) - .addQueryParameter("categoryFilterYearMax", filters.maxYear) - .addQueryParameter("categoryFilterOrderBy", filters.orderBy) - .addQueryParameter("categoryFilterOrderWay", filters.orderWay) + private fun searchAnimeRequest(page: Int, query: String, params: FilterSearchParams): Request { + val urlBuilder = "$API_URL/ajaxPagination.php".toHttpUrl().newBuilder() + .addQueryParameter("page", "${page - 1}") + .addQueryParameter("categoryFilterYearMin", params.minYear) + .addQueryParameter("categoryFilterYearMax", params.maxYear) + .addQueryParameter("categoryFilterOrderBy", params.orderBy) + .addQueryParameter("categoryFilterOrderWay", params.orderWay) + .apply { + if (query.isNotBlank()) addQueryParameter("search", query) - if (filters.type == "Movies") { - urlBuilder.addQueryParameter("categoriesListMovies", filters.genre) - } else { - urlBuilder.addQueryParameter("categoriesListSeries", filters.genre) - } - if (filters.type == "anime") { - urlBuilder.addQueryParameter("anime", "1") - } + when (params.type) { + "Movies" -> { + addQueryParameter("saga", "0") + addQueryParameter("categoriesListMovies", params.genre) + } + else -> { + addQueryParameter("categoriesListSeries", params.genre) + val isAnime = params.type == "anime" + addQueryParameter("anime", if (isAnime) "1" else "0") + } + } + } return GET(urlBuilder.build().toString(), headers) } @@ -271,7 +267,7 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { title = PREF_POPULAR_PAGE_TITLE entries = PREF_POPULAR_PAGE_ENTRIES entryValues = PREF_POPULAR_PAGE_VALUES - setDefaultValue("anime") + setDefaultValue(PREF_POPULAR_PAGE_DEFAULT) summary = "%s" setOnPreferenceChangeListener { _, newValue -> val selected = newValue as String @@ -286,7 +282,7 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { title = PREF_PLAYER_TITLE entries = PREF_PLAYER_ARRAY entryValues = PREF_PLAYER_ARRAY - setDefaultValue("MixDrop") + setDefaultValue(PREF_PLAYER_DEFAULT) summary = "%s" setOnPreferenceChangeListener { _, newValue -> val selected = newValue as String @@ -301,7 +297,7 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { title = PREF_LANGUAGE_TITLE entries = PREF_LANGUAGE_ENTRIES entryValues = PREF_LANGUAGE_VALUES - setDefaultValue("LEG") + setDefaultValue(PREF_LANGUAGE_DEFAULT) summary = "%s" setOnPreferenceChangeListener { _, newValue -> val selected = newValue as String @@ -326,30 +322,19 @@ class Vizer : ConfigurableAnimeSource, AnimeHttpSource() { private fun apiRequest(body: String): Request { val reqBody = body.toRequestBody("application/x-www-form-urlencoded".toMediaType()) - val newHeaders = headersBuilder().add("x-requested-with", "XMLHttpRequest") - .build() + val newHeaders = headersBuilder().add("x-requested-with", "XMLHttpRequest").build() return POST("$API_URL/publicFunctions.php", newHeaders, body = reqBody) } - private fun List