- Open all extractor classes

- Add StreamTape clones[Streamtape.net, ShaveTape.cash]
- optimize imports for AstreamHub, GMplayer
This commit is contained in:
darkdemon 2022-11-06 16:43:45 +05:30 committed by Cloudburst
parent 3e2c53a5b7
commit aef6f93efe
27 changed files with 50 additions and 39 deletions

View file

@ -2,10 +2,11 @@ package com.lagradost.cloudstream3.extractors
import android.util.Log import android.util.Log
import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.base64Decode import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.Qualities
class AStreamHub : ExtractorApi() { open class AStreamHub : ExtractorApi() {
override val name = "AStreamHub" override val name = "AStreamHub"
override val mainUrl = "https://astreamhub.com" override val mainUrl = "https://astreamhub.com"
override val requiresReferer = true override val requiresReferer = true

View file

@ -4,7 +4,7 @@ import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.base64Decode import com.lagradost.cloudstream3.base64Decode
import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.*
class Acefile : ExtractorApi() { open class Acefile : ExtractorApi() {
override val name = "Acefile" override val name = "Acefile"
override val mainUrl = "https://acefile.co" override val mainUrl = "https://acefile.co"
override val requiresReferer = false override val requiresReferer = false

View file

@ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.M3u8Helper
import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.cloudstream3.utils.getQualityFromName
import java.net.URI import java.net.URI
class AsianLoad : ExtractorApi() { open class AsianLoad : ExtractorApi() {
override var name = "AsianLoad" override var name = "AsianLoad"
override var mainUrl = "https://asianembed.io" override var mainUrl = "https://asianembed.io"
override val requiresReferer = true override val requiresReferer = true

View file

@ -5,7 +5,7 @@ import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.*
import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
class Blogger : ExtractorApi() { open class Blogger : ExtractorApi() {
override val name = "Blogger" override val name = "Blogger"
override val mainUrl = "https://www.blogger.com" override val mainUrl = "https://www.blogger.com"
override val requiresReferer = false override val requiresReferer = false

View file

@ -5,7 +5,7 @@ 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 BullStream : ExtractorApi() { open class BullStream : ExtractorApi() {
override val name = "BullStream" override val name = "BullStream"
override val mainUrl = "https://bullstream.xyz" override val mainUrl = "https://bullstream.xyz"
override val requiresReferer = false override val requiresReferer = false

View file

@ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.cloudstream3.utils.getQualityFromName
import com.lagradost.cloudstream3.utils.httpsify import com.lagradost.cloudstream3.utils.httpsify
class Embedgram : ExtractorApi() { open class Embedgram : ExtractorApi() {
override val name = "Embedgram" override val name = "Embedgram"
override val mainUrl = "https://embedgram.com" override val mainUrl = "https://embedgram.com"
override val requiresReferer = true override val requiresReferer = true

View file

@ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.M3u8Helper.Companion.generateM3u8 import com.lagradost.cloudstream3.utils.M3u8Helper.Companion.generateM3u8
class Fastream: ExtractorApi() { open class Fastream: ExtractorApi() {
override var mainUrl = "https://fastream.to" override var mainUrl = "https://fastream.to"
override var name = "Fastream" override var name = "Fastream"
override val requiresReferer = false override val requiresReferer = false

View file

@ -5,7 +5,7 @@ import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.*
import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
class Filesim : ExtractorApi() { open class Filesim : ExtractorApi() {
override val name = "Filesim" override val name = "Filesim"
override val mainUrl = "https://files.im" override val mainUrl = "https://files.im"
override val requiresReferer = false override val requiresReferer = false

View file

@ -3,10 +3,9 @@ package com.lagradost.cloudstream3.extractors
import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.app
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.Qualities import com.lagradost.cloudstream3.utils.Qualities
class GMPlayer : ExtractorApi() { open class GMPlayer : ExtractorApi() {
override val name = "GM Player" override val name = "GM Player"
override val mainUrl = "https://gmplayer.xyz" override val mainUrl = "https://gmplayer.xyz"
override val requiresReferer = true override val requiresReferer = true

View file

@ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.cloudstream3.utils.getQualityFromName
class Linkbox : ExtractorApi() { open class Linkbox : ExtractorApi() {
override val name = "Linkbox" override val name = "Linkbox"
override val mainUrl = "https://www.linkbox.to" override val mainUrl = "https://www.linkbox.to"
override val requiresReferer = true override val requiresReferer = true

View file

@ -1,7 +0,0 @@
package com.lagradost.cloudstream3.extractors
open class Mcloud : WcoStream() {
override var name = "Mcloud"
override var mainUrl = "https://mcloud.to"
override val requiresReferer = true
}

View file

@ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.Qualities import com.lagradost.cloudstream3.utils.Qualities
import com.lagradost.cloudstream3.utils.getAndUnpack import com.lagradost.cloudstream3.utils.getAndUnpack
class Mp4Upload : ExtractorApi() { open class Mp4Upload : ExtractorApi() {
override var name = "Mp4Upload" override var name = "Mp4Upload"
override var mainUrl = "https://www.mp4upload.com" override var mainUrl = "https://www.mp4upload.com"
private val srcRegex = Regex("""player\.src\("(.*?)"""") private val srcRegex = Regex("""player\.src\("(.*?)"""")

View file

@ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.Qualities
import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.cloudstream3.utils.getQualityFromName
import java.net.URI import java.net.URI
class MultiQuality : ExtractorApi() { open class MultiQuality : ExtractorApi() {
override var name = "MultiQuality" override var name = "MultiQuality"
override var mainUrl = "https://gogo-play.net" override var mainUrl = "https://gogo-play.net"
private val sourceRegex = Regex("""file:\s*['"](.*?)['"],label:\s*['"](.*?)['"]""") private val sourceRegex = Regex("""file:\s*['"](.*?)['"],label:\s*['"](.*?)['"]""")

View file

@ -6,7 +6,7 @@ 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.Qualities
class Mvidoo : ExtractorApi() { open class Mvidoo : ExtractorApi() {
override val name = "Mvidoo" override val name = "Mvidoo"
override val mainUrl = "https://mvidoo.com" override val mainUrl = "https://mvidoo.com"
override val requiresReferer = true override val requiresReferer = true

View file

@ -14,7 +14,7 @@ import org.jsoup.Jsoup
* overrideMainUrl is necessary for for other vidstream clones like vidembed.cc * overrideMainUrl is necessary for for other vidstream clones like vidembed.cc
* If they diverge it'd be better to make them separate. * If they diverge it'd be better to make them separate.
* */ * */
class Pelisplus(val mainUrl: String) { open class Pelisplus(val mainUrl: String) {
val name: String = "Vidstream" val name: String = "Vidstream"
private fun getExtractorUrl(id: String): String { private fun getExtractorUrl(id: String): String {

View file

@ -6,7 +6,7 @@ import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.*
import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
class PlayLtXyz: ExtractorApi() { open class PlayLtXyz: ExtractorApi() {
override val name: String = "PlayLt" override val name: String = "PlayLt"
override val mainUrl: String = "https://play.playlt.xyz" override val mainUrl: String = "https://play.playlt.xyz"
override val requiresReferer = true override val requiresReferer = true

View file

@ -8,7 +8,7 @@ import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.cloudstream3.utils.getQualityFromName
class Solidfiles : ExtractorApi() { open class Solidfiles : ExtractorApi() {
override val name = "Solidfiles" override val name = "Solidfiles"
override val mainUrl = "https://www.solidfiles.com" override val mainUrl = "https://www.solidfiles.com"
override val requiresReferer = false override val requiresReferer = false

View file

@ -5,7 +5,15 @@ 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.Qualities
class StreamTape : ExtractorApi() { class StreamTapeNet : StreamTape() {
override var mainUrl = "https://streamtape.net"
}
class ShaveTape : StreamTape(){
override var mainUrl = "https://shavetape.cash"
}
open class StreamTape : ExtractorApi() {
override var name = "StreamTape" override var name = "StreamTape"
override var mainUrl = "https://streamtape.com" override var mainUrl = "https://streamtape.com"
override val requiresReferer = false override val requiresReferer = false
@ -16,7 +24,8 @@ class StreamTape : ExtractorApi() {
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? { override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
with(app.get(url)) { with(app.get(url)) {
linkRegex.find(this.text)?.let { linkRegex.find(this.text)?.let {
val extractedUrl = "https:${it.groups[1]!!.value + it.groups[2]!!.value.substring(3,)}" val extractedUrl =
"https:${it.groups[1]!!.value + it.groups[2]!!.value.substring(3)}"
return listOf( return listOf(
ExtractorLink( ExtractorLink(
name, name,

View file

@ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.JsUnpacker
import com.lagradost.cloudstream3.utils.Qualities import com.lagradost.cloudstream3.utils.Qualities
import java.net.URI import java.net.URI
class Streamhub : ExtractorApi() { open class Streamhub : ExtractorApi() {
override var mainUrl = "https://streamhub.to" override var mainUrl = "https://streamhub.to"
override var name = "Streamhub" override var name = "Streamhub"
override val requiresReferer = false override val requiresReferer = false

View file

@ -9,7 +9,7 @@ import com.lagradost.cloudstream3.utils.*
import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
import java.net.URI import java.net.URI
class Streamplay : ExtractorApi() { open class Streamplay : ExtractorApi() {
override val name = "Streamplay" override val name = "Streamplay"
override val mainUrl = "https://streamplay.to" override val mainUrl = "https://streamplay.to"
override val requiresReferer = true override val requiresReferer = true

View file

@ -20,7 +20,10 @@ data class Files(
val response = app.get(url).text val response = app.get(url).text
val jstounpack = Regex("eval((.|\\n)*?)</script>").find(response)?.groups?.get(1)?.value val jstounpack = Regex("eval((.|\\n)*?)</script>").find(response)?.groups?.get(1)?.value
val unpacjed = JsUnpacker(jstounpack).unpack() val unpacjed = JsUnpacker(jstounpack).unpack()
val extractedUrl = unpacjed?.let { Regex("""sources:((.|\n)*?)image""").find(it) }?.groups?.get(1)?.value.toString().replace("file",""""file"""").replace("label",""""label"""").substringBeforeLast(",") val extractedUrl =
unpacjed?.let { Regex("""sources:((.|\n)*?)image""").find(it) }?.groups?.get(1)?.value.toString()
.replace("file", """"file"""").replace("label", """"label"""")
.substringBeforeLast(",")
val parsedlinks = parseJson<List<Files>>(extractedUrl) val parsedlinks = parseJson<List<Files>>(extractedUrl)
parsedlinks.forEach { data -> parsedlinks.forEach { data ->
if (data.label.isNullOrBlank()) { // mp4 links (with labels) are slow. Use only m3u8 link. if (data.label.isNullOrBlank()) { // mp4 links (with labels) are slow. Use only m3u8 link.
@ -34,8 +37,6 @@ data class Files(
} }
} }
} }
return extractedLinksList return extractedLinksList
} }
} }

View file

@ -6,7 +6,7 @@ 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 UpstreamExtractor : ExtractorApi() { open class UpstreamExtractor : ExtractorApi() {
override val name: String = "Upstream" override val name: String = "Upstream"
override val mainUrl: String = "https://upstream.to" override val mainUrl: String = "https://upstream.to"
override val requiresReferer = true override val requiresReferer = true

View file

@ -11,7 +11,7 @@ class VideovardSX : WcoStream() {
override var mainUrl = "https://videovard.sx" override var mainUrl = "https://videovard.sx"
} }
class VideoVard : ExtractorApi() { open class VideoVard : ExtractorApi() {
override var name = "Videovard" // Cause works for animekisa and wco override var name = "Videovard" // Cause works for animekisa and wco
override var mainUrl = "https://videovard.to" override var mainUrl = "https://videovard.to"
override val requiresReferer = false override val requiresReferer = false

View file

@ -53,6 +53,12 @@ class VizcloudSite : WcoStream() {
override var mainUrl = "https://vizcloud.site" override var mainUrl = "https://vizcloud.site"
} }
class Mcloud : WcoStream() {
override var name = "Mcloud"
override var mainUrl = "https://mcloud.to"
override val requiresReferer = true
}
open class WcoStream : ExtractorApi() { open class WcoStream : ExtractorApi() {
override var name = "VidStream" // Cause works for animekisa and wco override var name = "VidStream" // Cause works for animekisa and wco
override var mainUrl = "https://vidstream.pro" override var mainUrl = "https://vidstream.pro"

View file

@ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.cloudstream3.utils.getQualityFromName
class YourUpload: ExtractorApi() { open class YourUpload: ExtractorApi() {
override val name = "Yourupload" override val name = "Yourupload"
override val mainUrl = "https://www.yourupload.com" override val mainUrl = "https://www.yourupload.com"
override val requiresReferer = false override val requiresReferer = false

View file

@ -10,7 +10,7 @@ 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 Zorofile : ExtractorApi() { open class Zorofile : ExtractorApi() {
override val name = "Zorofile" override val name = "Zorofile"
override val mainUrl = "https://zorofile.com" override val mainUrl = "https://zorofile.com"
override val requiresReferer = true override val requiresReferer = true

View file

@ -205,6 +205,8 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
VideovardSX(), VideovardSX(),
Mp4Upload(), Mp4Upload(),
StreamTape(), StreamTape(),
StreamTapeNet(),
ShaveTape(),
//mixdrop extractors //mixdrop extractors
MixDropBz(), MixDropBz(),