mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
fixed Gmovies
This commit is contained in:
parent
40163c8a4f
commit
d5bb853103
4 changed files with 46 additions and 13 deletions
|
@ -349,6 +349,47 @@ open class Streamruby : ExtractorApi() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open class Uploadever : ExtractorApi() {
|
||||||
|
override val name = "Uploadever"
|
||||||
|
override val mainUrl = "https://uploadever.in"
|
||||||
|
override val requiresReferer = true
|
||||||
|
|
||||||
|
override suspend fun getUrl(
|
||||||
|
url: String,
|
||||||
|
referer: String?,
|
||||||
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
|
callback: (ExtractorLink) -> Unit
|
||||||
|
) {
|
||||||
|
var res = app.get(url, referer = referer).document
|
||||||
|
val formUrl = res.select("form").attr("action")
|
||||||
|
var formData = res.select("form input").associate { it.attr("name") to it.attr("value") }.filterKeys { it != "go" }
|
||||||
|
.toMutableMap()
|
||||||
|
val formReq = app.post(formUrl, data = formData)
|
||||||
|
|
||||||
|
res = formReq.document
|
||||||
|
val captchaKey = res.select("script[src*=https://www.google.com/recaptcha/api.js?render=]").attr("src").substringAfter("render=")
|
||||||
|
val token = getCaptchaToken(url, captchaKey, referer = "$mainUrl/")
|
||||||
|
formData = res.select("form#down input").associate { it.attr("name") to it.attr("value") }.toMutableMap()
|
||||||
|
formData["adblock_detected"] = "0"
|
||||||
|
formData["referer"] = url
|
||||||
|
res = app.post(formReq.url, data = formData + mapOf("g-recaptcha-response" to "$token"), cookies = formReq.cookies).document
|
||||||
|
val video = res.select("div.download-button a.btn.btn-dow.recaptchav2").attr("href")
|
||||||
|
|
||||||
|
callback.invoke(
|
||||||
|
ExtractorLink(
|
||||||
|
this.name,
|
||||||
|
this.name,
|
||||||
|
video,
|
||||||
|
"",
|
||||||
|
Qualities.Unknown.value,
|
||||||
|
INFER_TYPE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class Streamwish : Filesim() {
|
class Streamwish : Filesim() {
|
||||||
override val name = "Streamwish"
|
override val name = "Streamwish"
|
||||||
override var mainUrl = "https://streamwish.to"
|
override var mainUrl = "https://streamwish.to"
|
||||||
|
|
|
@ -1178,6 +1178,7 @@ object SoraExtractor : SoraStream() {
|
||||||
year: Int? = null,
|
year: Int? = null,
|
||||||
season: Int? = null,
|
season: Int? = null,
|
||||||
episode: Int? = null,
|
episode: Int? = null,
|
||||||
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
callback: (ExtractorLink) -> Unit
|
callback: (ExtractorLink) -> Unit
|
||||||
) {
|
) {
|
||||||
val fixTitle = title.createSlug()
|
val fixTitle = title.createSlug()
|
||||||
|
@ -1201,23 +1202,12 @@ object SoraExtractor : SoraStream() {
|
||||||
it.select("a").attr("href") to it.text()
|
it.select("a").attr("href") to it.text()
|
||||||
}
|
}
|
||||||
})?.filter {
|
})?.filter {
|
||||||
it.first.contains("gdtot") && it.second.contains(Regex("(?i)(4k|1080p)"))
|
it.second.contains(Regex("(?i)(4k|1080p)"))
|
||||||
} ?: return
|
} ?: return
|
||||||
|
|
||||||
iframe.apmap { (iframeLink, title) ->
|
iframe.apmap { (iframeLink, title) ->
|
||||||
val size = Regex("(?i)\\s(\\S+gb|mb)").find(title)?.groupValues?.getOrNull(1)
|
val size = Regex("(?i)\\s(\\S+gb|mb)").find(title)?.groupValues?.getOrNull(1)
|
||||||
val gdBotLink = extractGdbot(iframeLink)
|
loadCustomTagExtractor("[$size]",iframeLink, "$gMoviesAPI/", subtitleCallback, callback, getIndexQuality(title))
|
||||||
val videoLink = extractGdflix(gdBotLink ?: return@apmap null)
|
|
||||||
|
|
||||||
callback.invoke(
|
|
||||||
ExtractorLink(
|
|
||||||
"GMovies",
|
|
||||||
"GMovies [$size]",
|
|
||||||
videoLink ?: return@apmap null,
|
|
||||||
"",
|
|
||||||
getGMoviesQuality(title)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -466,6 +466,7 @@ open class SoraStream : TmdbProvider() {
|
||||||
res.year,
|
res.year,
|
||||||
res.season,
|
res.season,
|
||||||
res.episode,
|
res.episode,
|
||||||
|
subtitleCallback,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
|
@ -27,5 +27,6 @@ class SoraStreamPlugin: Plugin() {
|
||||||
registerExtractorAPI(FilelionsTo())
|
registerExtractorAPI(FilelionsTo())
|
||||||
registerExtractorAPI(Embedwish())
|
registerExtractorAPI(Embedwish())
|
||||||
registerExtractorAPI(Wishfast())
|
registerExtractorAPI(Wishfast())
|
||||||
|
registerExtractorAPI(Uploadever())
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue