diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index 3ab2ca52..e2190137 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -717,59 +717,17 @@ object SoraExtractor : SoraStream() { ) } } - - private suspend fun invokeNetMovies( - id: String? = null, - type: String? = null, - episode: Int? = null, - subtitleCallback: (SubtitleFile) -> Unit, - callback: (ExtractorLink) -> Unit - ) { - val epsId = app.get( - "$netMoviesAPI/detail?category=$type&id=$id", - ).parsedSafe()?.data?.episodeVo?.find { - it.seriesNo == (episode ?: 0) - }?.id ?: return - - val sources = app.get("$netMoviesAPI/episode?category=$type&id=$id&episode=$epsId") - .parsedSafe()?.data ?: return - - sources.subtitles?.map { sub -> - subtitleCallback.invoke( - SubtitleFile( - getVipLanguage(sub.lang ?: return@map null), - sub.url ?: return@map null - ) - ) - } - - sources.qualities?.map { source -> - callback.invoke( - ExtractorLink( - "NetMovies", - "NetMovies", - source.url ?: return@map null, - "", - source.quality?.toIntOrNull() ?: Qualities.Unknown.value, - isM3u8 = true, - ) - ) - } - - } - suspend fun invokeSoraStream( title: String? = null, year: Int? = null, season: Int? = null, episode: Int? = null, subtitleCallback: (SubtitleFile) -> Unit, - callback: (ExtractorLink) -> Unit ) { val headers = mapOf( "lang" to "en", - "versioncode" to "11", - "clienttype" to "ios_jike_default" + "versioncode" to "32", + "clienttype" to "android_tem3", ) val vipAPI = base64DecodeAPI("cA==YXA=cy8=Y20=di8=LnQ=b2s=a2w=bG8=aS4=YXA=ZS0=aWw=b2I=LW0=Z2E=Ly8=czo=dHA=aHQ=") @@ -814,17 +772,14 @@ object SoraExtractor : SoraStream() { val id = script?.third?.last() ?: return val type = script.third?.get(2) ?: return - val jsonResponse = app.get( + val json = app.get( "$vipAPI/movieDrama/get?id=${id}&category=${type}", headers = headers - ).parsedSafe()?.data - ?: return invokeNetMovies(id, type, episode, subtitleCallback, callback) - - val json = jsonResponse.episodeVo?.find { + ).parsedSafe()?.data?.episodeVo?.find { it.seriesNo == (episode ?: 0) - } + } ?: return - json?.subtitlingList?.map { sub -> + json.subtitlingList?.map { sub -> subtitleCallback.invoke( SubtitleFile( getVipLanguage(sub.languageAbbr ?: return@map), @@ -833,28 +788,6 @@ object SoraExtractor : SoraStream() { ) } - json?.definitionList?.apmap { video -> - val body = - """[{"category":$type,"contentId":"$id","episodeId":${json.id},"definition":"${video.code}"}]""".toRequestBody( - RequestBodyTypes.JSON.toMediaTypeOrNull() - ) - val response = app.post( - "${vipAPI}/media/bathGetplayInfo", - requestBody = body, - headers = headers, - ).text.let { tryParseJson(it)?.data?.firstOrNull() } - callback.invoke( - ExtractorLink( - this.name, - this.name, - response?.mediaUrl ?: return@apmap null, - "", - getSoraQuality(response.currentDefinition ?: ""), - isM3u8 = true, - ) - ) - } - } suspend fun invokeXmovies( @@ -2462,26 +2395,6 @@ data class Load( @JsonProperty("data") val data: MediaDetail? = null, ) -data class NetMoviesSubtitles( - @JsonProperty("lang") val lang: String? = null, - @JsonProperty("language") val language: String? = null, - @JsonProperty("url") val url: String? = null, -) - -data class NetMoviesQualities( - @JsonProperty("quality") val quality: String? = null, - @JsonProperty("url") val url: String? = null, -) - -data class NetMoviesData( - @JsonProperty("subtitles") val subtitles: ArrayList? = arrayListOf(), - @JsonProperty("qualities") val qualities: ArrayList? = arrayListOf(), -) - -data class NetMoviesSources( - @JsonProperty("data") val data: NetMoviesData? = null, -) - data class ConsumetHeaders( @JsonProperty("Referer") val referer: String? = null, ) @@ -2577,15 +2490,6 @@ data class DirectDl( @JsonProperty("download_url") val download_url: String? = null, ) -data class PreviewResponse( - @JsonProperty("data") val data: ArrayList? = arrayListOf(), -) - -data class PreviewVideos( - @JsonProperty("mediaUrl") val mediaUrl: String? = null, - @JsonProperty("currentDefinition") val currentDefinition: String? = null, -) - data class Safelink( @JsonProperty("safelink") val safelink: String? = null, ) diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt index 2ffabe5d..bd16ee03 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt @@ -73,13 +73,10 @@ open class SoraStream : TmdbProvider() { private val apiKey = base64DecodeAPI("ZTM=NTg=MjM=MjM=ODc=MzI=OGQ=MmE=Nzk=Nzk=ZjI=NTA=NDY=NDA=MzA=YjA=") // PLEASE DON'T STEAL - - // private val mainAPI = +// private val mainAPI = // base64DecodeAPI("cHA=LmE=ZWw=cmM=dmU=aC4=dGM=d2E=eHA=Ly8=czo=dHA=aHQ=") // private var mainServerAPI = // base64DecodeAPI("cA==YXA=bC4=Y2U=ZXI=LnY=aWU=b3Y=LW0=cmE=c28=Ly8=czo=dHA=aHQ=") - var netMoviesAPI = - base64DecodeAPI("aQ==YXA=cC8=YXA=bC4=Y2U=ZXI=LnY=bG0=Zmk=dC0=bmU=Ly8=czo=dHA=aHQ=") // ALL SOURCES const val twoEmbedAPI = "https://www.2embed.to" @@ -345,7 +342,6 @@ open class SoraStream : TmdbProvider() { res.season, res.episode, subtitleCallback, - callback ) }, {