mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	- Open all extractor classes
- Add StreamTape clones[Streamtape.net, ShaveTape.cash] - optimize imports for AstreamHub, GMplayer
This commit is contained in:
		
							parent
							
								
									3e2c53a5b7
								
							
						
					
					
						commit
						aef6f93efe
					
				
					 27 changed files with 50 additions and 39 deletions
				
			
		|  | @ -2,10 +2,11 @@ package com.lagradost.cloudstream3.extractors | |||
| 
 | ||||
| import android.util.Log | ||||
| import com.lagradost.cloudstream3.app | ||||
| import com.lagradost.cloudstream3.base64Decode | ||||
| import com.lagradost.cloudstream3.utils.* | ||||
| import com.lagradost.cloudstream3.utils.ExtractorApi | ||||
| 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 mainUrl = "https://astreamhub.com" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ import com.lagradost.cloudstream3.app | |||
| import com.lagradost.cloudstream3.base64Decode | ||||
| import com.lagradost.cloudstream3.utils.* | ||||
| 
 | ||||
| class Acefile : ExtractorApi() { | ||||
| open class Acefile : ExtractorApi() { | ||||
|     override val name = "Acefile" | ||||
|     override val mainUrl = "https://acefile.co" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.M3u8Helper | |||
| import com.lagradost.cloudstream3.utils.getQualityFromName | ||||
| import java.net.URI | ||||
| 
 | ||||
| class AsianLoad : ExtractorApi() { | ||||
| open class AsianLoad : ExtractorApi() { | ||||
|     override var name = "AsianLoad" | ||||
|     override var mainUrl = "https://asianembed.io" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import com.lagradost.cloudstream3.app | |||
| import com.lagradost.cloudstream3.utils.* | ||||
| import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson | ||||
| 
 | ||||
| class Blogger : ExtractorApi() { | ||||
| open class Blogger : ExtractorApi() { | ||||
|     override val name = "Blogger" | ||||
|     override val mainUrl = "https://www.blogger.com" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.M3u8Helper | ||||
| 
 | ||||
| class BullStream : ExtractorApi() { | ||||
| open class BullStream : ExtractorApi() { | ||||
|     override val name = "BullStream" | ||||
|     override val mainUrl = "https://bullstream.xyz" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.ExtractorLink | |||
| import com.lagradost.cloudstream3.utils.getQualityFromName | ||||
| import com.lagradost.cloudstream3.utils.httpsify | ||||
| 
 | ||||
| class Embedgram : ExtractorApi() { | ||||
| open class Embedgram : ExtractorApi() { | ||||
|     override val name = "Embedgram" | ||||
|     override val mainUrl = "https://embedgram.com" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.M3u8Helper.Companion.generateM3u8 | ||||
| 
 | ||||
| class Fastream: ExtractorApi() { | ||||
| open class Fastream: ExtractorApi() { | ||||
|     override var mainUrl = "https://fastream.to" | ||||
|     override var name = "Fastream" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import com.lagradost.cloudstream3.app | |||
| import com.lagradost.cloudstream3.utils.* | ||||
| import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson | ||||
| 
 | ||||
| class Filesim : ExtractorApi() { | ||||
| open class Filesim : ExtractorApi() { | ||||
|     override val name = "Filesim" | ||||
|     override val mainUrl = "https://files.im" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -3,10 +3,9 @@ package com.lagradost.cloudstream3.extractors | |||
| import com.lagradost.cloudstream3.app | ||||
| import com.lagradost.cloudstream3.utils.ExtractorApi | ||||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.M3u8Helper | ||||
| import com.lagradost.cloudstream3.utils.Qualities | ||||
| 
 | ||||
| class GMPlayer : ExtractorApi() { | ||||
| open class GMPlayer : ExtractorApi() { | ||||
|     override val name = "GM Player" | ||||
|     override val mainUrl = "https://gmplayer.xyz" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.getQualityFromName | ||||
| 
 | ||||
| class Linkbox : ExtractorApi() { | ||||
| open class Linkbox : ExtractorApi() { | ||||
|     override val name = "Linkbox" | ||||
|     override val mainUrl = "https://www.linkbox.to" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -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 | ||||
| } | ||||
|  | @ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorLink | |||
| import com.lagradost.cloudstream3.utils.Qualities | ||||
| import com.lagradost.cloudstream3.utils.getAndUnpack | ||||
| 
 | ||||
| class Mp4Upload : ExtractorApi() { | ||||
| open class Mp4Upload : ExtractorApi() { | ||||
|     override var name = "Mp4Upload" | ||||
|     override var mainUrl = "https://www.mp4upload.com" | ||||
|     private val srcRegex = Regex("""player\.src\("(.*?)"""") | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.Qualities | |||
| import com.lagradost.cloudstream3.utils.getQualityFromName | ||||
| import java.net.URI | ||||
| 
 | ||||
| class MultiQuality : ExtractorApi() { | ||||
| open class MultiQuality : ExtractorApi() { | ||||
|     override var name = "MultiQuality" | ||||
|     override var mainUrl = "https://gogo-play.net" | ||||
|     private val sourceRegex = Regex("""file:\s*['"](.*?)['"],label:\s*['"](.*?)['"]""") | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.Qualities | ||||
| 
 | ||||
| class Mvidoo : ExtractorApi() { | ||||
| open class Mvidoo : ExtractorApi() { | ||||
|     override val name = "Mvidoo" | ||||
|     override val mainUrl = "https://mvidoo.com" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ import org.jsoup.Jsoup | |||
|  * overrideMainUrl is necessary for for other vidstream clones like vidembed.cc | ||||
|  * 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" | ||||
| 
 | ||||
|     private fun getExtractorUrl(id: String): String { | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ import com.lagradost.cloudstream3.app | |||
| import com.lagradost.cloudstream3.utils.* | ||||
| import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson | ||||
| 
 | ||||
| class PlayLtXyz: ExtractorApi() { | ||||
| open class PlayLtXyz: ExtractorApi() { | ||||
|     override val name: String = "PlayLt" | ||||
|     override val mainUrl: String = "https://play.playlt.xyz" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ import com.lagradost.cloudstream3.utils.ExtractorLink | |||
| import com.lagradost.cloudstream3.utils.getQualityFromName | ||||
| 
 | ||||
| 
 | ||||
| class Solidfiles : ExtractorApi() { | ||||
| open class Solidfiles : ExtractorApi() { | ||||
|     override val name = "Solidfiles" | ||||
|     override val mainUrl = "https://www.solidfiles.com" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -5,7 +5,15 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| 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 mainUrl = "https://streamtape.com" | ||||
|     override val requiresReferer = false | ||||
|  | @ -16,7 +24,8 @@ class StreamTape : ExtractorApi() { | |||
|     override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? { | ||||
|         with(app.get(url)) { | ||||
|             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( | ||||
|                     ExtractorLink( | ||||
|                         name, | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.JsUnpacker | |||
| import com.lagradost.cloudstream3.utils.Qualities | ||||
| import java.net.URI | ||||
| 
 | ||||
| class Streamhub : ExtractorApi() { | ||||
| open class Streamhub : ExtractorApi() { | ||||
|     override var mainUrl = "https://streamhub.to" | ||||
|     override var name = "Streamhub" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ import com.lagradost.cloudstream3.utils.* | |||
| import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson | ||||
| import java.net.URI | ||||
| 
 | ||||
| class Streamplay : ExtractorApi() { | ||||
| open class Streamplay : ExtractorApi() { | ||||
|     override val name = "Streamplay" | ||||
|     override val mainUrl = "https://streamplay.to" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ data class Files( | |||
|     @JsonProperty("label") val label: String? = null, | ||||
| ) | ||||
| 
 | ||||
|     open class Supervideo : ExtractorApi() { | ||||
| open class Supervideo : ExtractorApi() { | ||||
|     override var name = "Supervideo" | ||||
|     override var mainUrl = "https://supervideo.tv" | ||||
|     override val requiresReferer = false | ||||
|  | @ -20,10 +20,13 @@ data class Files( | |||
|         val response = app.get(url).text | ||||
|         val jstounpack = Regex("eval((.|\\n)*?)</script>").find(response)?.groups?.get(1)?.value | ||||
|         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) | ||||
|         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. | ||||
|                 M3u8Helper.generateM3u8( | ||||
|                     name, | ||||
|                     data.id, | ||||
|  | @ -34,8 +37,6 @@ data class Files( | |||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         return extractedLinksList | ||||
|     } | ||||
| } | ||||
|  | @ -6,7 +6,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.M3u8Helper | ||||
| 
 | ||||
| class UpstreamExtractor : ExtractorApi() { | ||||
| open class UpstreamExtractor : ExtractorApi() { | ||||
|     override val name: String = "Upstream" | ||||
|     override val mainUrl: String = "https://upstream.to" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ class VideovardSX : WcoStream() { | |||
|     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 mainUrl = "https://videovard.to" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -53,6 +53,12 @@ class VizcloudSite : WcoStream() { | |||
|     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() { | ||||
|     override var name = "VidStream" // Cause works for animekisa and wco | ||||
|     override var mainUrl = "https://vidstream.pro" | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.getQualityFromName | ||||
| 
 | ||||
| class YourUpload: ExtractorApi() { | ||||
| open class YourUpload: ExtractorApi() { | ||||
|     override val name = "Yourupload" | ||||
|     override val mainUrl = "https://www.yourupload.com" | ||||
|     override val requiresReferer = false | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ import com.lagradost.cloudstream3.utils.ExtractorApi | |||
| import com.lagradost.cloudstream3.utils.ExtractorLink | ||||
| import com.lagradost.cloudstream3.utils.M3u8Helper | ||||
| 
 | ||||
| class Zorofile : ExtractorApi() { | ||||
| open class Zorofile : ExtractorApi() { | ||||
|     override val name = "Zorofile" | ||||
|     override val mainUrl = "https://zorofile.com" | ||||
|     override val requiresReferer = true | ||||
|  |  | |||
|  | @ -205,6 +205,8 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf( | |||
|     VideovardSX(), | ||||
|     Mp4Upload(), | ||||
|     StreamTape(), | ||||
|     StreamTapeNet(), | ||||
|     ShaveTape(), | ||||
| 
 | ||||
|     //mixdrop extractors | ||||
|     MixDropBz(), | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue