From f2804681744265b2309ca8a093801311ac4ae947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Tue, 24 Sep 2024 22:42:38 +0200 Subject: [PATCH] Fixed to work with new aniplay server mechanism --- .../animeextension/en/aniplay/AniPlay.kt | 74 ++++++++++++++----- .../animeextension/en/aniplay/AniPlayDto.kt | 1 + 2 files changed, 58 insertions(+), 17 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 661201f9..d8ba1518 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 @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.animeextension.en.aniplay import android.app.Application +import android.net.Uri import android.util.Base64 import android.util.Log import android.widget.Toast @@ -14,7 +15,6 @@ 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 @@ -73,14 +73,27 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { val httpUrl = anime.url.toHttpUrl() val animeId = httpUrl.pathSegments[2] - return GET("$baseUrl/api/anime/episode/$animeId") + val requestBody = "[\"${animeId}\",true,false]" + .toRequestBody("text/plain;charset=UTF-8".toMediaType()) + + val headersWithAction = + headers.newBuilder() + // next.js stuff I guess + .add("Next-Action", HEADER_NEXT_ACTION_EPISODE_LIST_VALUE) + .build() + + return POST(url = "$baseUrl/anime/info/$animeId", headersWithAction, requestBody) } override fun episodeListParse(response: Response): List { val isMarkFiller = preferences.getBoolean(PREF_MARK_FILLER_EPISODE_KEY, PREF_MARK_FILLER_EPISODE_DEFAULT) val episodeListUrl = response.request.url - val animeId = episodeListUrl.pathSegments[3] - val providers = response.parseAs>() + val animeId = episodeListUrl.pathSegments[2] + + val responseString = response.body.string() + val episodesArrayString = responseString.split("1:").last() + + val providers = episodesArrayString.parseAs>() val episodes = mutableMapOf() val episodeExtras = mutableMapOf>() @@ -94,6 +107,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { val episodeExtra = EpisodeExtra( source = provider.providerId, episodeId = episode.id, + episodeNum = episode.number, hasDub = episode.hasDub, ) episodeExtras[episodeNumber] = existingEpisodeExtras + listOf(episodeExtra) @@ -142,7 +156,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { override suspend fun getVideoList(episode: SEpisode): List