AnimixPlay: fix wrong series selection (#327)

This commit is contained in:
GouravShDev 2022-02-12 20:07:24 +05:30 committed by GitHub
parent 76d5a28def
commit 74e5db6fb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 24 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'Animixplay' extName = 'Animixplay'
pkgNameSuffix = 'en.animixplay' pkgNameSuffix = 'en.animixplay'
extClass = '.Animixplay' extClass = '.Animixplay'
extVersionCode = 1 extVersionCode = 2
libVersion = '12' libVersion = '12'
} }

View File

@ -105,11 +105,14 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun episodeListSelector() = throw Exception("not used") override fun episodeListSelector() = throw Exception("not used")
override fun episodeListParse(response: Response): List<SEpisode> { override fun episodeListParse(response: Response): List<SEpisode> {
val document = getDocumentFromRequestUrl(response) return if (response.request.url.toString().contains(".json")) {
val document = response.asJsoup()
val animeJson = json.decodeFromString<JsonObject>(document.select("body").text()) val animeJson = json.decodeFromString<JsonObject>(document.select("body").text())
val malId = animeJson["mal_id"]!!.jsonPrimitive.int val malId = animeJson["mal_id"]!!.jsonPrimitive.int
episodesRequest(malId, document)
return episodesRequest(malId, document) } else {
episodeFromResponse(response)
}
} }
private fun episodesRequest(malId: Int, document: Document): List<SEpisode> { private fun episodesRequest(malId: Int, document: Document): List<SEpisode> {
@ -131,17 +134,21 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
GET( GET(
baseUrl + urlEndpoint, baseUrl + urlEndpoint,
) )
).execute().asJsoup() ).execute()
val episodeListJson = json.decodeFromString<JsonObject>(episodesResponse.select("div#epslistplace").text()) return episodeFromResponse(episodesResponse)
}
private fun episodeFromResponse(response: Response): List<SEpisode> {
val document = response.asJsoup()
val episodeListJson = json.decodeFromString<JsonObject>(document.select("div#epslistplace").text())
val url = response.request.url.toString()
val episodeAvailable = episodeListJson["eptotal"]!!.jsonPrimitive.int val episodeAvailable = episodeListJson["eptotal"]!!.jsonPrimitive.int
val episodeList = mutableListOf<SEpisode>() val episodeList = mutableListOf<SEpisode>()
for (i in 0 until episodeAvailable) { for (i in 0 until episodeAvailable) {
episodeList.add(episodeFromJsonElement(baseUrl + urlEndpoint, i)) episodeList.add(episodeFromJsonElement(url, i))
} }
return episodeList return episodeList
} }
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used") override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
private fun episodeFromJsonElement(url: String, number: Int): SEpisode { private fun episodeFromJsonElement(url: String, number: Int): SEpisode {
@ -224,23 +231,24 @@ class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun animeDetailsParse(response: Response): SAnime { override fun animeDetailsParse(response: Response): SAnime {
Log.d("detail", response.request.url.toString()) Log.d("detail", response.request.url.toString())
return animeDetailsParse(getDocumentFromRequestUrl(response)) val document = if (!response.request.url.toString().contains(".json")) {
getDocumentFromRequestUrl(response)
} else {
response.asJsoup()
}
return animeDetailsParse(document)
} }
private fun getDocumentFromRequestUrl(response: Response): Document { private fun getDocumentFromRequestUrl(response: Response): Document {
return if (!response.request.url.toString().contains(".json")) {
val scriptData = response.asJsoup().select("script:containsData(var malid )").toString() val scriptData = response.asJsoup().select("script:containsData(var malid )").toString()
val malId = scriptData.substringAfter("var malid = '").substringBefore("';") val malId = scriptData.substringAfter("var malid = '").substringBefore("';")
val url = "https://animixplay.to/assets/mal/$malId.json" val url = "https://animixplay.to/assets/mal/$malId.json"
client.newCall( return client.newCall(
GET( GET(
url, url,
headers headers
) )
).execute().asJsoup() ).execute().asJsoup()
} else {
response.asJsoup()
}
} }
override fun animeDetailsParse(document: Document): SAnime { override fun animeDetailsParse(document: Document): SAnime {