mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
parent
bda6673cfd
commit
b702b7b1ec
3 changed files with 72 additions and 22 deletions
|
@ -7,6 +7,18 @@ import com.lagradost.cloudstream3.utils.Qualities
|
||||||
import com.lagradost.cloudstream3.utils.getQualityFromName
|
import com.lagradost.cloudstream3.utils.getQualityFromName
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
|
||||||
|
class D0000d : DoodLaExtractor() {
|
||||||
|
override var mainUrl = "https://d0000d.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
class D000dCom : DoodLaExtractor() {
|
||||||
|
override var mainUrl = "https://d000d.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
class DoodstreamCom : DoodLaExtractor() {
|
||||||
|
override var mainUrl = "https://doodstream.com"
|
||||||
|
}
|
||||||
|
|
||||||
class Dooood : DoodLaExtractor() {
|
class Dooood : DoodLaExtractor() {
|
||||||
override var mainUrl = "https://dooood.com"
|
override var mainUrl = "https://dooood.com"
|
||||||
}
|
}
|
||||||
|
@ -56,9 +68,10 @@ open class DoodLaExtractor : ExtractorApi() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
|
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
|
||||||
val response0 = app.get(url).text // html of DoodStream page to look for /pass_md5/...
|
val newUrl= url.replace(mainUrl, "https://d0000d.com")
|
||||||
val md5 =mainUrl+(Regex("/pass_md5/[^']*").find(response0)?.value ?: return null) // get https://dood.ws/pass_md5/...
|
val response0 = app.get(newUrl).text // html of DoodStream page to look for /pass_md5/...
|
||||||
val trueUrl = app.get(md5, referer = url).text + "zUEJeL3mUN?token=" + md5.substringAfterLast("/") //direct link to extract (zUEJeL3mUN is random)
|
val md5 ="https://d0000d.com"+(Regex("/pass_md5/[^']*").find(response0)?.value ?: return null) // get https://dood.ws/pass_md5/...
|
||||||
|
val trueUrl = app.get(md5, referer = newUrl).text + "zUEJeL3mUN?token=" + md5.substringAfterLast("/") //direct link to extract (zUEJeL3mUN is random)
|
||||||
val quality = Regex("\\d{3,4}p").find(response0.substringAfter("<title>").substringBefore("</title>"))?.groupValues?.get(0)
|
val quality = Regex("\\d{3,4}p").find(response0.substringAfter("<title>").substringBefore("</title>"))?.groupValues?.get(0)
|
||||||
return listOf(
|
return listOf(
|
||||||
ExtractorLink(
|
ExtractorLink(
|
||||||
|
|
|
@ -1,34 +1,56 @@
|
||||||
package com.lagradost.cloudstream3.extractors
|
package com.lagradost.cloudstream3.extractors
|
||||||
|
|
||||||
|
import com.lagradost.cloudstream3.SubtitleFile
|
||||||
import com.lagradost.cloudstream3.app
|
import com.lagradost.cloudstream3.app
|
||||||
import com.lagradost.cloudstream3.network.WebViewResolver
|
|
||||||
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.Qualities
|
import com.lagradost.cloudstream3.utils.getQualityFromName
|
||||||
|
|
||||||
|
|
||||||
|
class WishembedPro : StreamWishExtractor() {
|
||||||
|
override val mainUrl = "https://wishembed.pro"
|
||||||
|
}
|
||||||
|
class CdnwishCom : StreamWishExtractor() {
|
||||||
|
override val mainUrl = "https://cdnwish.com"
|
||||||
|
}
|
||||||
|
class FlaswishCom : StreamWishExtractor() {
|
||||||
|
override val mainUrl = "https://flaswish.com"
|
||||||
|
}
|
||||||
|
class SfastwishCom : StreamWishExtractor() {
|
||||||
|
override val mainUrl = "https://sfastwish.com"
|
||||||
|
}
|
||||||
open class StreamWishExtractor : ExtractorApi() {
|
open class StreamWishExtractor : ExtractorApi() {
|
||||||
override var name = "StreamWish"
|
override var name = "StreamWish"
|
||||||
override var mainUrl = "https://streamwish.to"
|
override val mainUrl = "https://streamwish.to"
|
||||||
override val requiresReferer = false
|
override val requiresReferer = false
|
||||||
|
|
||||||
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
|
override suspend fun getUrl(
|
||||||
val response = app.get(
|
url: String,
|
||||||
url, referer = referer ?: "$mainUrl/", interceptor = WebViewResolver(
|
referer: String?,
|
||||||
Regex("""master\.m3u8""")
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
)
|
callback: (ExtractorLink) -> Unit
|
||||||
)
|
) {
|
||||||
val sources = mutableListOf<ExtractorLink>()
|
val doc = app.get(
|
||||||
if (response.url.contains("m3u8"))
|
url,
|
||||||
sources.add(
|
referer = referer,
|
||||||
|
allowRedirects = false
|
||||||
|
).document
|
||||||
|
var script = doc.select("script").find {
|
||||||
|
it.html().contains("jwplayer(\"vplayer\").setup(")
|
||||||
|
}
|
||||||
|
var scriptContent = script?.html()
|
||||||
|
val extractedurl = Regex("""sources: \[\{file:"(.*?)"""").find(scriptContent ?: "")?.groupValues?.get(1)
|
||||||
|
if (!extractedurl.isNullOrBlank()) {
|
||||||
|
callback(
|
||||||
ExtractorLink(
|
ExtractorLink(
|
||||||
source = name,
|
this.name,
|
||||||
name = name,
|
this.name,
|
||||||
url = response.url,
|
extractedurl,
|
||||||
referer = referer ?: "$mainUrl/",
|
referer ?: "$mainUrl/",
|
||||||
quality = Qualities.Unknown.value,
|
getQualityFromName(""),
|
||||||
isM3u8 = true
|
extractedurl.contains("m3u8")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return sources
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -17,6 +17,7 @@ import com.lagradost.cloudstream3.extractors.BullStream
|
||||||
import com.lagradost.cloudstream3.extractors.ByteShare
|
import com.lagradost.cloudstream3.extractors.ByteShare
|
||||||
import com.lagradost.cloudstream3.extractors.Cda
|
import com.lagradost.cloudstream3.extractors.Cda
|
||||||
import com.lagradost.cloudstream3.extractors.Cdnplayer
|
import com.lagradost.cloudstream3.extractors.Cdnplayer
|
||||||
|
import com.lagradost.cloudstream3.extractors.CdnwishCom
|
||||||
import com.lagradost.cloudstream3.extractors.Chillx
|
import com.lagradost.cloudstream3.extractors.Chillx
|
||||||
import com.lagradost.cloudstream3.extractors.CineGrabber
|
import com.lagradost.cloudstream3.extractors.CineGrabber
|
||||||
import com.lagradost.cloudstream3.extractors.Cinestart
|
import com.lagradost.cloudstream3.extractors.Cinestart
|
||||||
|
@ -106,6 +107,9 @@ import com.lagradost.cloudstream3.extractors.Odnoklassniki
|
||||||
import com.lagradost.cloudstream3.extractors.TauVideo
|
import com.lagradost.cloudstream3.extractors.TauVideo
|
||||||
import com.lagradost.cloudstream3.extractors.SibNet
|
import com.lagradost.cloudstream3.extractors.SibNet
|
||||||
import com.lagradost.cloudstream3.extractors.ContentX
|
import com.lagradost.cloudstream3.extractors.ContentX
|
||||||
|
import com.lagradost.cloudstream3.extractors.D0000d
|
||||||
|
import com.lagradost.cloudstream3.extractors.D000dCom
|
||||||
|
import com.lagradost.cloudstream3.extractors.DoodstreamCom
|
||||||
import com.lagradost.cloudstream3.extractors.EmturbovidExtractor
|
import com.lagradost.cloudstream3.extractors.EmturbovidExtractor
|
||||||
import com.lagradost.cloudstream3.extractors.Hotlinger
|
import com.lagradost.cloudstream3.extractors.Hotlinger
|
||||||
import com.lagradost.cloudstream3.extractors.FourCX
|
import com.lagradost.cloudstream3.extractors.FourCX
|
||||||
|
@ -227,7 +231,10 @@ import com.lagradost.cloudstream3.extractors.Zplayer
|
||||||
import com.lagradost.cloudstream3.extractors.ZplayerV2
|
import com.lagradost.cloudstream3.extractors.ZplayerV2
|
||||||
import com.lagradost.cloudstream3.extractors.Ztreamhub
|
import com.lagradost.cloudstream3.extractors.Ztreamhub
|
||||||
import com.lagradost.cloudstream3.extractors.EPlayExtractor
|
import com.lagradost.cloudstream3.extractors.EPlayExtractor
|
||||||
|
import com.lagradost.cloudstream3.extractors.FlaswishCom
|
||||||
|
import com.lagradost.cloudstream3.extractors.SfastwishCom
|
||||||
import com.lagradost.cloudstream3.extractors.Vtbe
|
import com.lagradost.cloudstream3.extractors.Vtbe
|
||||||
|
import com.lagradost.cloudstream3.extractors.WishembedPro
|
||||||
import com.lagradost.cloudstream3.mvvm.logError
|
import com.lagradost.cloudstream3.mvvm.logError
|
||||||
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
@ -777,6 +784,9 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
|
||||||
DoodSoExtractor(),
|
DoodSoExtractor(),
|
||||||
DoodLaExtractor(),
|
DoodLaExtractor(),
|
||||||
Dooood(),
|
Dooood(),
|
||||||
|
D0000d(),
|
||||||
|
D000dCom(),
|
||||||
|
DoodstreamCom(),
|
||||||
DoodWsExtractor(),
|
DoodWsExtractor(),
|
||||||
DoodShExtractor(),
|
DoodShExtractor(),
|
||||||
DoodWatchExtractor(),
|
DoodWatchExtractor(),
|
||||||
|
@ -854,6 +864,7 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
|
||||||
Guccihide(),
|
Guccihide(),
|
||||||
FileMoon(),
|
FileMoon(),
|
||||||
FileMoonSx(),
|
FileMoonSx(),
|
||||||
|
|
||||||
Vido(),
|
Vido(),
|
||||||
Linkbox(),
|
Linkbox(),
|
||||||
Acefile(),
|
Acefile(),
|
||||||
|
@ -909,6 +920,10 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
|
||||||
Megacloud(),
|
Megacloud(),
|
||||||
VidhideExtractor(),
|
VidhideExtractor(),
|
||||||
StreamWishExtractor(),
|
StreamWishExtractor(),
|
||||||
|
WishembedPro(),
|
||||||
|
CdnwishCom(),
|
||||||
|
FlaswishCom(),
|
||||||
|
SfastwishCom(),
|
||||||
EmturbovidExtractor(),
|
EmturbovidExtractor(),
|
||||||
Vtbe(),
|
Vtbe(),
|
||||||
EPlayExtractor(),
|
EPlayExtractor(),
|
||||||
|
|
Loading…
Reference in a new issue