en/AniPlay: better list parsing

This commit is contained in:
Josef František Straka 2024-11-08 17:30:14 +01:00
parent ee700999fe
commit 03dcdc75f3

View file

@ -234,8 +234,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
val response = client.newCall(request).execute() val response = client.newCall(request).execute()
val responseString = response.body.string() val responseString = response.body.string()
val sourcesString = responseString.split("1:").last() val sourcesString = extractSourcesList(responseString) ?: return@map null
if (sourcesString.startsWith("null")) return@map null
val data = sourcesString.parseAs<VideoSourceResponse>() val data = sourcesString.parseAs<VideoSourceResponse>()
EpisodeData( EpisodeData(
@ -294,7 +293,15 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
} }
private fun extractEpisodeList(input: String): String? { private fun extractEpisodeList(input: String): String? {
val startMarker = "1:[" return extractList(input, '[', ']')
}
private fun extractSourcesList(input: String): String? {
return extractList(input, '{', '}')
}
private fun extractList(input: String, bracket1: Char, bracket2: Char): String? {
val startMarker = "1:$bracket1"
val list1Index = input.indexOf(startMarker) val list1Index = input.indexOf(startMarker)
if (list1Index == -1) return null if (list1Index == -1) return null
@ -304,8 +311,8 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
while (endIndex < input.length && bracketCount > 0) { while (endIndex < input.length && bracketCount > 0) {
when (input[endIndex]) { when (input[endIndex]) {
'[' -> bracketCount++ bracket1 -> bracketCount++
']' -> bracketCount-- bracket2 -> bracketCount--
} }
endIndex++ endIndex++
} }