From 03dcdc75f3adbd76b5ba57eee2095c6e9d13f6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 8 Nov 2024 17:30:14 +0100 Subject: [PATCH] en/AniPlay: better list parsing --- .../animeextension/en/aniplay/AniPlay.kt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt b/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt index c94a803f..6c6daf41 100644 --- a/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt +++ b/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt @@ -234,8 +234,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { val response = client.newCall(request).execute() val responseString = response.body.string() - val sourcesString = responseString.split("1:").last() - if (sourcesString.startsWith("null")) return@map null + val sourcesString = extractSourcesList(responseString) ?: return@map null val data = sourcesString.parseAs() EpisodeData( @@ -294,7 +293,15 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { } 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) if (list1Index == -1) return null @@ -304,8 +311,8 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { while (endIndex < input.length && bracketCount > 0) { when (input[endIndex]) { - '[' -> bracketCount++ - ']' -> bracketCount-- + bracket1 -> bracketCount++ + bracket2 -> bracketCount-- } endIndex++ }