From e65de11c1c901101021ac673ef9d9dbb57ac0c0f Mon Sep 17 00:00:00 2001 From: GouravShDev <74348508+GouravShDev@users.noreply.github.com> Date: Tue, 8 Mar 2022 01:50:02 +0530 Subject: [PATCH] Animixplay: fix cdn server and add latest feature (#390) --- src/en/animixplay/build.gradle | 2 +- .../en/animixplay/Animixplay.kt | 31 ++++++++++++++++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/en/animixplay/build.gradle b/src/en/animixplay/build.gradle index a3a64aa66..2b465ef7c 100644 --- a/src/en/animixplay/build.gradle +++ b/src/en/animixplay/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Animixplay' pkgNameSuffix = 'en.animixplay' extClass = '.Animixplay' - extVersionCode = 8 + extVersionCode = 9 libVersion = '12' } diff --git a/src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt b/src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt index 79aee9d50..e402d261d 100644 --- a/src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt +++ b/src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt @@ -48,7 +48,7 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val lang = "en" - override val supportsLatest = false + override val supportsLatest = true override val client: OkHttpClient = network.cloudflareClient @@ -61,6 +61,9 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() { var nextPage = "99999999" var hasNextPage = true + var latestNextDate = "3020-05-06 00:00:00" + var latestHasNextPage = true + override fun popularAnimeSelector(): String = throw Exception("not used") override fun popularAnimeRequest(page: Int): Request { @@ -89,7 +92,7 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() { private fun popularAnimeFromElement(animeJson: JsonObject): SAnime { val anime = SAnime.create() - anime.setUrlWithoutDomain(animeJson["url"]!!.jsonPrimitive.content) + anime.setUrlWithoutDomain(animeJson["url"]!!.jsonPrimitive.content.substringBefore("/ep")) anime.thumbnail_url = animeJson["picture"]!!.jsonPrimitive.content anime.title = animeJson["title"]!!.jsonPrimitive.content return anime @@ -191,7 +194,7 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() { ) ).execute().request.url.fragment!!.substringBefore("#") val masterUrl = decodeBase64(redirectUrlEncodedString) - return if (masterUrl.contains("gogocdn")) { + return if (masterUrl.contains("gogo")) { parseCdnMasterPlaylist(masterUrl) } else { val masterPlaylist = client.newCall(GET(masterUrl, headers)).execute().body!!.string() @@ -328,7 +331,27 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("not used") - override fun latestUpdatesRequest(page: Int): Request = throw Exception("not used") + override fun latestUpdatesRequest(page: Int): Request { + val formBody = FormBody.Builder() + .add("genre", "any") + .add("minstr", latestNextDate) + .add("orderby", "latest") + .build() + return POST("$baseUrl/api/search", headers, body = formBody) + } + + override fun latestUpdatesParse(response: Response): AnimesPage { + val document = response.asJsoup() + val responseJson = json.decodeFromString(document.select("body").text()) + latestNextDate = responseJson["last"]!!.jsonPrimitive.content + latestHasNextPage = responseJson["more"]!!.jsonPrimitive.boolean + val animeList = responseJson["result"]!!.jsonArray + val animes = animeList.map { element -> + popularAnimeFromElement(element.jsonObject) + } + + return AnimesPage(animes, latestHasNextPage) + } override fun latestUpdatesSelector(): String = throw Exception("not used")