mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
fixed #306
This commit is contained in:
parent
6e5a313680
commit
d7c2ecbebd
5 changed files with 101 additions and 6 deletions
|
@ -1,7 +1,7 @@
|
||||||
import org.jetbrains.kotlin.konan.properties.Properties
|
import org.jetbrains.kotlin.konan.properties.Properties
|
||||||
|
|
||||||
// use an integer for version numbers
|
// use an integer for version numbers
|
||||||
version = 179
|
version = 180
|
||||||
|
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
|
|
|
@ -2159,6 +2159,56 @@ object SoraExtractor : SoraStream() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun invokeShowflix(
|
||||||
|
title: String? = null,
|
||||||
|
year: Int? = null,
|
||||||
|
season: Int? = null,
|
||||||
|
episode: Int? = null,
|
||||||
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
|
callback: (ExtractorLink) -> Unit,
|
||||||
|
) {
|
||||||
|
val where = if(season==null) "movieName" else "seriesName"
|
||||||
|
val classes = if(season==null) "movies" else "series"
|
||||||
|
val body = """
|
||||||
|
{
|
||||||
|
"where": {
|
||||||
|
"$where": {
|
||||||
|
"${'$'}regex": "$title",
|
||||||
|
"${'$'}options": "i"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"order": "-updatedAt",
|
||||||
|
"_method": "GET",
|
||||||
|
"_ApplicationId": "SHOWFLIXAPPID",
|
||||||
|
"_JavaScriptKey": "SHOWFLIXMASTERKEY",
|
||||||
|
"_ClientVersion": "js3.4.1",
|
||||||
|
"_InstallationId": "6d19fd87-a0e8-47b2-a3c0-48c16add928b"
|
||||||
|
}
|
||||||
|
""".trimIndent().toRequestBody(RequestBodyTypes.JSON.toMediaTypeOrNull())
|
||||||
|
|
||||||
|
val data = app.post("https://parse.showflix.tk/parse/classes/$classes", requestBody = body).text
|
||||||
|
val iframes = if(season==null) {
|
||||||
|
val result = tryParseJson<ShowflixSearchMovies>(data)?.resultsMovies?.find { it.movieName.equals("$title ($year)", true) }
|
||||||
|
listOf(
|
||||||
|
"https://streamwish.to/e/${result?.streamwish}",
|
||||||
|
"https://filelions.to/v/${result?.filelions}.html",
|
||||||
|
"https://streamruby.com/e/${result?.streamruby}.html",
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
val result = tryParseJson<ShowflixSearchSeries>(data)?.resultsSeries?.find { it.seriesName.equals(title, true) }
|
||||||
|
listOf(
|
||||||
|
result?.streamwish?.get("Season $season")?.get(episode!!),
|
||||||
|
result?.filelions?.get("Season $season")?.get(episode!!),
|
||||||
|
result?.streamruby?.get("Season $season")?.get(episode!!),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
iframes.apmap { iframe ->
|
||||||
|
loadExtractor(iframe ?: return@apmap, "$showflixAPI/", subtitleCallback, callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
suspend fun invokeWatchOnline(
|
suspend fun invokeWatchOnline(
|
||||||
imdbId: String? = null,
|
imdbId: String? = null,
|
||||||
title: String? = null,
|
title: String? = null,
|
||||||
|
|
|
@ -393,4 +393,26 @@ data class BlackvidSources(
|
||||||
data class BlackvidResponses(
|
data class BlackvidResponses(
|
||||||
@JsonProperty("sources") var sources: ArrayList<BlackvidSources> = arrayListOf(),
|
@JsonProperty("sources") var sources: ArrayList<BlackvidSources> = arrayListOf(),
|
||||||
@JsonProperty("subtitles") var subtitles: ArrayList<BlackvidSubtitles> = arrayListOf()
|
@JsonProperty("subtitles") var subtitles: ArrayList<BlackvidSubtitles> = arrayListOf()
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ShowflixResultsMovies(
|
||||||
|
@JsonProperty("movieName") val movieName: String? = null,
|
||||||
|
@JsonProperty("streamwish") val streamwish: String? = null,
|
||||||
|
@JsonProperty("filelions") val filelions: String? = null,
|
||||||
|
@JsonProperty("streamruby") val streamruby: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ShowflixResultsSeries(
|
||||||
|
@JsonProperty("seriesName") val seriesName: String? = null,
|
||||||
|
@JsonProperty("streamwish") val streamwish: HashMap<String, List<String>>? = hashMapOf(),
|
||||||
|
@JsonProperty("filelions") val filelions: HashMap<String, List<String>>? = hashMapOf(),
|
||||||
|
@JsonProperty("streamruby") val streamruby: HashMap<String, List<String>>? = hashMapOf(),
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ShowflixSearchMovies(
|
||||||
|
@JsonProperty("results") val resultsMovies: ArrayList<ShowflixResultsMovies>? = arrayListOf(),
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ShowflixSearchSeries(
|
||||||
|
@JsonProperty("results") val resultsSeries: ArrayList<ShowflixResultsSeries>? = arrayListOf(),
|
||||||
)
|
)
|
|
@ -43,6 +43,7 @@ import com.hexated.SoraExtractor.invokeNetmovies
|
||||||
import com.hexated.SoraExtractor.invokePobmovies
|
import com.hexated.SoraExtractor.invokePobmovies
|
||||||
import com.hexated.SoraExtractor.invokeGomovies
|
import com.hexated.SoraExtractor.invokeGomovies
|
||||||
import com.hexated.SoraExtractor.invokePutactor
|
import com.hexated.SoraExtractor.invokePutactor
|
||||||
|
import com.hexated.SoraExtractor.invokeShowflix
|
||||||
import com.hexated.SoraExtractor.invokeTvMovies
|
import com.hexated.SoraExtractor.invokeTvMovies
|
||||||
import com.hexated.SoraExtractor.invokeUhdmovies
|
import com.hexated.SoraExtractor.invokeUhdmovies
|
||||||
import com.hexated.SoraExtractor.invokeVegamovies
|
import com.hexated.SoraExtractor.invokeVegamovies
|
||||||
|
@ -95,7 +96,7 @@ open class SoraStream : TmdbProvider() {
|
||||||
const val crunchyrollAPI = "https://beta-api.crunchyroll.com"
|
const val crunchyrollAPI = "https://beta-api.crunchyroll.com"
|
||||||
const val kissKhAPI = "https://kisskh.co"
|
const val kissKhAPI = "https://kisskh.co"
|
||||||
const val lingAPI = "https://ling-online.net"
|
const val lingAPI = "https://ling-online.net"
|
||||||
const val uhdmoviesAPI = "https://uhdmovies.store"
|
const val uhdmoviesAPI = "https://uhdmovies.click"
|
||||||
const val gMoviesAPI = "https://gdrivemovies.xyz"
|
const val gMoviesAPI = "https://gdrivemovies.xyz"
|
||||||
const val fdMoviesAPI = "https://freedrivemovie.lol"
|
const val fdMoviesAPI = "https://freedrivemovie.lol"
|
||||||
const val m4uhdAPI = "https://ww2.m4ufree.com"
|
const val m4uhdAPI = "https://ww2.m4ufree.com"
|
||||||
|
@ -124,12 +125,13 @@ open class SoraStream : TmdbProvider() {
|
||||||
const val putactorAPI = "https://putlocker.actor"
|
const val putactorAPI = "https://putlocker.actor"
|
||||||
const val susflixAPI = "https://susflix.tv"
|
const val susflixAPI = "https://susflix.tv"
|
||||||
const val jump1API = "https://ca.jump1.net"
|
const val jump1API = "https://ca.jump1.net"
|
||||||
const val vegaMoviesAPI = "https://vegamovies.im"
|
const val vegaMoviesAPI = "https://vegamovies.id"
|
||||||
const val hdmovies4uAPI = "https://hdmovies4u.name"
|
const val hdmovies4uAPI = "https://hdmovies4u.name"
|
||||||
const val watchflxAPI = "https://watchflx.tv"
|
const val watchflxAPI = "https://watchflx.tv"
|
||||||
const val gomoviesAPI = "https://gomovies-online.cam"
|
const val gomoviesAPI = "https://gomovies-online.cam"
|
||||||
const val dotmoviesAPI = "https://dotmovies.today"
|
const val dotmoviesAPI = "https://dotmovies.monster"
|
||||||
const val blackvidAPI = "https://prod.api.blackvid.space"
|
const val blackvidAPI = "https://prod.api.blackvid.space"
|
||||||
|
const val showflixAPI = "https://showflix.online"
|
||||||
|
|
||||||
// INDEX SITE
|
// INDEX SITE
|
||||||
const val dahmerMoviesAPI = "https://edytjedhgmdhm.abfhaqrhbnf.workers.dev"
|
const val dahmerMoviesAPI = "https://edytjedhgmdhm.abfhaqrhbnf.workers.dev"
|
||||||
|
@ -742,7 +744,17 @@ open class SoraStream : TmdbProvider() {
|
||||||
subtitleCallback,
|
subtitleCallback,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
if (!res.isAnime) invokeShowflix(
|
||||||
|
res.title,
|
||||||
|
res.year,
|
||||||
|
res.season,
|
||||||
|
res.episode,
|
||||||
|
subtitleCallback,
|
||||||
|
callback
|
||||||
|
)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.hexated.SoraExtractor.invokeMultimovies
|
||||||
import com.hexated.SoraExtractor.invokeNetmovies
|
import com.hexated.SoraExtractor.invokeNetmovies
|
||||||
import com.hexated.SoraExtractor.invokeGomovies
|
import com.hexated.SoraExtractor.invokeGomovies
|
||||||
import com.hexated.SoraExtractor.invokePutactor
|
import com.hexated.SoraExtractor.invokePutactor
|
||||||
|
import com.hexated.SoraExtractor.invokeShowflix
|
||||||
import com.hexated.SoraExtractor.invokeVidSrc
|
import com.hexated.SoraExtractor.invokeVidSrc
|
||||||
import com.hexated.SoraExtractor.invokeVidsrcto
|
import com.hexated.SoraExtractor.invokeVidsrcto
|
||||||
import com.hexated.SoraExtractor.invokeWatchOnline
|
import com.hexated.SoraExtractor.invokeWatchOnline
|
||||||
|
@ -309,7 +310,17 @@ class SoraStreamLite : SoraStream() {
|
||||||
subtitleCallback,
|
subtitleCallback,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
if (!res.isAnime) invokeShowflix(
|
||||||
|
res.title,
|
||||||
|
res.year,
|
||||||
|
res.season,
|
||||||
|
res.episode,
|
||||||
|
subtitleCallback,
|
||||||
|
callback
|
||||||
|
)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
Loading…
Reference in a new issue