mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
fixed #339
This commit is contained in:
parent
464046aaea
commit
37e87fadbc
3 changed files with 61 additions and 9 deletions
|
@ -1,5 +1,5 @@
|
||||||
// use an integer for version numbers
|
// use an integer for version numbers
|
||||||
version = 4
|
version = 5
|
||||||
|
|
||||||
|
|
||||||
cloudstream {
|
cloudstream {
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
package com.hexated
|
package com.hexated
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
import com.lagradost.cloudstream3.*
|
import com.lagradost.cloudstream3.*
|
||||||
import com.lagradost.cloudstream3.extractors.Filesim
|
import com.lagradost.cloudstream3.extractors.Filesim
|
||||||
|
import com.lagradost.cloudstream3.utils.AppUtils
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorLink
|
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 com.lagradost.cloudstream3.utils.loadExtractor
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
|
|
||||||
class DramaSerial : MainAPI() {
|
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 var name = "DramaSerial"
|
||||||
override val hasMainPage = true
|
override val hasMainPage = true
|
||||||
override var lang = "id"
|
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<ArrayList<Sources>>("[$json]")?.map {
|
||||||
|
callback.invoke(
|
||||||
|
ExtractorLink(
|
||||||
|
"Getbk",
|
||||||
|
"Getbk",
|
||||||
|
it.file ?: return@map,
|
||||||
|
"$serverUrl/",
|
||||||
|
getQualityFromName(it.label),
|
||||||
|
INFER_TYPE,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun loadLinks(
|
override suspend fun loadLinks(
|
||||||
data: String,
|
data: String,
|
||||||
isCasting: Boolean,
|
isCasting: Boolean,
|
||||||
|
@ -109,22 +139,43 @@ class DramaSerial : MainAPI() {
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val document = app.get(data).document
|
val document = app.get(data).document
|
||||||
|
|
||||||
val iframe = document.select("div.gmr-server-wrap iframe").attr("src")
|
val iframe = document.select("iframe[name=juraganfilm]").attr("src")
|
||||||
app.get(iframe, referer = "$mainUrl/").document.select("div#header-slider ul li").apmap { mLink ->
|
app.get(iframe, referer = "$mainUrl/").document.select("div#header-slider ul li")
|
||||||
mLink.attr("onclick").substringAfter("frame('").substringBefore("')").let { iLink ->
|
.apmap { mLink ->
|
||||||
val uLink = app.get(iLink, referer = iframe).document.select("script").find { it.data().contains("(document).ready") }?.data()?.substringAfter("replace(\"")?.substringBefore("\");") ?: return@apmap null
|
mLink.attr("onclick").substringAfter("frame('").substringBefore("')").let { iLink ->
|
||||||
val link = app.get(uLink, referer = iLink).document.selectFirst("iframe")?.attr("src") ?: return@apmap null
|
val iMovie = iLink.substringAfter("movie=").substringBefore("&")
|
||||||
loadExtractor(fixUrl(link), "https://juraganfilm.info/", subtitleCallback, callback)
|
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
|
return true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private data class Sources(
|
||||||
|
@JsonProperty("file") val file: String? = null,
|
||||||
|
@JsonProperty("label") val label: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Bk21 : Filesim() {
|
class Bk21 : Filesim() {
|
||||||
override val name = "Bk21"
|
override val name = "Bk21"
|
||||||
override var mainUrl = "https://bk21.net"
|
override var mainUrl = "https://bk21.net"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Lkc21 : Filesim() {
|
||||||
|
override val name = "Lkc21"
|
||||||
|
override var mainUrl = "https://lkc21.net"
|
||||||
|
}
|
||||||
|
|
|
@ -11,5 +11,6 @@ class DramaSerialPlugin: Plugin() {
|
||||||
// All providers should be added in this manner. Please don't edit the providers list directly.
|
// All providers should be added in this manner. Please don't edit the providers list directly.
|
||||||
registerMainAPI(DramaSerial())
|
registerMainAPI(DramaSerial())
|
||||||
registerExtractorAPI(Bk21())
|
registerExtractorAPI(Bk21())
|
||||||
|
registerExtractorAPI(Lkc21())
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue