From 71b75b4ce9cb11a4ce2edf8a01593dc22e360747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= <71689727+JosefFStraka@users.noreply.github.com> Date: Wed, 25 Sep 2024 15:18:26 +0200 Subject: [PATCH] Aniplay (#276) * Fixed to work with new aniplay server mechanism * Version bump --- src/en/aniplay/build.gradle | 2 +- .../animeextension/en/aniplay/AniPlay.kt | 74 ++++++++++++++----- .../animeextension/en/aniplay/AniPlayDto.kt | 1 + 3 files changed, 59 insertions(+), 18 deletions(-) diff --git a/src/en/aniplay/build.gradle b/src/en/aniplay/build.gradle index 64a3a7ab..33076e1d 100644 --- a/src/en/aniplay/build.gradle +++ b/src/en/aniplay/build.gradle @@ -2,7 +2,7 @@ ext { extName = 'AniPlay' extClass = '.AniPlay' themePkg = 'anilist' - overrideVersionCode = 2 + overrideVersionCode = 3 } apply from: "$rootDir/common.gradle" 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