From 37e87fadbce2d534668a12aca93c17d2708de6f0 Mon Sep 17 00:00:00 2001 From: hexated Date: Sun, 22 Oct 2023 22:14:31 +0700 Subject: [PATCH] fixed #339 --- DramaSerial/build.gradle.kts | 2 +- .../main/kotlin/com/hexated/DramaSerial.kt | 67 ++++++++++++++++--- .../kotlin/com/hexated/DramaSerialPlugin.kt | 1 + 3 files changed, 61 insertions(+), 9 deletions(-) diff --git a/DramaSerial/build.gradle.kts b/DramaSerial/build.gradle.kts index f198565b..e00ab652 100644 --- a/DramaSerial/build.gradle.kts +++ b/DramaSerial/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 4 +version = 5 cloudstream { diff --git a/DramaSerial/src/main/kotlin/com/hexated/DramaSerial.kt b/DramaSerial/src/main/kotlin/com/hexated/DramaSerial.kt index 98047d9f..b4e11f74 100644 --- a/DramaSerial/src/main/kotlin/com/hexated/DramaSerial.kt +++ b/DramaSerial/src/main/kotlin/com/hexated/DramaSerial.kt @@ -1,13 +1,18 @@ package com.hexated +import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.extractors.Filesim +import com.lagradost.cloudstream3.utils.AppUtils import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.INFER_TYPE +import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.cloudstream3.utils.loadExtractor import org.jsoup.nodes.Element class DramaSerial : MainAPI() { - override var mainUrl = "https://dramaserial.sbs" + override var mainUrl = "https://tv1.dramaserial.id" + private var serverUrl = "https://juraganfilm.info" override var name = "DramaSerial" override val hasMainPage = true override var lang = "id" @@ -101,6 +106,31 @@ class DramaSerial : MainAPI() { } } + private suspend fun invokeGetbk( + url: String, + callback: (ExtractorLink) -> Unit + ) { + val script = app.get( + url, + referer = "$serverUrl/" + ).document.selectFirst("script:containsData(sources)")?.data() ?: return + + val json = "\"sources\":\\s*\\[(.*)]".toRegex().find(script)?.groupValues?.get(1) + AppUtils.tryParseJson>("[$json]")?.map { + callback.invoke( + ExtractorLink( + "Getbk", + "Getbk", + it.file ?: return@map, + "$serverUrl/", + getQualityFromName(it.label), + INFER_TYPE, + ) + ) + } + + } + override suspend fun loadLinks( data: String, isCasting: Boolean, @@ -109,22 +139,43 @@ class DramaSerial : MainAPI() { ): Boolean { val document = app.get(data).document - val iframe = document.select("div.gmr-server-wrap iframe").attr("src") - app.get(iframe, referer = "$mainUrl/").document.select("div#header-slider ul li").apmap { mLink -> - mLink.attr("onclick").substringAfter("frame('").substringBefore("')").let { iLink -> - val uLink = app.get(iLink, referer = iframe).document.select("script").find { it.data().contains("(document).ready") }?.data()?.substringAfter("replace(\"")?.substringBefore("\");") ?: return@apmap null - val link = app.get(uLink, referer = iLink).document.selectFirst("iframe")?.attr("src") ?: return@apmap null - loadExtractor(fixUrl(link), "https://juraganfilm.info/", subtitleCallback, callback) + val iframe = document.select("iframe[name=juraganfilm]").attr("src") + app.get(iframe, referer = "$mainUrl/").document.select("div#header-slider ul li") + .apmap { mLink -> + mLink.attr("onclick").substringAfter("frame('").substringBefore("')").let { iLink -> + val iMovie = iLink.substringAfter("movie=").substringBefore("&") + val mIframe = iLink.substringAfter("iframe=") + val iUrl = "$serverUrl/stream/$mIframe.php?movie=$iMovie" + if(mIframe == "getbk") { + invokeGetbk(iUrl, callback) + } else { + val link = app.get( + iUrl, + referer = "$serverUrl/" + ).document.selectFirst("iframe")?.attr("src") ?: return@apmap null + loadExtractor(fixUrl(link), "$serverUrl/", subtitleCallback, callback) + } + } } - } return true } + private data class Sources( + @JsonProperty("file") val file: String? = null, + @JsonProperty("label") val label: String? = null, + ) + + } class Bk21 : Filesim() { override val name = "Bk21" override var mainUrl = "https://bk21.net" } + +class Lkc21 : Filesim() { + override val name = "Lkc21" + override var mainUrl = "https://lkc21.net" +} diff --git a/DramaSerial/src/main/kotlin/com/hexated/DramaSerialPlugin.kt b/DramaSerial/src/main/kotlin/com/hexated/DramaSerialPlugin.kt index 5d5de498..afb43ef7 100644 --- a/DramaSerial/src/main/kotlin/com/hexated/DramaSerialPlugin.kt +++ b/DramaSerial/src/main/kotlin/com/hexated/DramaSerialPlugin.kt @@ -11,5 +11,6 @@ class DramaSerialPlugin: Plugin() { // All providers should be added in this manner. Please don't edit the providers list directly. registerMainAPI(DramaSerial()) registerExtractorAPI(Bk21()) + registerExtractorAPI(Lkc21()) } } \ No newline at end of file