From de1885c7588a7a89a7a1cefc7738a9b78ce389d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 8 Nov 2024 17:28:22 +0100 Subject: [PATCH 01/11] en/AniPlay: fixed warnings --- .../eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 63efd01b..4db51721 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 @@ -32,6 +32,7 @@ import java.io.IOException import java.text.SimpleDateFormat import java.util.Locale +@Suppress("unused") class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { override val name = "AniPlay" override val lang = "en" @@ -68,7 +69,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { } } - val baseHost: String get() = "${preferences.getString(PREF_DOMAIN_KEY, PREF_DOMAIN_DEFAULT)}" + private val baseHost: String get() = "${preferences.getString(PREF_DOMAIN_KEY, PREF_DOMAIN_DEFAULT)}" /* ====================================== Episode List ====================================== */ -- 2.47.2 From ee700999feb194c42566031c8174dbbf28162193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 8 Nov 2024 17:28:42 +0100 Subject: [PATCH 02/11] en/AniPlay: updated wrong url --- .../eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt | 3 +-- 1 file changed, 1 insertion(+), 2 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 4db51721..c94a803f 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 @@ -222,12 +222,11 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { .toRequestBody("application/json".toMediaType()) val params = mapOf( - "id" to animeId, "host" to extra.source, "ep" to epNum, "type" to language, ) - val builder = Uri.parse("$baseUrl/anime/watch").buildUpon() + val builder = Uri.parse("$baseUrl/anime/watch/$animeId").buildUpon() params.map { (k, v) -> builder.appendQueryParameter(k, v); } val url = builder.build().toString() try { -- 2.47.2 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 03/11] 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++ } -- 2.47.2 From 4851cddb90654956d799a0b89354020ead4faadb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 8 Nov 2024 17:30:42 +0100 Subject: [PATCH 04/11] en/AniPlay: added invalid index safeguard to video server and type name --- .../kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt | 6 ++++++ 1 file changed, 6 insertions(+) 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 6c6daf41..c6e8b9a8 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 @@ -426,11 +426,17 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { } private fun getServerName(value: String): String { val index = PREF_SERVER_ENTRY_VALUES.indexOf(value) + if (index == -1) { + return "Other" + } return PREF_SERVER_ENTRIES[index] } private fun getTypeName(value: String): String { val index = PREF_TYPE_ENTRY_VALUES.indexOf(value) + if (index == -1) { + return "Other" + } return PREF_TYPE_ENTRIES[index] } -- 2.47.2 From 3369add44dd39c93a0707853e511debcb2ace837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Thu, 21 Nov 2024 23:32:12 +0100 Subject: [PATCH 05/11] en/AniPlay: better server names in source list --- .../eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 c6e8b9a8..86db710f 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 @@ -429,7 +429,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { if (index == -1) { return "Other" } - return PREF_SERVER_ENTRIES[index] + return PREF_SERVER_ENTRIES2[index] } private fun getTypeName(value: String): String { @@ -459,6 +459,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { private const val PREF_SERVER_KEY = "server" private val PREF_SERVER_ENTRIES = arrayOf("Kuro (Gogoanime)", "Yuki (HiAnime)", "Yuno (Yugenanime)") + private val PREF_SERVER_ENTRIES2 = arrayOf("Kuro", "Yuki", "Yuno") private val PREF_SERVER_ENTRY_VALUES = arrayOf("kuro", "yuki", "yuno") private const val PREF_SERVER_DEFAULT = "kuro" -- 2.47.2 From c70edd824ce1863390e932d50cd08685a0c0cce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Thu, 21 Nov 2024 23:37:04 +0100 Subject: [PATCH 06/11] en/AniPlay: made some Episode class members nullable --- .../kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt | 4 ++-- .../tachiyomi/animeextension/en/aniplay/AniPlayDto.kt | 6 +++--- 2 files changed, 5 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 86db710f..0b28403f 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 @@ -132,7 +132,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { source = provider.providerId, episodeId = episode.id, episodeNum = episode.number, - hasDub = episode.hasDub, + hasDub = episode.hasDub ?: false, ) episodeExtras[episodeNumber] = existingEpisodeExtras + listOf(episodeExtra) } @@ -161,7 +161,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { else -> "" } val filler = when { - episode.isFiller && isMarkFiller -> " • Filler Episode" + episode.isFiller == true && isMarkFiller -> " • Filler Episode" else -> "" } val scanlator = "Sub$dub$filler" diff --git a/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlayDto.kt b/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlayDto.kt index 0b04370d..d22ca43d 100644 --- a/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlayDto.kt +++ b/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlayDto.kt @@ -13,9 +13,9 @@ data class EpisodeListResponse( data class Episode( val id: String, val number: Float, - val title: String, - val hasDub: Boolean, - val isFiller: Boolean, + val title: String?, + val hasDub: Boolean?, + val isFiller: Boolean?, val img: String?, val description: String?, val createdAt: String?, -- 2.47.2 From cfc44222809e72accf1f4787fbf3e853a5ccc26a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 22 Nov 2024 00:37:46 +0100 Subject: [PATCH 07/11] en/AniPlay: added Timed out message --- .../tachiyomi/animeextension/en/aniplay/AniPlay.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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 0b28403f..8d9e58c7 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 @@ -208,10 +208,13 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { .build() val episodeDataList = extras.parallelFlatMapBlocking { extra -> + var timeouts: Int = 0 + var maxTimeout: Int = 0 val languages = mutableListOf("sub").apply { if (extra.hasDub) add("dub") } languages.map { language -> + maxTimeout += 1 val epNum = if (extra.episodeNum == extra.episodeNum.toInt().toFloat()) { extra.episodeNum.toInt().toString() // If it has no fractional part, convert it to an integer } else { @@ -242,16 +245,25 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { language = language, response = data, ) + } catch (e: java.net.SocketTimeoutException) { + timeouts += 1 + null } catch (e: IOException) { Log.w("AniPlay", "VideoList $url IOException", e) + timeouts = -999 null // Return null to be filtered out } catch (e: Exception) { Log.w("AniPlay", "VideoList $url Exception", e) + timeouts = -999 null // Return null to be filtered out } }.filterNotNull() // Filter out null values due to errors } + if (maxTimeout == timeouts && timeouts != 0) { + throw Exception("Timed out") + } + val videos = episodeDataList.flatMap { episodeData -> val defaultSource = episodeData.response.sources?.firstOrNull { it.quality in listOf("default", "auto") -- 2.47.2 From b3e1a8e7084e3dfbb4e0c969ea6642579f85ba22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 22 Nov 2024 00:38:32 +0100 Subject: [PATCH 08/11] en/AniPlay: performance improvement --- .../tachiyomi/animeextension/en/aniplay/AniPlay.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 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 8d9e58c7..26e8aa39 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 @@ -17,7 +17,8 @@ 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.parallelFlatMap +import eu.kanade.tachiyomi.util.parallelMap import eu.kanade.tachiyomi.util.parseAs import kotlinx.serialization.SerializationException import kotlinx.serialization.encodeToString @@ -207,13 +208,13 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { .add("Next-Action", getHeaderValue(baseHost, NEXT_ACTION_SOURCES_LIST)) .build() - val episodeDataList = extras.parallelFlatMapBlocking { extra -> var timeouts: Int = 0 var maxTimeout: Int = 0 + val episodeDataList = extras.parallelFlatMap { extra -> val languages = mutableListOf("sub").apply { if (extra.hasDub) add("dub") } - languages.map { language -> + languages.parallelMap { language -> maxTimeout += 1 val epNum = if (extra.episodeNum == extra.episodeNum.toInt().toFloat()) { extra.episodeNum.toInt().toString() // If it has no fractional part, convert it to an integer @@ -237,7 +238,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { val response = client.newCall(request).execute() val responseString = response.body.string() - val sourcesString = extractSourcesList(responseString) ?: return@map null + val sourcesString = extractSourcesList(responseString) ?: return@parallelMap null val data = sourcesString.parseAs() EpisodeData( -- 2.47.2 From d9be47193153147e6d5eacd7a217397013440dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 22 Nov 2024 00:42:14 +0100 Subject: [PATCH 09/11] en/AniPlay: removed confusing server names --- .../eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 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 26e8aa39..68453ab7 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 @@ -442,7 +442,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { if (index == -1) { return "Other" } - return PREF_SERVER_ENTRIES2[index] + return PREF_SERVER_ENTRIES[index] } private fun getTypeName(value: String): String { @@ -471,8 +471,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { private const val PREF_DOMAIN_DEFAULT = "aniplaynow.live" private const val PREF_SERVER_KEY = "server" - private val PREF_SERVER_ENTRIES = arrayOf("Kuro (Gogoanime)", "Yuki (HiAnime)", "Yuno (Yugenanime)") - private val PREF_SERVER_ENTRIES2 = arrayOf("Kuro", "Yuki", "Yuno") + private val PREF_SERVER_ENTRIES = arrayOf("Kuro", "Yuki", "Yuno") private val PREF_SERVER_ENTRY_VALUES = arrayOf("kuro", "yuki", "yuno") private const val PREF_SERVER_DEFAULT = "kuro" -- 2.47.2 From 67dcc30deebf4db4193c59f757f18b25e46a7ba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 22 Nov 2024 00:42:55 +0100 Subject: [PATCH 10/11] en/AniPlay: fixed small warning --- .../eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 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 68453ab7..431f6a4e 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 @@ -208,8 +208,8 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { .add("Next-Action", getHeaderValue(baseHost, NEXT_ACTION_SOURCES_LIST)) .build() - var timeouts: Int = 0 - var maxTimeout: Int = 0 + var timeouts = 0 + var maxTimeout = 0 val episodeDataList = extras.parallelFlatMap { extra -> val languages = mutableListOf("sub").apply { if (extra.hasDub) add("dub") -- 2.47.2 From bafdfdb2b2eb57d83db1d36e41dc282e28a45b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Fri, 22 Nov 2024 00:54:05 +0100 Subject: [PATCH 11/11] en/AniPlay: updated versionCode --- src/en/aniplay/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/en/aniplay/build.gradle b/src/en/aniplay/build.gradle index 3dd0fb2b..7119218b 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 = 4 + overrideVersionCode = 5 } apply from: "$rootDir/common.gradle" -- 2.47.2