mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Update Voe.kt (#1062)
This commit is contained in:
parent
138e1a1f0e
commit
ff1ffbeb83
2 changed files with 66 additions and 10 deletions
|
@ -1,13 +1,37 @@
|
||||||
package com.lagradost.cloudstream3.extractors
|
package com.lagradost.cloudstream3.extractors
|
||||||
|
|
||||||
|
import android.util.Base64
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
import com.lagradost.cloudstream3.SubtitleFile
|
import com.lagradost.cloudstream3.SubtitleFile
|
||||||
import com.lagradost.cloudstream3.app
|
import com.lagradost.cloudstream3.app
|
||||||
|
import com.lagradost.cloudstream3.utils.AppUtils
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorApi
|
import com.lagradost.cloudstream3.utils.ExtractorApi
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorLink
|
import com.lagradost.cloudstream3.utils.ExtractorLink
|
||||||
import com.lagradost.cloudstream3.utils.M3u8Helper
|
import com.lagradost.cloudstream3.utils.M3u8Helper
|
||||||
|
|
||||||
class Tubeless : Voe() {
|
class Tubeless : Voe() {
|
||||||
override var mainUrl = "https://tubelessceliolymph.com"
|
override val name = "Tubeless"
|
||||||
|
override val mainUrl = "https://tubelessceliolymph.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
class Simpulumlamerop : Voe() {
|
||||||
|
override val name = "Simplum"
|
||||||
|
override var mainUrl = "https://simpulumlamerop.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
class Urochsunloath : Voe() {
|
||||||
|
override val name = "Uroch"
|
||||||
|
override var mainUrl = "https://urochsunloath.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
class Yipsu : Voe() {
|
||||||
|
override val name = "Yipsu"
|
||||||
|
override var mainUrl = "https://yip.su"
|
||||||
|
}
|
||||||
|
|
||||||
|
class MetaGnathTuggers : Voe() {
|
||||||
|
override val name = "Metagnath"
|
||||||
|
override val mainUrl = "https://metagnathtuggers.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
open class Voe : ExtractorApi() {
|
open class Voe : ExtractorApi() {
|
||||||
|
@ -15,6 +39,9 @@ open class Voe : ExtractorApi() {
|
||||||
override val mainUrl = "https://voe.sx"
|
override val mainUrl = "https://voe.sx"
|
||||||
override val requiresReferer = true
|
override val requiresReferer = true
|
||||||
|
|
||||||
|
private val linkRegex = "(http|https)://([\\w_-]+(?:\\.[\\w_-]+)+)([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])".toRegex()
|
||||||
|
private val base64Regex = Regex("'.*'")
|
||||||
|
|
||||||
override suspend fun getUrl(
|
override suspend fun getUrl(
|
||||||
url: String,
|
url: String,
|
||||||
referer: String?,
|
referer: String?,
|
||||||
|
@ -25,12 +52,33 @@ open class Voe : ExtractorApi() {
|
||||||
val script = res.select("script").find { it.data().contains("sources =") }?.data()
|
val script = res.select("script").find { it.data().contains("sources =") }?.data()
|
||||||
val link = Regex("[\"']hls[\"']:\\s*[\"'](.*)[\"']").find(script ?: return)?.groupValues?.get(1)
|
val link = Regex("[\"']hls[\"']:\\s*[\"'](.*)[\"']").find(script ?: return)?.groupValues?.get(1)
|
||||||
|
|
||||||
|
val videoLinks = mutableListOf<String>()
|
||||||
|
|
||||||
|
if (!link.isNullOrBlank()) {
|
||||||
|
videoLinks.add(
|
||||||
|
when {
|
||||||
|
linkRegex.matches(link) -> link
|
||||||
|
else -> String(Base64.decode(link, Base64.DEFAULT))
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
val link2 = base64Regex.find(script)?.value ?: return
|
||||||
|
val decoded = Base64.decode(link2, Base64.DEFAULT).toString()
|
||||||
|
val videoLinkDTO = AppUtils.parseJson<WcoSources>(decoded)
|
||||||
|
videoLinkDTO.let { videoLinks.add(it.toString()) }
|
||||||
|
}
|
||||||
|
|
||||||
|
videoLinks.forEach { videoLink ->
|
||||||
M3u8Helper.generateM3u8(
|
M3u8Helper.generateM3u8(
|
||||||
name,
|
name,
|
||||||
link ?: return,
|
videoLink,
|
||||||
"$mainUrl/",
|
"$mainUrl/",
|
||||||
headers = mapOf("Origin" to "$mainUrl/")
|
headers = mapOf("Origin" to "$mainUrl/")
|
||||||
).forEach(callback)
|
).forEach(callback)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
data class WcoSources(
|
||||||
|
@JsonProperty("VideoLinkDTO") val VideoLinkDTO: String,
|
||||||
|
)
|
||||||
}
|
}
|
|
@ -83,6 +83,7 @@ import com.lagradost.cloudstream3.extractors.Maxstream
|
||||||
import com.lagradost.cloudstream3.extractors.Mcloud
|
import com.lagradost.cloudstream3.extractors.Mcloud
|
||||||
import com.lagradost.cloudstream3.extractors.Megacloud
|
import com.lagradost.cloudstream3.extractors.Megacloud
|
||||||
import com.lagradost.cloudstream3.extractors.Meownime
|
import com.lagradost.cloudstream3.extractors.Meownime
|
||||||
|
import com.lagradost.cloudstream3.extractors.MetaGnathTuggers
|
||||||
import com.lagradost.cloudstream3.extractors.Minoplres
|
import com.lagradost.cloudstream3.extractors.Minoplres
|
||||||
import com.lagradost.cloudstream3.extractors.MixDrop
|
import com.lagradost.cloudstream3.extractors.MixDrop
|
||||||
import com.lagradost.cloudstream3.extractors.MixDropBz
|
import com.lagradost.cloudstream3.extractors.MixDropBz
|
||||||
|
@ -139,6 +140,7 @@ import com.lagradost.cloudstream3.extractors.Sbspeed
|
||||||
import com.lagradost.cloudstream3.extractors.Sbthe
|
import com.lagradost.cloudstream3.extractors.Sbthe
|
||||||
import com.lagradost.cloudstream3.extractors.Sendvid
|
import com.lagradost.cloudstream3.extractors.Sendvid
|
||||||
import com.lagradost.cloudstream3.extractors.ShaveTape
|
import com.lagradost.cloudstream3.extractors.ShaveTape
|
||||||
|
import com.lagradost.cloudstream3.extractors.Simpulumlamerop
|
||||||
import com.lagradost.cloudstream3.extractors.Solidfiles
|
import com.lagradost.cloudstream3.extractors.Solidfiles
|
||||||
import com.lagradost.cloudstream3.extractors.Ssbstream
|
import com.lagradost.cloudstream3.extractors.Ssbstream
|
||||||
import com.lagradost.cloudstream3.extractors.StreamM4u
|
import com.lagradost.cloudstream3.extractors.StreamM4u
|
||||||
|
@ -175,6 +177,7 @@ import com.lagradost.cloudstream3.extractors.UpstreamExtractor
|
||||||
import com.lagradost.cloudstream3.extractors.Uqload
|
import com.lagradost.cloudstream3.extractors.Uqload
|
||||||
import com.lagradost.cloudstream3.extractors.Uqload1
|
import com.lagradost.cloudstream3.extractors.Uqload1
|
||||||
import com.lagradost.cloudstream3.extractors.Uqload2
|
import com.lagradost.cloudstream3.extractors.Uqload2
|
||||||
|
import com.lagradost.cloudstream3.extractors.Urochsunloath
|
||||||
import com.lagradost.cloudstream3.extractors.Userload
|
import com.lagradost.cloudstream3.extractors.Userload
|
||||||
import com.lagradost.cloudstream3.extractors.Userscloud
|
import com.lagradost.cloudstream3.extractors.Userscloud
|
||||||
import com.lagradost.cloudstream3.extractors.Uservideo
|
import com.lagradost.cloudstream3.extractors.Uservideo
|
||||||
|
@ -208,6 +211,7 @@ import com.lagradost.cloudstream3.extractors.Watchx
|
||||||
import com.lagradost.cloudstream3.extractors.WcoStream
|
import com.lagradost.cloudstream3.extractors.WcoStream
|
||||||
import com.lagradost.cloudstream3.extractors.Wibufile
|
import com.lagradost.cloudstream3.extractors.Wibufile
|
||||||
import com.lagradost.cloudstream3.extractors.XStreamCdn
|
import com.lagradost.cloudstream3.extractors.XStreamCdn
|
||||||
|
import com.lagradost.cloudstream3.extractors.Yipsu
|
||||||
import com.lagradost.cloudstream3.extractors.YourUpload
|
import com.lagradost.cloudstream3.extractors.YourUpload
|
||||||
import com.lagradost.cloudstream3.extractors.YoutubeExtractor
|
import com.lagradost.cloudstream3.extractors.YoutubeExtractor
|
||||||
import com.lagradost.cloudstream3.extractors.YoutubeMobileExtractor
|
import com.lagradost.cloudstream3.extractors.YoutubeMobileExtractor
|
||||||
|
@ -890,7 +894,11 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
|
||||||
EmturbovidExtractor(),
|
EmturbovidExtractor(),
|
||||||
Vtbe(),
|
Vtbe(),
|
||||||
EPlayExtractor(),
|
EPlayExtractor(),
|
||||||
Vidguardto()
|
Vidguardto(),
|
||||||
|
Simpulumlamerop(),
|
||||||
|
Urochsunloath(),
|
||||||
|
Yipsu(),
|
||||||
|
MetaGnathTuggers()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue