mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
fixed #337
This commit is contained in:
parent
783ae437d1
commit
e30bce94ab
5 changed files with 13 additions and 27 deletions
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
@ -42,6 +42,7 @@ jobs:
|
||||||
|
|
||||||
- name: Access Secrets
|
- name: Access Secrets
|
||||||
env:
|
env:
|
||||||
|
TMDB_API: ${{ secrets.TMDB_API }}
|
||||||
SORA_API: ${{ secrets.SORA_API }}
|
SORA_API: ${{ secrets.SORA_API }}
|
||||||
SORAHE: ${{ secrets.SORAHE }}
|
SORAHE: ${{ secrets.SORAHE }}
|
||||||
SORAXA: ${{ secrets.SORAXA }}
|
SORAXA: ${{ secrets.SORAXA }}
|
||||||
|
@ -60,6 +61,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
cd $GITHUB_WORKSPACE/src
|
cd $GITHUB_WORKSPACE/src
|
||||||
echo SORA_API=$SORA_API >> local.properties
|
echo SORA_API=$SORA_API >> local.properties
|
||||||
|
echo TMDB_API=$TMDB_API >> local.properties
|
||||||
echo SORAHE=$SORAHE >> local.properties
|
echo SORAHE=$SORAHE >> local.properties
|
||||||
echo SORAXA=$SORAXA >> local.properties
|
echo SORAXA=$SORAXA >> local.properties
|
||||||
echo SORATED=$SORATED >> local.properties
|
echo SORATED=$SORATED >> local.properties
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// use an integer for version numbers
|
// use an integer for version numbers
|
||||||
version = 18
|
version = 19
|
||||||
|
|
||||||
|
|
||||||
cloudstream {
|
cloudstream {
|
||||||
|
|
|
@ -18,7 +18,6 @@ class KuramanimeProvider : MainAPI() {
|
||||||
override val hasDownloadSupport = true
|
override val hasDownloadSupport = true
|
||||||
private var headers: Map<String,String> = mapOf()
|
private var headers: Map<String,String> = mapOf()
|
||||||
private var cookies: Map<String,String> = mapOf()
|
private var cookies: Map<String,String> = mapOf()
|
||||||
private var misc: String? = null
|
|
||||||
override val supportedTypes = setOf(
|
override val supportedTypes = setOf(
|
||||||
TvType.Anime,
|
TvType.Anime,
|
||||||
TvType.AnimeMovie,
|
TvType.AnimeMovie,
|
||||||
|
@ -177,12 +176,12 @@ class KuramanimeProvider : MainAPI() {
|
||||||
link,
|
link,
|
||||||
referer = "",
|
referer = "",
|
||||||
quality = quality ?: Qualities.Unknown.value,
|
quality = quality ?: Qualities.Unknown.value,
|
||||||
headers = mapOf(
|
// headers = mapOf(
|
||||||
"Accept" to "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5",
|
// "Accept" to "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5",
|
||||||
"Range" to "bytes=0-",
|
// "Range" to "bytes=0-",
|
||||||
"Sec-Fetch-Dest" to "video",
|
// "Sec-Fetch-Dest" to "video",
|
||||||
"Sec-Fetch-Mode" to "no-cors",
|
// "Sec-Fetch-Mode" to "no-cors",
|
||||||
),
|
// ),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -197,7 +196,7 @@ class KuramanimeProvider : MainAPI() {
|
||||||
val req = app.get(data)
|
val req = app.get(data)
|
||||||
val res = req.document
|
val res = req.document
|
||||||
val token = res.select("meta[name=csrf-token]").attr("content")
|
val token = res.select("meta[name=csrf-token]").attr("content")
|
||||||
val stRt = res.selectFirst("script:containsData(window\\.stRt)")?.data()?.substringAfter("stRt = \"")?.substringBefore("\"") ?: return false
|
val stBt = res.selectFirst("script:containsData(stBk)")?.data()?.substringAfter("stBk = \"")?.substringBefore("\"")?.substringAfterLast("/") ?: return false
|
||||||
headers = mapOf(
|
headers = mapOf(
|
||||||
"X-Requested-With" to "XMLHttpRequest",
|
"X-Requested-With" to "XMLHttpRequest",
|
||||||
"X-CSRF-TOKEN" to token
|
"X-CSRF-TOKEN" to token
|
||||||
|
@ -205,7 +204,7 @@ class KuramanimeProvider : MainAPI() {
|
||||||
cookies = req.cookies
|
cookies = req.cookies
|
||||||
res.select("select#changeServer option").apmap { source ->
|
res.select("select#changeServer option").apmap { source ->
|
||||||
val server = source.attr("value")
|
val server = source.attr("value")
|
||||||
val link = "$data?dfgRr1OagZvvxbzHNpyCy0FqJQ18mCnb=${getMisc(stRt)}&twEvZlbZbYRWBdKKwxkOnwYF0VWoGGVg=$server"
|
val link = "$data?dfgRr1OagZvvxbzHNpyCy0FqJQ18mCnb=$stBt&twEvZlbZbYRWBdKKwxkOnwYF0VWoGGVg=$server"
|
||||||
if (server.contains(Regex("(?i)kuramadrive|archive"))) {
|
if (server.contains(Regex("(?i)kuramadrive|archive"))) {
|
||||||
invokeLocalSource(link, server, data, callback)
|
invokeLocalSource(link, server, data, callback)
|
||||||
} else {
|
} else {
|
||||||
|
@ -223,9 +222,4 @@ class KuramanimeProvider : MainAPI() {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun getMisc(url: String) = misc ?: fetchMisc(url)
|
|
||||||
|
|
||||||
private suspend fun fetchMisc(url: String): String {
|
|
||||||
return app.post(url, headers = headers, cookies = cookies).parsed()
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -8,6 +8,7 @@ android {
|
||||||
val properties = Properties()
|
val properties = Properties()
|
||||||
properties.load(project.rootProject.file("local.properties").inputStream())
|
properties.load(project.rootProject.file("local.properties").inputStream())
|
||||||
|
|
||||||
|
buildConfigField("String", "TMDB_API", "\"${properties.getProperty("TMDB_API")}\"")
|
||||||
buildConfigField("String", "SFMOVIES_API", "\"${properties.getProperty("SFMOVIES_API")}\"")
|
buildConfigField("String", "SFMOVIES_API", "\"${properties.getProperty("SFMOVIES_API")}\"")
|
||||||
buildConfigField("String", "ZSHOW_API", "\"${properties.getProperty("ZSHOW_API")}\"")
|
buildConfigField("String", "ZSHOW_API", "\"${properties.getProperty("ZSHOW_API")}\"")
|
||||||
buildConfigField("String", "SORA_API", "\"${properties.getProperty("SORA_API")}\"")
|
buildConfigField("String", "SORA_API", "\"${properties.getProperty("SORA_API")}\"")
|
||||||
|
|
|
@ -52,7 +52,6 @@ import com.hexated.SoraExtractor.invokeWatchsomuch
|
||||||
import com.hexated.SoraExtractor.invokeZshow
|
import com.hexated.SoraExtractor.invokeZshow
|
||||||
import com.lagradost.cloudstream3.LoadResponse.Companion.addImdbId
|
import com.lagradost.cloudstream3.LoadResponse.Companion.addImdbId
|
||||||
import com.lagradost.cloudstream3.LoadResponse.Companion.addTMDbId
|
import com.lagradost.cloudstream3.LoadResponse.Companion.addTMDbId
|
||||||
import com.lagradost.cloudstream3.extractors.VidSrcExtractor
|
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
|
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.toJson
|
import com.lagradost.cloudstream3.utils.AppUtils.toJson
|
||||||
import com.lagradost.cloudstream3.utils.ExtractorLink
|
import com.lagradost.cloudstream3.utils.ExtractorLink
|
||||||
|
@ -79,8 +78,7 @@ open class SoraStream : TmdbProvider() {
|
||||||
const val malsyncAPI = "https://api.malsync.moe"
|
const val malsyncAPI = "https://api.malsync.moe"
|
||||||
const val jikanAPI = "https://api.jikan.moe/v4"
|
const val jikanAPI = "https://api.jikan.moe/v4"
|
||||||
|
|
||||||
private val apiKey =
|
private const val apiKey = BuildConfig.TMDB_API
|
||||||
base64DecodeAPI("ZTM=NTg=MjM=MjM=ODc=MzI=OGQ=MmE=Nzk=Nzk=ZjI=NTA=NDY=NDA=MzA=YjA=") // PLEASE DON'T STEAL
|
|
||||||
|
|
||||||
/** ALL SOURCES */
|
/** ALL SOURCES */
|
||||||
const val twoEmbedAPI = "https://www.2embed.cc"
|
const val twoEmbedAPI = "https://www.2embed.cc"
|
||||||
|
@ -145,10 +143,6 @@ open class SoraStream : TmdbProvider() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun base64DecodeAPI(api: String): String {
|
|
||||||
return api.chunked(4).map { base64Decode(it) }.reversed().joinToString("")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override val mainPage = mainPageOf(
|
override val mainPage = mainPageOf(
|
||||||
|
@ -355,11 +349,6 @@ open class SoraStream : TmdbProvider() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun extractorVerifierJob(extractorData: String?) {
|
|
||||||
if (extractorData == null) return
|
|
||||||
VidSrcExtractor.validatePass(extractorData)
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun loadLinks(
|
override suspend fun loadLinks(
|
||||||
data: String,
|
data: String,
|
||||||
isCasting: Boolean,
|
isCasting: Boolean,
|
||||||
|
|
Loading…
Reference in a new issue