From 6f1e671b7d5e878a4f1c66e799c52d9683506f89 Mon Sep 17 00:00:00 2001 From: hexated Date: Wed, 30 Nov 2022 05:18:22 +0700 Subject: [PATCH] added Cfk into Samehadaku --- Samehadaku/build.gradle.kts | 2 +- .../src/main/kotlin/com/hexated/Samehadaku.kt | 38 +++++++++++++++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/Samehadaku/build.gradle.kts b/Samehadaku/build.gradle.kts index a5fdbda2..dc0e2c9a 100644 --- a/Samehadaku/build.gradle.kts +++ b/Samehadaku/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 2 +version = 3 cloudstream { diff --git a/Samehadaku/src/main/kotlin/com/hexated/Samehadaku.kt b/Samehadaku/src/main/kotlin/com/hexated/Samehadaku.kt index 47f64f50..ed9ef82e 100644 --- a/Samehadaku/src/main/kotlin/com/hexated/Samehadaku.kt +++ b/Samehadaku/src/main/kotlin/com/hexated/Samehadaku.kt @@ -6,8 +6,10 @@ import com.lagradost.cloudstream3.LoadResponse.Companion.addAniListId import com.lagradost.cloudstream3.LoadResponse.Companion.addMalId import com.lagradost.cloudstream3.LoadResponse.Companion.addTrailer import com.lagradost.cloudstream3.extractors.XStreamCdn +import com.lagradost.cloudstream3.network.CloudflareKiller import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.loadExtractor +import org.jsoup.nodes.Document import org.jsoup.nodes.Element class Samehadaku : MainAPI() { @@ -46,6 +48,16 @@ class Samehadaku : MainAPI() { "$mainUrl/" to "HomePage", ) + private val interceptor = CloudflareKiller() + + private suspend fun request(url: String, document: Document): Document { + return if(document.select("title").text() == "Just a moment...") { + app.get(url, interceptor = interceptor).document + } else { + document + } + } + override suspend fun getMainPage( page: Int, request: MainPageRequest @@ -53,8 +65,9 @@ class Samehadaku : MainAPI() { val items = mutableListOf() if (request.name != "Episode Terbaru" && page <= 1) { - val doc = app.get(request.data).document - doc.select("div.widget_senction").forEach { block -> + var document = app.get(request.data).document + document = request(request.data, document) + document.select("div.widget_senction").forEach { block -> val header = block.selectFirst("div.widget-title h3")?.ownText() ?: return@forEach val home = block.select("div.animepost").mapNotNull { it.toSearchResult() @@ -64,8 +77,9 @@ class Samehadaku : MainAPI() { } if (request.name == "Episode Terbaru") { - val home = - app.get(request.data + page).document.selectFirst("div.post-show")?.select("ul li") + var document = app.get(request.data + page).document + document = request(request.data + page, document) + val home = document.selectFirst("div.post-show")?.select("ul li") ?.mapNotNull { it.toSearchResult() } ?: throw ErrorLoadingException("No Media Found") @@ -84,12 +98,15 @@ class Samehadaku : MainAPI() { return newAnimeSearchResponse(title, href ?: return null, TvType.Anime) { this.posterUrl = posterUrl addSub(epNum) + posterHeaders = interceptor.getCookieHeaders(url).toMap() } } override suspend fun search(query: String): List { - val document = app.get("$mainUrl/?s=$query").document + val link = "$mainUrl/?s=$query" + var document = app.get(link).document + document = request(link, document) return document.select("main#main div.animepost").mapNotNull { it.toSearchResult() } @@ -99,10 +116,13 @@ class Samehadaku : MainAPI() { val fixUrl = if (url.contains("/anime/")) { url } else { - app.get(url).document.selectFirst("div.nvs.nvsc a")?.attr("href") + var document = app.get(url).document + document = request(url, document) + document.selectFirst("div.nvs.nvsc a")?.attr("href") } - val document = app.get(fixUrl ?: return null).document + var document = app.get(fixUrl ?: return null).document + document = request(fixUrl, document) val title = document.selectFirst("h1.entry-title")?.text()?.removeSurrounding("Nonton", "Subtitle Indonesia")?.trim() ?: return null val poster = document.selectFirst("div.thumb > img")?.attr("src") val tags = document.select("div.genre-info > a").map { it.text() } @@ -148,6 +168,7 @@ class Samehadaku : MainAPI() { addTrailer(trailer) this.tags = tags this.recommendations = recommendations + posterHeaders = interceptor.getCookieHeaders(url).toMap() } } @@ -159,7 +180,8 @@ class Samehadaku : MainAPI() { callback: (ExtractorLink) -> Unit ): Boolean { - val document = app.get(data).document + var document = app.get(data).document + document = request(data, document) val sources = ArrayList() document.select("div#server ul li div").apmap {