mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	fixed 2embed
This commit is contained in:
		
							parent
							
								
									eb36315b04
								
							
						
					
					
						commit
						8d14046c4a
					
				
					 3 changed files with 33 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -18,6 +18,7 @@ import com.lagradost.cloudstream3.utils.M3u8Helper
 | 
			
		|||
import com.lagradost.cloudstream3.utils.getQualityFromName
 | 
			
		||||
import com.lagradost.nicehttp.NiceResponse
 | 
			
		||||
import kotlinx.coroutines.delay
 | 
			
		||||
import okhttp3.RequestBody.Companion.toRequestBody
 | 
			
		||||
import org.jsoup.Jsoup
 | 
			
		||||
import org.jsoup.nodes.Element
 | 
			
		||||
import java.net.URI
 | 
			
		||||
| 
						 | 
				
			
			@ -478,7 +479,8 @@ open class SflixProvider : MainAPI() {
 | 
			
		|||
            val data = negotiateNewSid(extractorData) ?: return null to null
 | 
			
		||||
            app.post(
 | 
			
		||||
                "$extractorData&t=${generateTimeStamp()}&sid=${data.sid}",
 | 
			
		||||
                json = "40", headers = headers
 | 
			
		||||
                requestBody = "40".toRequestBody(),
 | 
			
		||||
                headers = headers
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            // This makes the second get request work, and re-connect work.
 | 
			
		||||
| 
						 | 
				
			
			@ -634,9 +636,9 @@ open class SflixProvider : MainAPI() {
 | 
			
		|||
            subtitleCallback: (SubtitleFile) -> Unit,
 | 
			
		||||
            callback: (ExtractorLink) -> Unit,
 | 
			
		||||
            /** Used for extractorLink name, input: Source name */
 | 
			
		||||
            extractorData: String? = null,
 | 
			
		||||
            extractorData: String,
 | 
			
		||||
            nameTransformer: (String) -> String
 | 
			
		||||
        ) {
 | 
			
		||||
        ) = suspendSafeApiCall {
 | 
			
		||||
            // https://rapid-cloud.ru/embed-6/dcPOVRE57YOT?z= -> https://rapid-cloud.ru/embed-6
 | 
			
		||||
            val mainIframeUrl =
 | 
			
		||||
                url.substringBeforeLast("/")
 | 
			
		||||
| 
						 | 
				
			
			@ -652,10 +654,10 @@ open class SflixProvider : MainAPI() {
 | 
			
		|||
 | 
			
		||||
            var sid: String? = null
 | 
			
		||||
 | 
			
		||||
            extractorData?.let { negotiateNewSid(it) }?.also {
 | 
			
		||||
            negotiateNewSid(extractorData)?.also {
 | 
			
		||||
                app.post(
 | 
			
		||||
                    "$extractorData&t=${generateTimeStamp()}&sid=${it.sid}",
 | 
			
		||||
                    json = "40",
 | 
			
		||||
                    requestBody = "40".toRequestBody(),
 | 
			
		||||
                    timeout = 60
 | 
			
		||||
                )
 | 
			
		||||
                val text = app.get(
 | 
			
		||||
| 
						 | 
				
			
			@ -673,7 +675,7 @@ open class SflixProvider : MainAPI() {
 | 
			
		|||
                        "/embed",
 | 
			
		||||
                        "/ajax/embed"
 | 
			
		||||
                    )
 | 
			
		||||
                }/getSources?id=$mainIframeId&_token=$iframeToken&_number=$number${sid?.let { "&sid=$it" } ?: ""}",
 | 
			
		||||
                }/getSources?id=$mainIframeId&_token=$iframeToken&_number=$number$&sId=${sid!!}",
 | 
			
		||||
                referer = mainUrl,
 | 
			
		||||
                headers = mapOf(
 | 
			
		||||
                    "X-Requested-With" to "XMLHttpRequest",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,13 @@
 | 
			
		|||
package com.lagradost.cloudstream3.movieproviders
 | 
			
		||||
 | 
			
		||||
import android.util.Log
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty
 | 
			
		||||
import com.lagradost.cloudstream3.*
 | 
			
		||||
import com.lagradost.cloudstream3.APIHolder.getCaptchaToken
 | 
			
		||||
import com.lagradost.cloudstream3.metaproviders.TmdbLink
 | 
			
		||||
import com.lagradost.cloudstream3.metaproviders.TmdbProvider
 | 
			
		||||
import com.lagradost.cloudstream3.movieproviders.SflixProvider.Companion.extractRabbitStream
 | 
			
		||||
import com.lagradost.cloudstream3.movieproviders.SflixProvider.Companion.runSflixExtractorVerifierJob
 | 
			
		||||
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
 | 
			
		||||
import com.lagradost.cloudstream3.utils.ExtractorLink
 | 
			
		||||
import com.lagradost.cloudstream3.utils.loadExtractor
 | 
			
		||||
| 
						 | 
				
			
			@ -42,11 +44,11 @@ class TwoEmbedProvider : TmdbProvider() {
 | 
			
		|||
        val isMovie = mappedData.episode == null && mappedData.season == null
 | 
			
		||||
        val embedUrl = if (isMovie) {
 | 
			
		||||
            "$mainUrl/embed/$site/movie?id=$id"
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            val suffix = "$id&s=${mappedData.season ?: 1}&e=${mappedData.episode ?: 1}"
 | 
			
		||||
            "$mainUrl/embed/$site/tv?id=$suffix"
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val document = app.get(embedUrl).document
 | 
			
		||||
        val captchaKey =
 | 
			
		||||
            document.select("script[src*=https://www.google.com/recaptcha/api.js?render=]")
 | 
			
		||||
| 
						 | 
				
			
			@ -59,11 +61,16 @@ class TwoEmbedProvider : TmdbProvider() {
 | 
			
		|||
            val mappedservers = parseJson<EmbedJson>(ajax)
 | 
			
		||||
            val iframeLink = mappedservers.link
 | 
			
		||||
            if (iframeLink.contains("rabbitstream")) {
 | 
			
		||||
                extractRabbitStream(iframeLink, subtitleCallback, callback) { it }
 | 
			
		||||
                extractRabbitStream(iframeLink, subtitleCallback, callback, "https://ws10.rabbitstream.net/socket.io/?EIO=4&transport=polling") { it }
 | 
			
		||||
            } else {
 | 
			
		||||
                loadExtractor(iframeLink, embedUrl, callback)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun extractorVerifierJob(extractorData: String?) {
 | 
			
		||||
        Log.d(this.name, "Starting ${this.name} job!")
 | 
			
		||||
        runSflixExtractorVerifierJob(this, extractorData, "https://rabbitstream.net/")
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -429,7 +429,9 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio
 | 
			
		|||
                })
 | 
			
		||||
 | 
			
		||||
                if (currentLinks.isEmpty()) {
 | 
			
		||||
                    showToast(activity, R.string.no_links_found_toast, Toast.LENGTH_SHORT)
 | 
			
		||||
                    main {
 | 
			
		||||
                        showToast(activity, R.string.no_links_found_toast, Toast.LENGTH_SHORT)
 | 
			
		||||
                    }
 | 
			
		||||
                    return@safeApiCall
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1515,8 +1517,13 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio
 | 
			
		|||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                START_ACTION_LOAD_EP -> {
 | 
			
		||||
                    if(episodeList.size == 1) {
 | 
			
		||||
                        handleAction(EpisodeClickEvent(ACTION_PLAY_EPISODE_IN_PLAYER, episodeList.first()))
 | 
			
		||||
                    if (episodeList.size == 1) {
 | 
			
		||||
                        handleAction(
 | 
			
		||||
                            EpisodeClickEvent(
 | 
			
		||||
                                ACTION_PLAY_EPISODE_IN_PLAYER,
 | 
			
		||||
                                episodeList.first()
 | 
			
		||||
                            )
 | 
			
		||||
                        )
 | 
			
		||||
                    } else {
 | 
			
		||||
                        var found = false
 | 
			
		||||
                        for (ep in episodeList) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1531,7 +1538,12 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio
 | 
			
		|||
                            for (ep in episodeList) {
 | 
			
		||||
                                if (ep.episode == resumeEpisode && ep.season == resumeSeason) {
 | 
			
		||||
                                    println("WATCH STATUS::: START_ACTION_LOAD_EP S${ep.season} E ${ep.episode} - ${ep.getWatchProgress()}")
 | 
			
		||||
                                    handleAction(EpisodeClickEvent(ACTION_PLAY_EPISODE_IN_PLAYER, ep))
 | 
			
		||||
                                    handleAction(
 | 
			
		||||
                                        EpisodeClickEvent(
 | 
			
		||||
                                            ACTION_PLAY_EPISODE_IN_PLAYER,
 | 
			
		||||
                                            ep
 | 
			
		||||
                                        )
 | 
			
		||||
                                    )
 | 
			
		||||
                                    break
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue