mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	fix layarkaca/gomunime/kuronime (#1092)
This commit is contained in:
		
							parent
							
								
									9b94853199
								
							
						
					
					
						commit
						509a240e5a
					
				
					 9 changed files with 81 additions and 27 deletions
				
			
		| 
						 | 
				
			
			@ -89,7 +89,7 @@ object APIHolder {
 | 
			
		|||
            TantifilmProvider(),
 | 
			
		||||
            HDMovie5(),
 | 
			
		||||
            RebahinProvider(),
 | 
			
		||||
            LayarKaca21Provider(),
 | 
			
		||||
            LayarKacaProvider(),
 | 
			
		||||
 | 
			
		||||
            // Metadata providers
 | 
			
		||||
            //TmdbProvider(),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,20 +3,11 @@ package com.lagradost.cloudstream3.animeproviders
 | 
			
		|||
import com.fasterxml.jackson.annotation.JsonProperty
 | 
			
		||||
import com.lagradost.cloudstream3.*
 | 
			
		||||
import org.jsoup.Jsoup
 | 
			
		||||
import org.jsoup.nodes.Element
 | 
			
		||||
import java.util.*
 | 
			
		||||
import com.fasterxml.jackson.module.kotlin.readValue
 | 
			
		||||
import com.lagradost.cloudstream3.movieproviders.SflixProvider
 | 
			
		||||
import com.lagradost.cloudstream3.movieproviders.SflixProvider.Companion.extractRabbitStream
 | 
			
		||||
import com.lagradost.cloudstream3.movieproviders.SflixProvider.Companion.toExtractorLink
 | 
			
		||||
import com.lagradost.cloudstream3.mvvm.logError
 | 
			
		||||
import com.lagradost.cloudstream3.mvvm.safeApiCall
 | 
			
		||||
import com.lagradost.cloudstream3.utils.*
 | 
			
		||||
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
 | 
			
		||||
import com.lagradost.nicehttp.Requests.Companion.await
 | 
			
		||||
import kotlinx.coroutines.runBlocking
 | 
			
		||||
import okhttp3.Interceptor
 | 
			
		||||
import java.net.URI
 | 
			
		||||
 | 
			
		||||
class GomunimeProvider : MainAPI() {
 | 
			
		||||
    override var mainUrl = "https://185.231.223.76"
 | 
			
		||||
| 
						 | 
				
			
			@ -210,7 +201,8 @@ class GomunimeProvider : MainAPI() {
 | 
			
		|||
                            M3u8Helper.generateM3u8(
 | 
			
		||||
                                this.name,
 | 
			
		||||
                                link,
 | 
			
		||||
                                mainUrl,
 | 
			
		||||
                                "$mainUrl/",
 | 
			
		||||
                                headers = mapOf("Origin" to mainUrl)
 | 
			
		||||
                            ).forEach(callback)
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
package com.lagradost.cloudstream3.animeproviders
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty
 | 
			
		||||
import com.lagradost.cloudstream3.*
 | 
			
		||||
import com.lagradost.cloudstream3.LoadResponse.Companion.addTrailer
 | 
			
		||||
import com.lagradost.cloudstream3.mvvm.safeApiCall
 | 
			
		||||
| 
						 | 
				
			
			@ -157,6 +156,8 @@ class KuronimeProvider : MainAPI() {
 | 
			
		|||
                val token = data.substringAfter("var token = \"").substringBefore("\";")
 | 
			
		||||
                val pat = data.substringAfter("var pat = \"").substringBefore("\";")
 | 
			
		||||
                val link = "$doma$token$pat/index.m3u8"
 | 
			
		||||
                val quality =
 | 
			
		||||
                    Regex("\\d{3,4}p").find(doc.select("title").text())?.groupValues?.get(0)
 | 
			
		||||
 | 
			
		||||
                sourceCallback.invoke(
 | 
			
		||||
                    ExtractorLink(
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +165,8 @@ class KuronimeProvider : MainAPI() {
 | 
			
		|||
                        this.name,
 | 
			
		||||
                        link,
 | 
			
		||||
                        referer = "https://animeku.org/",
 | 
			
		||||
                        quality = Qualities.Unknown.value,
 | 
			
		||||
                        quality = getQualityFromName(quality),
 | 
			
		||||
                        headers = mapOf("Origin" to "https://animeku.org"),
 | 
			
		||||
                        isM3u8 = true
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
| 
						 | 
				
			
			@ -186,7 +188,7 @@ class KuronimeProvider : MainAPI() {
 | 
			
		|||
        sources.apmap {
 | 
			
		||||
            safeApiCall {
 | 
			
		||||
                when {
 | 
			
		||||
                    it.contains("animeku.org") -> invokeKuroSource(it, callback)
 | 
			
		||||
                    it.startsWith("https://animeku.org") -> invokeKuroSource(it, callback)
 | 
			
		||||
                    else -> loadExtractor(it, mainUrl, callback)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,6 @@
 | 
			
		|||
package com.lagradost.cloudstream3.animeproviders
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty
 | 
			
		||||
import com.lagradost.cloudstream3.*
 | 
			
		||||
import com.lagradost.cloudstream3.mvvm.safeApiCall
 | 
			
		||||
import com.lagradost.cloudstream3.utils.ExtractorLink
 | 
			
		||||
import com.lagradost.cloudstream3.utils.loadExtractor
 | 
			
		||||
import org.jsoup.nodes.Element
 | 
			
		||||
| 
						 | 
				
			
			@ -33,6 +31,7 @@ class NeonimeProvider : MainAPI() {
 | 
			
		|||
            return when (t) {
 | 
			
		||||
                "Ended"  -> ShowStatus.Completed
 | 
			
		||||
                "OnGoing" -> ShowStatus.Ongoing
 | 
			
		||||
                "Ongoing" -> ShowStatus.Ongoing
 | 
			
		||||
                "In Production" -> ShowStatus.Ongoing
 | 
			
		||||
                "Returning Series" -> ShowStatus.Ongoing
 | 
			
		||||
                else -> ShowStatus.Completed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@ import com.lagradost.cloudstream3.app
 | 
			
		|||
import com.lagradost.cloudstream3.utils.ExtractorApi
 | 
			
		||||
import com.lagradost.cloudstream3.utils.ExtractorLink
 | 
			
		||||
import com.lagradost.cloudstream3.utils.Qualities
 | 
			
		||||
import com.lagradost.cloudstream3.utils.getQualityFromName
 | 
			
		||||
import kotlinx.coroutines.delay
 | 
			
		||||
 | 
			
		||||
class DoodCxExtractor : DoodLaExtractor() {
 | 
			
		||||
| 
						 | 
				
			
			@ -40,13 +41,14 @@ open class DoodLaExtractor : ExtractorApi() {
 | 
			
		|||
        val response0 = app.get(url).text // html of DoodStream page to look for /pass_md5/...
 | 
			
		||||
        val md5 =mainUrl+(Regex("/pass_md5/[^']*").find(response0)?.value ?: return null)  // get https://dood.ws/pass_md5/...
 | 
			
		||||
        val trueUrl = app.get(md5, referer = url).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)
 | 
			
		||||
        return listOf(
 | 
			
		||||
            ExtractorLink(
 | 
			
		||||
                trueUrl,
 | 
			
		||||
                this.name,
 | 
			
		||||
                trueUrl,
 | 
			
		||||
                mainUrl,
 | 
			
		||||
                Qualities.Unknown.value,
 | 
			
		||||
                getQualityFromName(quality),
 | 
			
		||||
                false
 | 
			
		||||
            )
 | 
			
		||||
        ) // links are valid in 8h
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
package com.lagradost.cloudstream3.extractors
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty
 | 
			
		||||
import com.lagradost.cloudstream3.app
 | 
			
		||||
import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
 | 
			
		||||
import com.lagradost.cloudstream3.utils.ExtractorApi
 | 
			
		||||
import com.lagradost.cloudstream3.utils.ExtractorLink
 | 
			
		||||
import com.lagradost.cloudstream3.utils.getQualityFromName
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Solidfiles : ExtractorApi() {
 | 
			
		||||
    override val name = "Solidfiles"
 | 
			
		||||
    override val mainUrl = "https://www.solidfiles.com"
 | 
			
		||||
    override val requiresReferer = false
 | 
			
		||||
 | 
			
		||||
    override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink> {
 | 
			
		||||
        val sources = mutableListOf<ExtractorLink>()
 | 
			
		||||
        with(app.get(url).document) {
 | 
			
		||||
            this.select("script").map { script ->
 | 
			
		||||
                if (script.data().contains("\"streamUrl\":")) {
 | 
			
		||||
                    val data = script.data().substringAfter("constant('viewerOptions', {").substringBefore("});")
 | 
			
		||||
                    val source = tryParseJson<ResponseSource>("{$data}")
 | 
			
		||||
                    val quality = Regex("\\d{3,4}p").find(source!!.nodeName)?.groupValues?.get(0)
 | 
			
		||||
                    sources.add(
 | 
			
		||||
                        ExtractorLink(
 | 
			
		||||
                            name,
 | 
			
		||||
                            name,
 | 
			
		||||
                            source.streamUrl,
 | 
			
		||||
                            referer = url,
 | 
			
		||||
                            quality = getQualityFromName(quality)
 | 
			
		||||
                        )
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return sources
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    private data class ResponseSource(
 | 
			
		||||
        @JsonProperty("streamUrl") val streamUrl: String,
 | 
			
		||||
        @JsonProperty("nodeName") val nodeName: String
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,23 +1,22 @@
 | 
			
		|||
package com.lagradost.cloudstream3.movieproviders
 | 
			
		||||
 | 
			
		||||
import com.lagradost.cloudstream3.*
 | 
			
		||||
import com.lagradost.cloudstream3.mvvm.logError
 | 
			
		||||
import com.lagradost.cloudstream3.utils.ExtractorLink
 | 
			
		||||
import com.lagradost.cloudstream3.utils.httpsify
 | 
			
		||||
import com.lagradost.cloudstream3.utils.loadExtractor
 | 
			
		||||
import org.jsoup.Jsoup
 | 
			
		||||
import org.jsoup.nodes.Element
 | 
			
		||||
import java.util.*
 | 
			
		||||
 | 
			
		||||
class LayarKaca21Provider : MainAPI() {
 | 
			
		||||
    override var mainUrl = "https://149.56.24.226/"
 | 
			
		||||
    override var name = "LayarKaca21"
 | 
			
		||||
class LayarKacaProvider : MainAPI() {
 | 
			
		||||
    override var mainUrl = "https://149.56.24.226"
 | 
			
		||||
    override var name = "LayarKaca"
 | 
			
		||||
    override val hasMainPage = true
 | 
			
		||||
    override val lang = "id"
 | 
			
		||||
    override val hasDownloadSupport = true
 | 
			
		||||
    override val supportedTypes = setOf(
 | 
			
		||||
        TvType.Movie,
 | 
			
		||||
        TvType.TvSeries,
 | 
			
		||||
        TvType.AsianDrama
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    override suspend fun getMainPage(): HomePageResponse {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,8 @@ class RebahinProvider : MainAPI() {
 | 
			
		|||
    override val supportedTypes = setOf(
 | 
			
		||||
        TvType.Movie,
 | 
			
		||||
        TvType.TvSeries,
 | 
			
		||||
        TvType.Anime,
 | 
			
		||||
        TvType.AsianDrama
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    override suspend fun getMainPage(): HomePageResponse {
 | 
			
		||||
| 
						 | 
				
			
			@ -168,6 +170,7 @@ class RebahinProvider : MainAPI() {
 | 
			
		|||
    private suspend fun invokeLokalSource(
 | 
			
		||||
        url: String,
 | 
			
		||||
        name: String,
 | 
			
		||||
        ref: String,
 | 
			
		||||
        subCallback: (SubtitleFile) -> Unit,
 | 
			
		||||
        sourceCallback: (ExtractorLink) -> Unit
 | 
			
		||||
    ) {
 | 
			
		||||
| 
						 | 
				
			
			@ -182,11 +185,21 @@ class RebahinProvider : MainAPI() {
 | 
			
		|||
            if (script.data().contains("sources: [")) {
 | 
			
		||||
                val source = tryParseJson<ResponseLocal>(
 | 
			
		||||
                    script.data().substringAfter("sources: [").substringBefore("],"))
 | 
			
		||||
                M3u8Helper.generateM3u8(
 | 
			
		||||
                    name,
 | 
			
		||||
                    source!!.file,
 | 
			
		||||
                    "http://172.96.161.72",
 | 
			
		||||
                ).forEach(sourceCallback)
 | 
			
		||||
                val m3uData = app.get(source!!.file, referer = ref).text
 | 
			
		||||
                val quality = Regex("\\d{3,4}\\.m3u8").findAll(m3uData).map { it.value }.toList()
 | 
			
		||||
 | 
			
		||||
                quality.forEach {
 | 
			
		||||
                    sourceCallback.invoke(
 | 
			
		||||
                        ExtractorLink(
 | 
			
		||||
                            source = name,
 | 
			
		||||
                            name = name,
 | 
			
		||||
                            url = source.file.replace("video.m3u8", it),
 | 
			
		||||
                            referer = ref,
 | 
			
		||||
                            quality = getQualityFromName("${it.replace(".m3u8", "")}p"),
 | 
			
		||||
                            isM3u8 = true
 | 
			
		||||
                        )
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                val trackJson = script.data().substringAfter("tracks: [").substringBefore("],")
 | 
			
		||||
                val track = tryParseJson<List<Tracks>>("[$trackJson]")
 | 
			
		||||
| 
						 | 
				
			
			@ -291,6 +304,7 @@ class RebahinProvider : MainAPI() {
 | 
			
		|||
                    it.startsWith("http://172.96.161.72") -> invokeLokalSource(
 | 
			
		||||
                        it,
 | 
			
		||||
                        this.name,
 | 
			
		||||
                        "http://172.96.161.72/",
 | 
			
		||||
                        subtitleCallback,
 | 
			
		||||
                        callback
 | 
			
		||||
                    )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -190,6 +190,7 @@ val extractorApis: Array<ExtractorApi> = arrayOf(
 | 
			
		|||
    GMPlayer(),
 | 
			
		||||
 | 
			
		||||
    Blogger(),
 | 
			
		||||
    Solidfiles(),
 | 
			
		||||
 | 
			
		||||
    Hxfile(),
 | 
			
		||||
    KotakAnimeid(),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue