From fb26d634fc4ef7471cd40da0c03350773c2f4cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Franti=C5=A1ek=20Straka?= Date: Sat, 3 Aug 2024 14:44:42 +0200 Subject: [PATCH] fixed null exception in episodeListRequest --- .../animeextension/en/nineanime/Aniwave.kt | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/en/nineanime/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt b/src/en/nineanime/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt index 90e5d955..1da9da01 100644 --- a/src/en/nineanime/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt +++ b/src/en/nineanime/src/eu/kanade/tachiyomi/animeextension/en/nineanime/Aniwave.kt @@ -138,8 +138,28 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { // ============================== Episodes ============================== override fun episodeListRequest(anime: SAnime): Request { - val id = client.newCall(GET(baseUrl + anime.url)).execute().asJsoup() - .selectFirst("div[data-id]")!!.attr("data-id") + Log.i(name, "episodeListRequest") + var document: Document? = null + try { + val response = client.newCall(GET(baseUrl + anime.url)).execute() + document = response.asJsoup() + } catch (e: Exception) { + Log.e(name, e.toString()) + throw e + } + var id = "" + if (document.location().startsWith("$baseUrl/filter?keyword=")) { // redirected to search + val tip = document.selectFirst("div.tip[data-tip]")?.attr("data-tip") ?: throw Exception("data-tip not found") + val tipParts = tip.split("?") + if (tipParts.count() == 2) { + id = tipParts[0] + } else { + throw Exception("data-tip malformed") + } + } else { + id = document.selectFirst("div[data-id]")?.attr("data-id") ?: throw Exception("ID not found") + } + val vrf = utils.vrfEncrypt(ENCRYPTION_KEY, id) val listHeaders = headers.newBuilder().apply { @@ -386,7 +406,6 @@ class Aniwave : ConfigurableAnimeSource, ParsedAnimeHttpSource() { Log.w(name, e.toString()) } - ListPreference(screen.context).apply { key = PREF_DOMAIN_KEY title = "Preferred domain"