mirror of
https://github.com/hexated/cloudstream-extensions-hexated.git
synced 2024-08-15 00:03:22 +00:00
small fix
This commit is contained in:
parent
a83cb83bf1
commit
68991e3941
4 changed files with 110 additions and 23 deletions
|
@ -668,29 +668,16 @@ object SoraExtractor : SoraStream() {
|
||||||
season: Int? = null,
|
season: Int? = null,
|
||||||
episode: Int? = null,
|
episode: Int? = null,
|
||||||
subtitleCallback: (SubtitleFile) -> Unit,
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
) {
|
|
||||||
val (id, type) = getSoraIdAndType(title, year, season) ?: return
|
|
||||||
val json = fetchSoraEpisodes(id, type, episode) ?: return
|
|
||||||
|
|
||||||
json.subtitlingList?.map { sub ->
|
|
||||||
subtitleCallback.invoke(
|
|
||||||
SubtitleFile(
|
|
||||||
getVipLanguage(sub.languageAbbr ?: return@map),
|
|
||||||
sub.subtitlingUrl ?: return@map
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
suspend fun invokeSoraStreamLite(
|
|
||||||
title: String? = null,
|
|
||||||
year: Int? = null,
|
|
||||||
season: Int? = null,
|
|
||||||
episode: Int? = null,
|
|
||||||
subtitleCallback: (SubtitleFile) -> Unit,
|
|
||||||
callback: (ExtractorLink) -> Unit,
|
callback: (ExtractorLink) -> Unit,
|
||||||
) {
|
) {
|
||||||
val (id, type) = getSoraIdAndType(title, year, season) ?: return
|
val (id, type) = getSoraIdAndType(title, year, season) ?: return invokeJustchill(
|
||||||
|
title,
|
||||||
|
year,
|
||||||
|
season,
|
||||||
|
episode,
|
||||||
|
subtitleCallback,
|
||||||
|
callback
|
||||||
|
)
|
||||||
val json = fetchSoraEpisodes(id, type, episode) ?: return
|
val json = fetchSoraEpisodes(id, type, episode) ?: return
|
||||||
|
|
||||||
json.subtitlingList?.map { sub ->
|
json.subtitlingList?.map { sub ->
|
||||||
|
@ -721,6 +708,69 @@ object SoraExtractor : SoraStream() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun invokeJustchill(
|
||||||
|
title: String? = null,
|
||||||
|
year: Int? = null,
|
||||||
|
season: Int? = null,
|
||||||
|
episode: Int? = null,
|
||||||
|
subtitleCallback: (SubtitleFile) -> Unit,
|
||||||
|
callback: (ExtractorLink) -> Unit,
|
||||||
|
) {
|
||||||
|
val results =
|
||||||
|
app.get("$chillAPI/api/search?keyword=$title").parsedSafe<ChillSearch>()?.data?.results
|
||||||
|
val media = if (results?.size == 1) {
|
||||||
|
results.firstOrNull()
|
||||||
|
} else {
|
||||||
|
results?.find {
|
||||||
|
when (season) {
|
||||||
|
null -> {
|
||||||
|
it.name.equals(
|
||||||
|
title,
|
||||||
|
true
|
||||||
|
) && it.releaseTime == "$year"
|
||||||
|
}
|
||||||
|
1 -> {
|
||||||
|
it.name.contains(
|
||||||
|
"$title",
|
||||||
|
true
|
||||||
|
) && (it.releaseTime == "$year" || it.name.contains("Season $season", true))
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
it.name.contains(Regex("(?i)$title\\s?($season|${season.toRomanNumeral()}|Season\\s$season)")) && it.releaseTime == "$year"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ?: return
|
||||||
|
|
||||||
|
val episodeId = app.get("$chillAPI/api/detail?id=${media.id}&category=${media.domainType}").parsedSafe<Load>()?.data?.episodeVo?.find {
|
||||||
|
it.seriesNo == (episode ?: 0)
|
||||||
|
}?.id ?: return
|
||||||
|
|
||||||
|
val sources = app.get("$chillAPI/api/episode?id=${media.id}&category=${media.domainType}&episode=$episodeId").parsedSafe<ChillSources>()?.data
|
||||||
|
|
||||||
|
sources?.qualities?.map { source ->
|
||||||
|
callback.invoke(
|
||||||
|
ExtractorLink(
|
||||||
|
"ChillMovie",
|
||||||
|
"ChillMovie",
|
||||||
|
source.url ?: return@map null,
|
||||||
|
"",
|
||||||
|
source.quality ?: Qualities.Unknown.value,
|
||||||
|
true,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
sources?.subtitles?.map { sub ->
|
||||||
|
subtitleCallback.invoke(
|
||||||
|
SubtitleFile(
|
||||||
|
getVipLanguage(sub.lang ?: return@map), sub.url?.substringAfter("?url=") ?: return@map
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
suspend fun invokeXmovies(
|
suspend fun invokeXmovies(
|
||||||
title: String? = null,
|
title: String? = null,
|
||||||
year: Int? = null,
|
year: Int? = null,
|
||||||
|
@ -3193,4 +3243,39 @@ data class WatchOnlineSearch(
|
||||||
data class WatchOnlineResponse(
|
data class WatchOnlineResponse(
|
||||||
@JsonProperty("streams") val streams: HashMap<String, String>? = null,
|
@JsonProperty("streams") val streams: HashMap<String, String>? = null,
|
||||||
@JsonProperty("subtitles") val subtitles: Any? = null,
|
@JsonProperty("subtitles") val subtitles: Any? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ChillQualities(
|
||||||
|
@JsonProperty("quality") val quality: Int? = null,
|
||||||
|
@JsonProperty("url") val url: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ChillSubtitles(
|
||||||
|
@JsonProperty("lang") val lang: String? = null,
|
||||||
|
@JsonProperty("language") val language: String? = null,
|
||||||
|
@JsonProperty("url") val url: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ChillSource(
|
||||||
|
@JsonProperty("qualities") val qualities: ArrayList<ChillQualities>? = arrayListOf(),
|
||||||
|
@JsonProperty("subtitles") val subtitles: ArrayList<ChillSubtitles>? = arrayListOf(),
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ChillSources(
|
||||||
|
@JsonProperty("data") val data: ChillSource? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ChillResults(
|
||||||
|
@JsonProperty("id") val id: String,
|
||||||
|
@JsonProperty("domainType") val domainType: Int,
|
||||||
|
@JsonProperty("name") val name: String,
|
||||||
|
@JsonProperty("releaseTime") val releaseTime: String,
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ChillData(
|
||||||
|
@JsonProperty("results") val results: ArrayList<ChillResults>? = arrayListOf(),
|
||||||
|
)
|
||||||
|
|
||||||
|
data class ChillSearch(
|
||||||
|
@JsonProperty("data") val data: ChillData? = null,
|
||||||
)
|
)
|
|
@ -367,6 +367,7 @@ open class SoraStream : TmdbProvider() {
|
||||||
res.season,
|
res.season,
|
||||||
res.episode,
|
res.episode,
|
||||||
subtitleCallback,
|
subtitleCallback,
|
||||||
|
callback
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,7 +20,7 @@ import com.hexated.SoraExtractor.invokeMovieHab
|
||||||
import com.hexated.SoraExtractor.invokeRStream
|
import com.hexated.SoraExtractor.invokeRStream
|
||||||
import com.hexated.SoraExtractor.invokeSeries9
|
import com.hexated.SoraExtractor.invokeSeries9
|
||||||
import com.hexated.SoraExtractor.invokeSmashyStream
|
import com.hexated.SoraExtractor.invokeSmashyStream
|
||||||
import com.hexated.SoraExtractor.invokeSoraStreamLite
|
import com.hexated.SoraExtractor.invokeSoraStream
|
||||||
import com.hexated.SoraExtractor.invokeTwoEmbed
|
import com.hexated.SoraExtractor.invokeTwoEmbed
|
||||||
import com.hexated.SoraExtractor.invokeUniqueStream
|
import com.hexated.SoraExtractor.invokeUniqueStream
|
||||||
import com.hexated.SoraExtractor.invokeVidSrc
|
import com.hexated.SoraExtractor.invokeVidSrc
|
||||||
|
@ -54,7 +54,7 @@ class SoraStreamLite : SoraStream() {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
invokeSoraStreamLite(
|
invokeSoraStream(
|
||||||
res.title,
|
res.title,
|
||||||
res.year,
|
res.year,
|
||||||
res.season,
|
res.season,
|
||||||
|
|
|
@ -42,6 +42,7 @@ import kotlin.collections.ArrayList
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
val soraAPI = base64DecodeAPI("cA==YXA=cy8=Y20=di8=LnQ=b2s=a2w=bG8=aS4=YXA=ZS0=aWw=b2I=LW0=Z2E=Ly8=czo=dHA=aHQ=")
|
val soraAPI = base64DecodeAPI("cA==YXA=cy8=Y20=di8=LnQ=b2s=a2w=bG8=aS4=YXA=ZS0=aWw=b2I=LW0=Z2E=Ly8=czo=dHA=aHQ=")
|
||||||
|
val chillAPI = base64DecodeAPI("dg==LnQ=bGw=aGk=dGM=dXM=Lmo=b2s=a2w=bG8=Ly8=czo=dHA=aHQ=")
|
||||||
|
|
||||||
val soraHeaders = mapOf(
|
val soraHeaders = mapOf(
|
||||||
"lang" to "en",
|
"lang" to "en",
|
||||||
|
|
Loading…
Reference in a new issue