From 824f7865a982ac2fa1fb705cfad5bba144febfb4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= <strakjos@fel.cvut.cz>
Date: Wed, 9 Apr 2025 19:40:58 +0200
Subject: [PATCH] video headers and minor changes

---
 .../animeextension/en/aniplay/AniPlay.kt      | 57 ++++++++-----------
 1 file changed, 25 insertions(+), 32 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 de91ca66..d67d4714 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
@@ -246,9 +246,9 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
         val response = client.newCall(request).execute()
 
         val responseString = response.body.string()
-        val sourcesString = extractSourcesList(responseString) ?: return emptyList()
-        Log.i("AniPlay", "${extra.source} $language -> $sourcesString")
         try {
+            val sourcesString = extractSourcesList(responseString) ?: throw Exception("extractSourcesList null")
+            Log.i("AniPlay", "${extra.source} $language -> $sourcesString")
             return processEpisodeData(
                 EpisodeData(
                     source = extra.source,
@@ -262,14 +262,6 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
         }
     }
 
-    private fun getProxiedUrl(originalUrl: String, serverName: String, referer: String?): String {
-        return when (serverName) {
-            "Yuki" -> "$PROXY_URL/yukiprox?url=$originalUrl"
-            "Pahe" -> "$PROXY_URL/fetch?url=$originalUrl?ref=$referer"
-            else -> return originalUrl
-        }
-    }
-
     private fun processEpisodeData(episodeData: EpisodeData): List<Video> {
         val defaultSource = episodeData.response.sources?.firstOrNull {
             it.quality in listOf("default", "auto")
@@ -292,26 +284,29 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
         }
 
         try {
-            return when (serverName) {
+            when (serverName) {
                 // yuki
                 PREF_SERVER_ENTRIES[1] -> {
-                    // proxy wont work due to aniplay using /m3u8-proxy for playlists and /ts-proxy for segments, not sure how to tell that to aniyomi
-                    // val url = "https://yukiprox.aniplaynow.live/m3u8-proxy?url=${defaultSource.url}&headers={\"Referer\":\"https://megacloud.club/\"}"
-
-                    //and using raw server is kinda cheap
-//                    playlistUtils.extractFromHls(
-//                        playlistUrl = defaultSource.url,
-//                        videoNameGen = { quality -> "$serverName - $quality - $typeName" },
-//                        subtitleList = subtitles,
-//                        masterHeadersGen = { baseHeaders: Headers, _: String ->
-//                            baseHeaders.newBuilder().apply {
-//                                set("Accept", "*/*")
-//                                set("Origin", "https://megacloud.club")
-//                                set("Referer", "https://megacloud.club/")
-//                            }.build()
-//                        },
-//                    )
-                    emptyList()
+                    val url = "https://yukiprox.aniplaynow.live/m3u8-proxy?url=${defaultSource.url}&headers={\"Referer\":\"https://megacloud.club/\"}"
+                    return playlistUtils.extractFromHls(
+                        playlistUrl = url,
+                        videoNameGen = { quality -> "$serverName - $quality - $typeName" },
+                        subtitleList = subtitles,
+                        masterHeadersGen = { baseHeaders: Headers, _: String ->
+                            baseHeaders.newBuilder().apply {
+                                set("Accept", "*/*")
+                                set("Origin", baseUrl)
+                                set("Referer", "$baseUrl/")
+                            }.build()
+                        },
+                        videoHeadersGen = { baseHeaders: Headers, _, _: String ->
+                            baseHeaders.newBuilder().apply {
+                                set("Accept", "*/*")
+                                set("Origin", baseUrl)
+                                set("Referer", "$baseUrl/")
+                            }.build()
+                        },
+                    )
                 }
                 // pahe
                 PREF_SERVER_ENTRIES[2] -> {
@@ -321,10 +316,10 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
                         set("Origin", baseUrl)
                         set("Referer", "$baseUrl/")
                     }.build()
-                    listOf(Video(url, "$serverName - Video - $typeName", url, headers, subtitles, listOf()))
+                    return listOf(Video(url, "$serverName - Video - $typeName", url, headers, subtitles, listOf()))
                 }
                 else -> {
-                    emptyList()
+                    throw Exception("Unknown serverName: $serverName (${episodeData.source})")
                 }
             }
         } catch (e: Exception) {
@@ -598,8 +593,6 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
         private const val NEXT_ACTION_EPISODE_LIST = "NEXT_ACTION_EPISODE_LIST"
         private const val NEXT_ACTION_SOURCES_LIST = "NEXT_ACTION_SOURCES_LIST"
 
-        private const val PROXY_URL = "https://prox.aniplaynow.live"
-
         private const val HEADERS_TIMEOUT_MINUTES = 60
 
         private val DATE_FORMATTER = SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH)