diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index df343b8e..b81dbfd7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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: | diff --git a/SoraStream/build.gradle.kts b/SoraStream/build.gradle.kts index 56d9892f..98e0a7be 100644 --- a/SoraStream/build.gradle.kts +++ b/SoraStream/build.gradle.kts @@ -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")}\"") diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index bd2fcb9a..764f0b4e 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -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()?.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() - - 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, - ) - ) - } - - } - } diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt b/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt index 06d47891..c9d0800a 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt @@ -183,25 +183,6 @@ data class WatchOnlineResponse( @JsonProperty("subtitles") val subtitles: ArrayList? = arrayListOf(), ) -data class CryMoviesProxyHeaders( - @JsonProperty("request") val request: Map?, -) - -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? = null, -) - data class FmoviesSubtitles( @JsonProperty("label") val label: String? = null, @JsonProperty("file") val file: String? = null, @@ -400,19 +381,4 @@ data class ShowflixSearchMovies( data class ShowflixSearchSeries( @JsonProperty("results") val resultsSeries: ArrayList? = 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 = arrayListOf(), - @JsonProperty("Srtfiles") var srtfiles: ArrayList = arrayListOf(), ) \ No newline at end of file diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt index bdcb52f5..4d562973 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt @@ -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 diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt index 63676c76..1028c600 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt @@ -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