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] 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")