mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
fixed #216
This commit is contained in:
parent
c2c1445a95
commit
f0ffa72c1f
6 changed files with 6 additions and 169 deletions
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
@ -56,7 +56,6 @@ jobs:
|
|||
ANICHI_APP: ${{ secrets.ANICHI_APP }}
|
||||
PRIMEWIRE_KEY: ${{ secrets.PRIMEWIRE_KEY }}
|
||||
ZSHOW_API: ${{ secrets.ZSHOW_API }}
|
||||
VATIC_API: ${{ secrets.VATIC_API }}
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE/src
|
||||
echo SORA_API=$SORA_API >> local.properties
|
||||
|
@ -73,7 +72,6 @@ jobs:
|
|||
echo ANICHI_APP=$ANICHI_APP >> local.properties
|
||||
echo PRIMEWIRE_KEY=$PRIMEWIRE_KEY >> local.properties
|
||||
echo ZSHOW_API=$ZSHOW_API >> local.properties
|
||||
echo VATIC_API=$VATIC_API >> local.properties
|
||||
|
||||
- name: Build Plugins
|
||||
run: |
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
import org.jetbrains.kotlin.konan.properties.Properties
|
||||
|
||||
// use an integer for version numbers
|
||||
version = 182
|
||||
version = 183
|
||||
|
||||
android {
|
||||
defaultConfig {
|
||||
val properties = Properties()
|
||||
properties.load(project.rootProject.file("local.properties").inputStream())
|
||||
|
||||
buildConfigField("String", "VATIC_API", "\"${properties.getProperty("VATIC_API")}\"")
|
||||
buildConfigField("String", "ZSHOW_API", "\"${properties.getProperty("ZSHOW_API")}\"")
|
||||
buildConfigField("String", "SORA_API", "\"${properties.getProperty("SORA_API")}\"")
|
||||
buildConfigField("String", "SORAHE", "\"${properties.getProperty("SORAHE")}\"")
|
||||
|
|
|
@ -1278,7 +1278,7 @@ object SoraExtractor : SoraStream() {
|
|||
it.select("img").attr("src")
|
||||
)
|
||||
}.filter {
|
||||
it.quality.contains(Regex("(?i)(1080p|4k)")) && it.type.contains(Regex("(gdtot|oiya)"))
|
||||
it.quality.contains(Regex("(?i)(1080p|4k)")) && it.type.contains(Regex("(gdtot|oiya|rarbgx)"))
|
||||
}
|
||||
iframe.apmap { (link, quality, size, type) ->
|
||||
val qualities = getFDoviesQuality(quality)
|
||||
|
@ -1289,7 +1289,7 @@ object SoraExtractor : SoraStream() {
|
|||
extractGdflix(gdBotLink ?: return@apmap null)
|
||||
}
|
||||
|
||||
type.contains("oiya") -> {
|
||||
type.contains("oiya") || type.contains("rarbgx") -> {
|
||||
val oiyaLink = extractOiya(fdLink ?: return@apmap null, qualities)
|
||||
if (oiyaLink?.contains("gdtot") == true) {
|
||||
val gdBotLink = extractGdbot(oiyaLink)
|
||||
|
@ -1602,12 +1602,12 @@ object SoraExtractor : SoraStream() {
|
|||
"$rStreamAPI/e/?tmdb=$id&s=$season&e=$episode"
|
||||
}
|
||||
|
||||
val res = app.get(url, referer = "https://watcha.movie/").text
|
||||
val res = app.get("$url&apikey=whXgvN4kVyoubGwqXpw26Oy3PVryl8dm", referer = "https://watcha.movie/").text
|
||||
val link = Regex("\"file\":\"(http.*?)\"").find(res)?.groupValues?.getOrNull(1) ?: return
|
||||
|
||||
callback.invoke(
|
||||
ExtractorLink(
|
||||
"RStream", "RStream", link, rStreamAPI, Qualities.P720.value, INFER_TYPE
|
||||
"RStream", "RStream", link, "$rStreamAPI/", Qualities.P720.value, INFER_TYPE
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -2305,43 +2305,6 @@ object SoraExtractor : SoraStream() {
|
|||
|
||||
}
|
||||
|
||||
suspend fun invokeCryMovies(
|
||||
imdbId: String? = null,
|
||||
title: String? = null,
|
||||
year: Int? = null,
|
||||
episode: Int? = null,
|
||||
callback: (ExtractorLink) -> Unit
|
||||
) {
|
||||
app.get("${cryMoviesAPI}/stream/movie/$imdbId.json")
|
||||
.parsedSafe<CryMoviesResponse>()?.streams?.filter {
|
||||
matchingIndex(
|
||||
it.title, null, title, year, null, episode, false
|
||||
)
|
||||
}?.apmap { stream ->
|
||||
val quality = getIndexQuality(stream.title)
|
||||
val tags = getIndexQualityTags(stream.title)
|
||||
val size = getIndexSize(stream.title)
|
||||
val headers = stream.behaviorHints?.proxyHeaders?.request ?: mapOf()
|
||||
|
||||
if (!app.get(
|
||||
stream.url ?: return@apmap, headers = headers
|
||||
).isSuccessful
|
||||
) return@apmap
|
||||
|
||||
callback.invoke(
|
||||
ExtractorLink(
|
||||
"CryMovies",
|
||||
"CryMovies $tags [${size}]",
|
||||
stream.url,
|
||||
"",
|
||||
quality,
|
||||
headers = headers
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
suspend fun invokeNowTv(
|
||||
tmdbId: Int? = null,
|
||||
season: Int? = null,
|
||||
|
@ -2554,47 +2517,5 @@ object SoraExtractor : SoraStream() {
|
|||
)
|
||||
}
|
||||
|
||||
suspend fun invokeVatic(
|
||||
tmdbId: Int? = null,
|
||||
season: Int? = null,
|
||||
episode: Int? = null,
|
||||
subtitleCallback: (SubtitleFile) -> Unit,
|
||||
callback: (ExtractorLink) -> Unit,
|
||||
) {
|
||||
val vaticAPI = BuildConfig.VATIC_API
|
||||
val url = if (season == null) {
|
||||
"$vaticAPI/api/movie?id=$tmdbId"
|
||||
} else {
|
||||
"$vaticAPI/api/tv?id=$tmdbId&s=$season&e=$episode"
|
||||
}
|
||||
|
||||
val res = app.get(
|
||||
url
|
||||
).parsedSafe<VaticSources>()
|
||||
|
||||
res?.qualities?.map { source ->
|
||||
callback.invoke(
|
||||
ExtractorLink(
|
||||
"Vatic",
|
||||
"Vatic",
|
||||
source.path ?: return@map,
|
||||
"$vaticAPI/",
|
||||
if(source.quality.equals("auto", true)) Qualities.P1080.value else getQualityFromName(source.quality),
|
||||
INFER_TYPE
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
res?.srtfiles?.map { sub ->
|
||||
subtitleCallback.invoke(
|
||||
SubtitleFile(
|
||||
sub.caption ?: return@map,
|
||||
sub.url ?: return@map,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -183,25 +183,6 @@ data class WatchOnlineResponse(
|
|||
@JsonProperty("subtitles") val subtitles: ArrayList<WatchOnlineSubtitles>? = arrayListOf(),
|
||||
)
|
||||
|
||||
data class CryMoviesProxyHeaders(
|
||||
@JsonProperty("request") val request: Map<String, String>?,
|
||||
)
|
||||
|
||||
data class CryMoviesBehaviorHints(
|
||||
@JsonProperty("proxyHeaders") val proxyHeaders: CryMoviesProxyHeaders?,
|
||||
)
|
||||
|
||||
data class CryMoviesStream(
|
||||
@JsonProperty("title") val title: String? = null,
|
||||
@JsonProperty("url") val url: String? = null,
|
||||
@JsonProperty("description") val description: String? = null,
|
||||
@JsonProperty("behaviorHints") val behaviorHints: CryMoviesBehaviorHints? = null,
|
||||
)
|
||||
|
||||
data class CryMoviesResponse(
|
||||
@JsonProperty("streams") val streams: List<CryMoviesStream>? = null,
|
||||
)
|
||||
|
||||
data class FmoviesSubtitles(
|
||||
@JsonProperty("label") val label: String? = null,
|
||||
@JsonProperty("file") val file: String? = null,
|
||||
|
@ -401,18 +382,3 @@ data class ShowflixSearchMovies(
|
|||
data class ShowflixSearchSeries(
|
||||
@JsonProperty("results") val resultsSeries: ArrayList<ShowflixResultsSeries>? = arrayListOf(),
|
||||
)
|
||||
|
||||
data class VaticSrtfiles(
|
||||
@JsonProperty("caption") var caption: String? = null,
|
||||
@JsonProperty("url") var url: String? = null,
|
||||
)
|
||||
|
||||
data class VaticQualities(
|
||||
@JsonProperty("path") var path: String? = null,
|
||||
@JsonProperty("quality") var quality: String? = null,
|
||||
)
|
||||
|
||||
data class VaticSources(
|
||||
@JsonProperty("Qualities") var qualities: ArrayList<VaticQualities> = arrayListOf(),
|
||||
@JsonProperty("Srtfiles") var srtfiles: ArrayList<VaticSrtfiles> = arrayListOf(),
|
||||
)
|
|
@ -5,7 +5,6 @@ import com.hexated.SoraExtractor.invoke2embed
|
|||
import com.hexated.SoraExtractor.invokeAnimes
|
||||
import com.hexated.SoraExtractor.invokeBlackvid
|
||||
import com.hexated.SoraExtractor.invokeBollyMaza
|
||||
import com.hexated.SoraExtractor.invokeCryMovies
|
||||
import com.hexated.SoraExtractor.invokeDbgo
|
||||
import com.hexated.SoraExtractor.invokeFilmxy
|
||||
import com.hexated.SoraExtractor.invokeKimcartoon
|
||||
|
@ -31,7 +30,6 @@ import com.hexated.SoraExtractor.invokeNinetv
|
|||
import com.hexated.SoraExtractor.invokeNowTv
|
||||
import com.hexated.SoraExtractor.invokeRStream
|
||||
import com.hexated.SoraExtractor.invokeRidomovies
|
||||
import com.hexated.SoraExtractor.invokeShinobiMovies
|
||||
import com.hexated.SoraExtractor.invokeSmashyStream
|
||||
import com.hexated.SoraExtractor.invokeDumpStream
|
||||
import com.hexated.SoraExtractor.invokeEmovies
|
||||
|
@ -46,7 +44,6 @@ import com.hexated.SoraExtractor.invokePutactor
|
|||
import com.hexated.SoraExtractor.invokeShowflix
|
||||
import com.hexated.SoraExtractor.invokeTvMovies
|
||||
import com.hexated.SoraExtractor.invokeUhdmovies
|
||||
import com.hexated.SoraExtractor.invokeVatic
|
||||
import com.hexated.SoraExtractor.invokeVegamovies
|
||||
import com.hexated.SoraExtractor.invokeVidsrcto
|
||||
import com.hexated.SoraExtractor.invokeWatchOnline
|
||||
|
@ -103,7 +100,7 @@ open class SoraStream : TmdbProvider() {
|
|||
const val tvMoviesAPI = "https://www.tvseriesnmovies.com"
|
||||
const val moviezAddAPI = "https://ww3.moviezaddiction.click"
|
||||
const val bollyMazaAPI = "https://ww3.bollymaza.click"
|
||||
const val rStreamAPI = "https://remotestre.am"
|
||||
const val rStreamAPI = "https://remotestream.cc"
|
||||
const val flixonAPI = "https://flixon.lol"
|
||||
const val smashyStreamAPI = "https://embed.smashystream.com"
|
||||
const val watchSomuchAPI = "https://watchsomuch.tv" // sub only
|
||||
|
@ -131,12 +128,7 @@ open class SoraStream : TmdbProvider() {
|
|||
const val dotmoviesAPI = "https://dotmovies.monster"
|
||||
const val blackvidAPI = "https://prod.api.blackvid.space"
|
||||
const val showflixAPI = "https://showflix.online"
|
||||
|
||||
// INDEX SITE
|
||||
const val dahmerMoviesAPI = "https://edytjedhgmdhm.abfhaqrhbnf.workers.dev"
|
||||
const val shinobiMovieAPI = "https://home.shinobicloud.cf/0:"
|
||||
val cryMoviesAPI =
|
||||
base64DecodeAPI("ZXY=LmQ=cnM=a2U=b3I=Lnc=ZXI=ZGQ=bGE=cy0=b2I=YWM=Lmo=YWw=aW4=LWY=cm4=Ym8=cmU=Ly8=czo=dHA=aHQ=")
|
||||
|
||||
fun getType(t: String?): TvType {
|
||||
return when (t) {
|
||||
|
@ -585,17 +577,6 @@ open class SoraStream : TmdbProvider() {
|
|||
{
|
||||
if (!res.isAnime) invokePutactor(res.title, res.year, res.season, res.episode, callback)
|
||||
},
|
||||
{
|
||||
if (!res.isAnime) invokeShinobiMovies(
|
||||
shinobiMovieAPI,
|
||||
"ShinobiMovies",
|
||||
res.title,
|
||||
res.year,
|
||||
res.season,
|
||||
res.episode,
|
||||
callback
|
||||
)
|
||||
},
|
||||
{
|
||||
invokeWatchOnline(
|
||||
res.imdbId,
|
||||
|
@ -607,15 +588,6 @@ open class SoraStream : TmdbProvider() {
|
|||
callback
|
||||
)
|
||||
},
|
||||
{
|
||||
if (!res.isAnime && res.season == null) invokeCryMovies(
|
||||
res.imdbId,
|
||||
res.title,
|
||||
res.year,
|
||||
res.episode,
|
||||
callback
|
||||
)
|
||||
},
|
||||
{
|
||||
if (!res.isAnime) invokeNowTv(res.id, res.season, res.episode, callback)
|
||||
},
|
||||
|
@ -753,15 +725,6 @@ open class SoraStream : TmdbProvider() {
|
|||
callback
|
||||
)
|
||||
},
|
||||
{
|
||||
if (!res.isAnime) invokeVatic(
|
||||
res.id,
|
||||
res.season,
|
||||
res.episode,
|
||||
subtitleCallback,
|
||||
callback
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
return true
|
||||
|
|
|
@ -29,7 +29,6 @@ import com.hexated.SoraExtractor.invokeNetmovies
|
|||
import com.hexated.SoraExtractor.invokeGomovies
|
||||
import com.hexated.SoraExtractor.invokePutactor
|
||||
import com.hexated.SoraExtractor.invokeShowflix
|
||||
import com.hexated.SoraExtractor.invokeVatic
|
||||
import com.hexated.SoraExtractor.invokeVidSrc
|
||||
import com.hexated.SoraExtractor.invokeVidsrcto
|
||||
import com.hexated.SoraExtractor.invokeWatchOnline
|
||||
|
@ -312,15 +311,6 @@ class SoraStreamLite : SoraStream() {
|
|||
callback
|
||||
)
|
||||
},
|
||||
{
|
||||
if (!res.isAnime) invokeVatic(
|
||||
res.id,
|
||||
res.season,
|
||||
res.episode,
|
||||
subtitleCallback,
|
||||
callback
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
return true
|
||||
|
|
Loading…
Reference in a new issue