mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	Merge branch 'recloudstream:master' into master
This commit is contained in:
		
						commit
						cdb57e946c
					
				
					 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) | ||||||
| 
 | 
 | ||||||
|         M3u8Helper.generateM3u8( |         val videoLinks = mutableListOf<String>() | ||||||
|             name, |  | ||||||
|             link ?: return, |  | ||||||
|             "$mainUrl/", |  | ||||||
|             headers = mapOf("Origin" to "$mainUrl/") |  | ||||||
|         ).forEach(callback) |  | ||||||
|          |          | ||||||
|  |         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( | ||||||
|  |                 name, | ||||||
|  |                 videoLink, | ||||||
|  |                 "$mainUrl/", | ||||||
|  |                 headers = mapOf("Origin" to "$mainUrl/") | ||||||
|  |             ).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…
	
	Add table
		Add a link
		
	
		Reference in a new issue