mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
[Sora] added oiya into FDMovies
This commit is contained in:
parent
d9772ce517
commit
a2c0a1a5ec
3 changed files with 53 additions and 16 deletions
|
@ -1,5 +1,5 @@
|
|||
// use an integer for version numbers
|
||||
version = 52
|
||||
version = 53
|
||||
|
||||
|
||||
cloudstream {
|
||||
|
|
|
@ -1388,21 +1388,37 @@ object SoraExtractor : SoraStream() {
|
|||
}
|
||||
|
||||
val request = app.get(url)
|
||||
if(!request.isSuccessful) return
|
||||
if (!request.isSuccessful) return
|
||||
|
||||
val iframe = request.document.select("div#download tbody tr").map { it }
|
||||
.filter { it.select("img").attr("src").contains("gdtot") }.map {
|
||||
Triple(
|
||||
val iframe = request.document.select("div#download tbody tr").map {
|
||||
FDMovieIFrame(
|
||||
it.select("a").attr("href"),
|
||||
it.select("strong.quality").text(),
|
||||
it.select("td:nth-child(4)").text()
|
||||
it.select("td:nth-child(4)").text(),
|
||||
it.select("img").attr("src")
|
||||
)
|
||||
}.filter { it.second.contains("1080p", true) || it.second.contains("4k", true) }
|
||||
Log.i("fdMoviesAPI", "$iframe")
|
||||
iframe.apmap { (link, quality, size) ->
|
||||
}.filter {
|
||||
(it.quality.contains("1080p", true) || it.quality.contains(
|
||||
"4k",
|
||||
true
|
||||
)) && (it.type.contains("gdtot") || it.type.contains("oiya"))
|
||||
}
|
||||
Log.i("hexated", "$iframe")
|
||||
iframe.apmap { (link, quality, size, type) ->
|
||||
val qualities = getFDoviesQuality(quality)
|
||||
val fdLink = bypassFdAds(link)
|
||||
val videoLink = when {
|
||||
type.contains("gdtot") -> {
|
||||
val gdBotLink = extractGdbot(fdLink ?: return@apmap null)
|
||||
val videoLink = extractDrivebot(gdBotLink ?: return@apmap null)
|
||||
extractDrivebot(gdBotLink ?: return@apmap null)
|
||||
}
|
||||
type.contains("oiya") -> {
|
||||
extractOiya(fdLink ?: return@apmap null, qualities)
|
||||
}
|
||||
else -> {
|
||||
return@apmap null
|
||||
}
|
||||
}
|
||||
|
||||
callback.invoke(
|
||||
ExtractorLink(
|
||||
|
@ -1410,7 +1426,7 @@ object SoraExtractor : SoraStream() {
|
|||
"FDMovies [$size]",
|
||||
videoLink ?: return@apmap null,
|
||||
"",
|
||||
getGMoviesQuality(quality)
|
||||
getQualityFromName(qualities)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -1588,6 +1604,13 @@ class StreamM4u: XStreamCdn() {
|
|||
override val mainUrl: String = "https://streamm4u.club"
|
||||
}
|
||||
|
||||
data class FDMovieIFrame(
|
||||
val link: String,
|
||||
val quality: String,
|
||||
val size: String,
|
||||
val type: String,
|
||||
)
|
||||
|
||||
data class UHDBackupUrl(
|
||||
@JsonProperty("url") val url: String? = null,
|
||||
)
|
||||
|
|
|
@ -195,6 +195,12 @@ suspend fun extractDrivebot(url: String): String? {
|
|||
return tryParseJson<DriveBotLink>(result)?.url
|
||||
}
|
||||
|
||||
suspend fun extractOiya(url: String, quality: String): String? {
|
||||
val doc = app.get(url).document
|
||||
return doc.selectFirst("div.wp-block-button a:matches((?i)$quality)")?.attr("href")
|
||||
?: doc.selectFirst("div.wp-block-button a")?.attr("href")
|
||||
}
|
||||
|
||||
suspend fun bypassFdAds(url: String): String? {
|
||||
val res = app.get(url).document
|
||||
val freeRedirect = res.selectFirst("a#link")?.attr("href")
|
||||
|
@ -333,7 +339,7 @@ fun getGMoviesQuality(str: String): Int {
|
|||
return when {
|
||||
str.contains("480P", true) -> Qualities.P480.value
|
||||
str.contains("720P", true) -> Qualities.P720.value
|
||||
str.contains("1080", true) -> Qualities.P1080.value
|
||||
str.contains("1080P", true) -> Qualities.P1080.value
|
||||
str.contains("4K", true) -> Qualities.P2160.value
|
||||
else -> Qualities.Unknown.value
|
||||
}
|
||||
|
@ -349,6 +355,14 @@ fun getSoraQuality(quality: String): Int {
|
|||
}
|
||||
}
|
||||
|
||||
fun getFDoviesQuality(str: String): String {
|
||||
return when {
|
||||
str.contains("1080P", true) -> "1080P"
|
||||
str.contains("4K", true) -> "4K"
|
||||
else -> ""
|
||||
}
|
||||
}
|
||||
|
||||
fun getBaseUrl(url: String): String {
|
||||
return URI(url).let {
|
||||
"${it.scheme}://${it.host}"
|
||||
|
|
Loading…
Reference in a new issue