mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
parent
97bee668e3
commit
941faf7b5d
3 changed files with 35 additions and 9 deletions
|
@ -7,6 +7,7 @@ import com.lagradost.cloudstream3.app
|
||||||
import com.lagradost.cloudstream3.extractors.WcoStream.Companion.cipher
|
import com.lagradost.cloudstream3.extractors.WcoStream.Companion.cipher
|
||||||
import com.lagradost.cloudstream3.extractors.WcoStream.Companion.encrypt
|
import com.lagradost.cloudstream3.extractors.WcoStream.Companion.encrypt
|
||||||
import com.lagradost.cloudstream3.extractors.WcoStream.Companion.keytwo
|
import com.lagradost.cloudstream3.extractors.WcoStream.Companion.keytwo
|
||||||
|
import com.lagradost.cloudstream3.extractors.helper.WcoHelper.Companion.getNewWcoKey
|
||||||
import com.lagradost.cloudstream3.extractors.helper.WcoHelper.Companion.getWcoKey
|
import com.lagradost.cloudstream3.extractors.helper.WcoHelper.Companion.getWcoKey
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
|
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorApi
|
import com.lagradost.cloudstream3.utils.ExtractorApi
|
||||||
|
@ -34,11 +35,11 @@ open class Mcloud : ExtractorApi() {
|
||||||
private val key = "LCbu3iYC7ln24K7P" // key credits @Modder4869
|
private val key = "LCbu3iYC7ln24K7P" // key credits @Modder4869
|
||||||
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
|
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
|
||||||
val id = url.substringAfter("e/").substringAfter("embed/").substringBefore("?")
|
val id = url.substringAfter("e/").substringAfter("embed/").substringBefore("?")
|
||||||
val keys = getWcoKey()
|
val keys = getNewWcoKey()
|
||||||
keytwo = keys?.wcoKey ?: return null
|
keytwo = keys?.encryptKey ?: return null
|
||||||
val encryptedid = encrypt(cipher(keys.wcocipher!!, encrypt(id))).replace("/", "_").replace("=","")
|
val encryptedid = encrypt(cipher(keys.cipherkey!!, encrypt(id))).replace("/", "_").replace("=","")
|
||||||
val link = "$mainUrl/info/$encryptedid"
|
val link = "$mainUrl/mediainfo/$encryptedid?key=${keys.mainKey}"
|
||||||
val response = app.get(link, headers = headers).text
|
val response = app.get(link, referer = "https://animekisa.in/").text
|
||||||
if(response.startsWith("<!DOCTYPE html>")) {
|
if(response.startsWith("<!DOCTYPE html>")) {
|
||||||
// TODO decrypt html for link
|
// TODO decrypt html for link
|
||||||
return emptyList()
|
return emptyList()
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.lagradost.cloudstream3.extractors
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
import com.lagradost.cloudstream3.apmap
|
import com.lagradost.cloudstream3.apmap
|
||||||
import com.lagradost.cloudstream3.app
|
import com.lagradost.cloudstream3.app
|
||||||
|
import com.lagradost.cloudstream3.extractors.helper.WcoHelper.Companion.getNewWcoKey
|
||||||
import com.lagradost.cloudstream3.extractors.helper.WcoHelper.Companion.getWcoKey
|
import com.lagradost.cloudstream3.extractors.helper.WcoHelper.Companion.getWcoKey
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorApi
|
import com.lagradost.cloudstream3.utils.ExtractorApi
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorLink
|
import com.lagradost.cloudstream3.utils.ExtractorLink
|
||||||
|
@ -115,10 +116,10 @@ open class WcoStream : ExtractorApi() {
|
||||||
)?.destructured) ?: return emptyList()
|
)?.destructured) ?: return emptyList()
|
||||||
// val (skey) = Regex("""skey\s=\s['"](.*?)['"];""").find(html)?.destructured
|
// val (skey) = Regex("""skey\s=\s['"](.*?)['"];""").find(html)?.destructured
|
||||||
// ?: return emptyList()
|
// ?: return emptyList()
|
||||||
val keys = getWcoKey()
|
val keys = getNewWcoKey()
|
||||||
keytwo = keys?.wcoKey ?: return emptyList()
|
keytwo = keys?.encryptKey ?: return emptyList()
|
||||||
val encryptedID = encrypt(cipher(keys.wcocipher!!, encrypt(Id))).replace("/", "_").replace("=","")
|
val encryptedID = encrypt(cipher(keys.cipherkey!!, encrypt(Id))).replace("/", "_").replace("=","")
|
||||||
val apiLink = "$baseUrl/info/$encryptedID"
|
val apiLink = "$baseUrl/mediainfo/$encryptedID?key=${keys.mainKey}"
|
||||||
val referrer = "$baseUrl/e/$Id?domain=wcostream.cc"
|
val referrer = "$baseUrl/e/$Id?domain=wcostream.cc"
|
||||||
|
|
||||||
data class SourcesWco (
|
data class SourcesWco (
|
||||||
|
|
|
@ -15,7 +15,18 @@ class WcoHelper {
|
||||||
@JsonProperty("wco_cipher_key")
|
@JsonProperty("wco_cipher_key")
|
||||||
val wcocipher: String? = null
|
val wcocipher: String? = null
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class NewExternalKeys(
|
||||||
|
@JsonProperty("cipherKey")
|
||||||
|
val cipherkey: String? = null,
|
||||||
|
@JsonProperty("encryptKey")
|
||||||
|
val encryptKey: String? = null,
|
||||||
|
@JsonProperty("mainKey")
|
||||||
|
val mainKey: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
private var keys: ExternalKeys? = null
|
private var keys: ExternalKeys? = null
|
||||||
|
private var newKeys: NewExternalKeys? = null
|
||||||
private suspend fun getKeys() {
|
private suspend fun getKeys() {
|
||||||
keys = keys
|
keys = keys
|
||||||
?: app.get("https://raw.githubusercontent.com/LagradOst/CloudStream-3/master/docs/keys.json")
|
?: app.get("https://raw.githubusercontent.com/LagradOst/CloudStream-3/master/docs/keys.json")
|
||||||
|
@ -28,5 +39,18 @@ class WcoHelper {
|
||||||
getKeys()
|
getKeys()
|
||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private suspend fun getNewKeys() {
|
||||||
|
newKeys = newKeys
|
||||||
|
?: app.get("https://raw.githubusercontent.com/chekaslowakiya/BruhFlow/main/keys.json")
|
||||||
|
.parsedSafe<NewExternalKeys>()?.also { setKey(BACKUP_KEY_DATA, it) } ?: getKey(
|
||||||
|
BACKUP_KEY_DATA
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun getNewWcoKey(): NewExternalKeys? {
|
||||||
|
getNewKeys()
|
||||||
|
return newKeys
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue