fix(en/AniPlay): Added idMal to request

This commit is contained in:
Josef František Straka 2024-10-31 20:47:32 +01:00
parent 37cb8174d5
commit f5ad79e79a

View file

@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.animesource.model.Track
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils
import eu.kanade.tachiyomi.multisrc.anilist.AniListAnimeHttpSource
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.util.parallelFlatMapBlocking
import eu.kanade.tachiyomi.util.parseAs
@ -90,6 +91,22 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
val episodeListUrl = response.request.url
val animeId = episodeListUrl.pathSegments[2]
val responsePage = client.newCall(GET("$baseUrl/anime/watch/$animeId")).execute()
val responsePageString = responsePage.body.string()
var idMal: Number? = null
val idMalIndex = responsePageString.indexOf("\\\"idMal\\\":")
if (idMalIndex != -1) {
val startIndex = idMalIndex + "\\\"idMal\\\":".length
val endIndex = responsePageString.indexOf(',', startIndex)
if (endIndex != -1) {
idMal = responsePageString.substring(startIndex, endIndex).toIntOrNull()
}
}
if (idMal == null) {
Log.e("AniPlay", "idMal not found - responsePageString: $responsePageString")
throw Exception("idMal not found")
}
val responseString = response.body.string()
val episodesArrayString = responseString.split("1:").last()
@ -127,6 +144,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
.addQueryParameter("id", animeId)
.addQueryParameter("ep", episodeNumber.toString())
.addQueryParameter("extras", episodeExtraString)
.addQueryParameter("idMal", idMal.toString())
.build()
val name = parseEpisodeName(episodeNumber.toString(), episode.title)
@ -156,7 +174,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
override suspend fun getVideoList(episode: SEpisode): List<Video> {
val episodeUrl = episode.url.toHttpUrl()
val animeId = episodeUrl.queryParameter("id") ?: return emptyList()
// val episodeNum = episodeUrl.queryParameter("ep") ?: return emptyList()
val idMal = episodeUrl.queryParameter("idMal") ?: return emptyList()
val extras = episodeUrl.queryParameter("extras")
?.let {
try {
@ -193,7 +211,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
extra.episodeNum.toString() // If it has a fractional part, leave it as a float
}
val requestBody = "[\"$animeId\",\"${extra.source}\",\"${extra.episodeId}\",\"$epNum\",\"$language\"]"
val requestBody = "[\"$animeId\",$idMal,\"${extra.source}\",\"${extra.episodeId}\",\"$epNum\",\"$language\"]"
.toRequestBody("application/json".toMediaType())
val params = mapOf(
@ -205,7 +223,6 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
val builder = Uri.parse("$baseUrl/anime/watch").buildUpon()
params.map { (k, v) -> builder.appendQueryParameter(k, v); }
val url = builder.build().toString()
Log.i("AniPlay", "Url: $url")
try {
val request = POST(url, headersWithAction, requestBody)
val response = client.newCall(request).execute()