Animixplay: improve popular list fetching (#364)
This commit is contained in:
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'Animixplay'
|
extName = 'Animixplay'
|
||||||
pkgNameSuffix = 'en.animixplay'
|
pkgNameSuffix = 'en.animixplay'
|
||||||
extClass = '.Animixplay'
|
extClass = '.Animixplay'
|
||||||
extVersionCode = 6
|
extVersionCode = 7
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import kotlinx.serialization.decodeFromString
|
|||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import kotlinx.serialization.json.JsonElement
|
import kotlinx.serialization.json.JsonElement
|
||||||
import kotlinx.serialization.json.JsonObject
|
import kotlinx.serialization.json.JsonObject
|
||||||
|
import kotlinx.serialization.json.boolean
|
||||||
import kotlinx.serialization.json.int
|
import kotlinx.serialization.json.int
|
||||||
import kotlinx.serialization.json.jsonArray
|
import kotlinx.serialization.json.jsonArray
|
||||||
import kotlinx.serialization.json.jsonObject
|
import kotlinx.serialization.json.jsonObject
|
||||||
@ -37,7 +38,6 @@ import uy.kohesive.injekt.Injekt
|
|||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.lang.Exception
|
import java.lang.Exception
|
||||||
import java.util.Locale
|
|
||||||
|
|
||||||
@ExperimentalSerializationApi
|
@ExperimentalSerializationApi
|
||||||
class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||||
@ -58,44 +58,39 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var nextPage = "99999999"
|
||||||
|
var hasNextPage = true
|
||||||
|
|
||||||
override fun popularAnimeSelector(): String = throw Exception("not used")
|
override fun popularAnimeSelector(): String = throw Exception("not used")
|
||||||
|
|
||||||
override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/?tab=popular")
|
override fun popularAnimeRequest(page: Int): Request {
|
||||||
|
val formBody = FormBody.Builder()
|
||||||
|
.add("genre", "any")
|
||||||
|
.add("minstr", nextPage)
|
||||||
|
.add("orderby", "popular")
|
||||||
|
.build()
|
||||||
|
return POST("https://animixplay.to/api/search", headers, body = formBody)
|
||||||
|
}
|
||||||
|
|
||||||
override fun popularAnimeParse(response: Response): AnimesPage {
|
override fun popularAnimeParse(response: Response): AnimesPage {
|
||||||
val document = response.asJsoup()
|
val document = response.asJsoup()
|
||||||
val scriptData = document.select("script:containsData(var nowtime)").toString()
|
val responseJson = json.decodeFromString<JsonObject>(document.select("body").text())
|
||||||
val envSeason = scriptData.substringAfter("var envSeason = '").substringBefore("';")
|
nextPage = responseJson["last"]!!.jsonPrimitive.content
|
||||||
val envYear = scriptData.substringAfter("var envYear = ").substringBefore(";")
|
hasNextPage = responseJson["more"]!!.jsonPrimitive.boolean
|
||||||
val animeJson = json.decodeFromString<JsonObject>(
|
val animeList = responseJson["result"]!!.jsonArray
|
||||||
client.newCall(
|
|
||||||
GET(
|
|
||||||
url = "https://animixplay.to/assets/season/$envYear/${
|
|
||||||
envSeason.toLowerCase(
|
|
||||||
Locale.ROOT
|
|
||||||
)
|
|
||||||
}.json",
|
|
||||||
headers = Headers.headersOf("Referer", document.location())
|
|
||||||
)
|
|
||||||
).execute().body!!.string()
|
|
||||||
)
|
|
||||||
val animeList = animeJson["anime"]!!.jsonObject
|
|
||||||
val animes = animeList.map { element ->
|
val animes = animeList.map { element ->
|
||||||
popularAnimeFromElement(element.value.jsonObject)
|
popularAnimeFromElement(element.jsonObject)
|
||||||
}
|
}
|
||||||
|
|
||||||
return AnimesPage(animes, false)
|
return AnimesPage(animes, hasNextPage)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun popularAnimeFromElement(element: Element) = throw Exception("not used")
|
override fun popularAnimeFromElement(element: Element) = throw Exception("not used")
|
||||||
|
|
||||||
private fun popularAnimeFromElement(animeJson: JsonObject): SAnime {
|
private fun popularAnimeFromElement(animeJson: JsonObject): SAnime {
|
||||||
val anime = SAnime.create()
|
val anime = SAnime.create()
|
||||||
val url = "https://animixplay.to/assets/mal/${
|
anime.setUrlWithoutDomain(animeJson["url"]!!.jsonPrimitive.content)
|
||||||
animeJson["mal_id"]!!.jsonPrimitive.content
|
anime.thumbnail_url = animeJson["picture"]!!.jsonPrimitive.content
|
||||||
}.json"
|
|
||||||
anime.setUrlWithoutDomain(url)
|
|
||||||
anime.thumbnail_url = animeJson["image_url"]!!.jsonPrimitive.content
|
|
||||||
anime.title = animeJson["title"]!!.jsonPrimitive.content
|
anime.title = animeJson["title"]!!.jsonPrimitive.content
|
||||||
return anime
|
return anime
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user