mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
sora: added jmdkhMovie
This commit is contained in:
parent
7a9c41d2ab
commit
9654ff0cbe
4 changed files with 46 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
||||||
// use an integer for version numbers
|
// use an integer for version numbers
|
||||||
version = 92
|
version = 93
|
||||||
|
|
||||||
|
|
||||||
cloudstream {
|
cloudstream {
|
||||||
|
|
|
@ -2249,6 +2249,26 @@ object SoraExtractor : SoraStream() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun invokeJmdkhMovies(
|
||||||
|
apiUrl: String,
|
||||||
|
api: String,
|
||||||
|
title: String? = null,
|
||||||
|
year: Int? = null,
|
||||||
|
season: Int? = null,
|
||||||
|
episode: Int? = null,
|
||||||
|
callback: (ExtractorLink) -> Unit,
|
||||||
|
) {
|
||||||
|
invokeIndex(
|
||||||
|
apiUrl,
|
||||||
|
api,
|
||||||
|
title,
|
||||||
|
year,
|
||||||
|
season,
|
||||||
|
episode,
|
||||||
|
callback,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private suspend fun invokeIndex(
|
private suspend fun invokeIndex(
|
||||||
apiUrl: String,
|
apiUrl: String,
|
||||||
api: String,
|
api: String,
|
||||||
|
@ -2361,9 +2381,8 @@ object SoraExtractor : SoraStream() {
|
||||||
val (seasonSlug, episodeSlug) = getEpisodeSlug(season, episode)
|
val (seasonSlug, episodeSlug) = getEpisodeSlug(season, episode)
|
||||||
|
|
||||||
val files = app.get(
|
val files = app.get(
|
||||||
"https://api.telegram.d1.zindex.eu.org/search?name=$query&page=1",
|
"https://api.telegram.d1.zindex.eu.org/search?name=${encode(query)}&page=1",
|
||||||
referer = tgarMovieAPI,
|
referer = tgarMovieAPI,
|
||||||
timeout = 120L
|
|
||||||
).parsedSafe<TgarData>()?.results?.filter { media ->
|
).parsedSafe<TgarData>()?.results?.filter { media ->
|
||||||
(if (season == null) {
|
(if (season == null) {
|
||||||
media.name?.contains("$year") == true
|
media.name?.contains("$year") == true
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.hexated.SoraExtractor.invokeFlixon
|
||||||
import com.hexated.SoraExtractor.invokeFwatayako
|
import com.hexated.SoraExtractor.invokeFwatayako
|
||||||
import com.hexated.SoraExtractor.invokeGMovies
|
import com.hexated.SoraExtractor.invokeGMovies
|
||||||
import com.hexated.SoraExtractor.invokeGomovies
|
import com.hexated.SoraExtractor.invokeGomovies
|
||||||
|
import com.hexated.SoraExtractor.invokeJmdkhMovies
|
||||||
import com.hexated.SoraExtractor.invokeJsmovies
|
import com.hexated.SoraExtractor.invokeJsmovies
|
||||||
import com.hexated.SoraExtractor.invokeKisskh
|
import com.hexated.SoraExtractor.invokeKisskh
|
||||||
import com.hexated.SoraExtractor.invokeLing
|
import com.hexated.SoraExtractor.invokeLing
|
||||||
|
@ -127,6 +128,7 @@ open class SoraStream : TmdbProvider() {
|
||||||
const val papaonMovies2API = "https://m.papaonwork.workers.dev/1:"
|
const val papaonMovies2API = "https://m.papaonwork.workers.dev/1:"
|
||||||
const val dahmerMoviesAPI = "https://edytjedhgmdhm.abfhaqrhbnf.workers.dev"
|
const val dahmerMoviesAPI = "https://edytjedhgmdhm.abfhaqrhbnf.workers.dev"
|
||||||
const val tgarMovieAPI = "https://tgarchive.eu.org"
|
const val tgarMovieAPI = "https://tgarchive.eu.org"
|
||||||
|
const val jmdkhMovieAPI = "https://tg.jmdkh.eu.org/0:"
|
||||||
|
|
||||||
fun getType(t: String?): TvType {
|
fun getType(t: String?): TvType {
|
||||||
return when (t) {
|
return when (t) {
|
||||||
|
@ -720,6 +722,17 @@ open class SoraStream : TmdbProvider() {
|
||||||
{
|
{
|
||||||
if (!res.isAnime) invokeTgarMovies(res.title, res.year, res.season, res.episode, callback)
|
if (!res.isAnime) invokeTgarMovies(res.title, res.year, res.season, res.episode, callback)
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
if (!res.isAnime) invokeJmdkhMovies(
|
||||||
|
jmdkhMovieAPI,
|
||||||
|
"JmdkhMovies",
|
||||||
|
res.title,
|
||||||
|
res.year,
|
||||||
|
res.season,
|
||||||
|
res.episode,
|
||||||
|
callback
|
||||||
|
)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -24,6 +24,7 @@ import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
import java.net.URLEncoder
|
||||||
import java.security.MessageDigest
|
import java.security.MessageDigest
|
||||||
import java.security.SecureRandom
|
import java.security.SecureRandom
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -44,6 +45,7 @@ val encodedIndex = arrayOf(
|
||||||
"XtremeMovies",
|
"XtremeMovies",
|
||||||
"PapaonMovies[1]",
|
"PapaonMovies[1]",
|
||||||
"PapaonMovies[2]",
|
"PapaonMovies[2]",
|
||||||
|
"JmdkhMovies",
|
||||||
)
|
)
|
||||||
|
|
||||||
val lockedIndex = arrayOf(
|
val lockedIndex = arrayOf(
|
||||||
|
@ -52,7 +54,8 @@ val lockedIndex = arrayOf(
|
||||||
)
|
)
|
||||||
|
|
||||||
val mkvIndex = arrayOf(
|
val mkvIndex = arrayOf(
|
||||||
"EdithxMovies"
|
"EdithxMovies",
|
||||||
|
"JmdkhMovies",
|
||||||
)
|
)
|
||||||
|
|
||||||
val untrimmedIndex = arrayOf(
|
val untrimmedIndex = arrayOf(
|
||||||
|
@ -674,7 +677,7 @@ fun searchIndex(
|
||||||
response: String,
|
response: String,
|
||||||
isTrimmed: Boolean = true,
|
isTrimmed: Boolean = true,
|
||||||
): List<IndexMedia>? {
|
): List<IndexMedia>? {
|
||||||
val (dotSlug, spaceSlug) = getTitleSlug(title)
|
val (dotSlug, spaceSlug, slashSlug) = getTitleSlug(title)
|
||||||
val (seasonSlug, episodeSlug) = getEpisodeSlug(season, episode)
|
val (seasonSlug, episodeSlug) = getEpisodeSlug(season, episode)
|
||||||
val files = tryParseJson<IndexSearch>(response)?.data?.files?.filter { media ->
|
val files = tryParseJson<IndexSearch>(response)?.data?.files?.filter { media ->
|
||||||
(if (season == null) {
|
(if (season == null) {
|
||||||
|
@ -692,7 +695,10 @@ fun searchIndex(
|
||||||
) || media.name.replace(
|
) || media.name.replace(
|
||||||
"-",
|
"-",
|
||||||
" "
|
" "
|
||||||
).contains("$spaceSlug", true))
|
).contains("$spaceSlug", true) || media.name.replace(
|
||||||
|
"-",
|
||||||
|
"_"
|
||||||
|
).contains("$slashSlug", true))
|
||||||
}?.distinctBy { it.name }?.sortedByDescending { it.size?.toLongOrNull() ?: 0 } ?: return null
|
}?.distinctBy { it.name }?.sortedByDescending { it.size?.toLongOrNull() ?: 0 } ?: return null
|
||||||
|
|
||||||
return if (isTrimmed) {
|
return if (isTrimmed) {
|
||||||
|
@ -844,6 +850,8 @@ fun getBaseUrl(url: String): String {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun encode(input: String): String? = URLEncoder.encode(input, "utf-8")
|
||||||
|
|
||||||
fun decryptStreamUrl(data: String): String {
|
fun decryptStreamUrl(data: String): String {
|
||||||
|
|
||||||
fun getTrash(arr: List<String>, item: Int): List<String> {
|
fun getTrash(arr: List<String>, item: Int): List<String> {
|
||||||
|
|
Loading…
Reference in a new issue