From 064d08f791d6c7b3ce3ff33e374091d6fd36785e Mon Sep 17 00:00:00 2001 From: Dark25 Date: Wed, 21 Aug 2024 21:37:54 +0200 Subject: [PATCH] Fix(en/Hikari): The sub or dub fix has been modified --- src/all/hikari/build.gradle | 2 +- .../animeextension/all/hikari/Hikari.kt | 33 ++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/all/hikari/build.gradle b/src/all/hikari/build.gradle index c97c3cbb..490edc08 100644 --- a/src/all/hikari/build.gradle +++ b/src/all/hikari/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Hikari' extClass = '.Hikari' - extVersionCode = 6 + extVersionCode = 7 } apply from: "$rootDir/common.gradle" diff --git a/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt b/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt index 325bbcb2..cc35e0cb 100644 --- a/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt +++ b/src/all/hikari/src/eu/kanade/tachiyomi/animeextension/all/hikari/Hikari.kt @@ -296,8 +296,39 @@ class Hikari : ParsedAnimeHttpSource(), ConfigurableAnimeSource { Pair(iframeSrc, name) }.filter { it.first.isNotEmpty() } } - val embedUrls = subEmbedUrls + dubEmbedUrls + val sdEmbedUrls = html.select(".servers-sub.\\&.dub div.item.server-item").flatMap { item -> + val name = item.text().trim() + " (Sub + Dub)" + val onClick = item.selectFirst("a")?.attr("onclick") + if (onClick == null) { + Log.e("Hikari", "onClick attribute is null for item: $item") + return@flatMap emptyList>() + } + + val match = embedRegex.find(onClick)?.groupValues + if (match == null) { + Log.e("Hikari", "No match found for onClick: $onClick") + return@flatMap emptyList>() + } + + val url = "$baseUrl/ajax/embed/${match[1]}/${match[2]}/${match[3]}" + val iframeList = client.newCall( + GET(url, headers), + ).execute().parseAs>() + + iframeList.map { + val iframeSrc = Jsoup.parseBodyFragment(it).selectFirst("iframe")?.attr("src") + if (iframeSrc == null) { + Log.e("Hikari", "iframe src is null for URL: $url") + return@map Pair("", "") + } + Pair(iframeSrc, name) + }.filter { it.first.isNotEmpty() } + } + + val embedUrls = sdEmbedUrls.ifEmpty { + subEmbedUrls + dubEmbedUrls + } return embedUrls.parallelCatchingFlatMapBlocking { getVideosFromEmbed(it.first, it.second) }