fixed Zoro & AnimeKaizoku movie

This commit is contained in:
hexated 2023-01-11 15:08:53 +07:00
parent 7ce045ccd7
commit 521e8021d0
2 changed files with 42 additions and 14 deletions

View file

@ -1094,16 +1094,26 @@ object SoraExtractor : SoraStream() {
suspend fun invokeAnimes(
id: Int? = null,
title: String? = null,
year: Int? = null,
season: Int? = null,
episode: Int? = null,
subtitleCallback: (SubtitleFile) -> Unit,
callback: (ExtractorLink) -> Unit
) {
val malId = if (season != null) app.get("$tmdb2mal/?id=$id&s=$season").text.trim() else null
val malId =
if (season != null) app.get("$tmdb2mal/?id=$id&s=$season").text.trim()
else app.get("${jikanAPI}/anime?q=${title}&start_date=${year}&type=movie&limit=1")
.parsedSafe<JikanResponse>()?.data?.firstOrNull()?.mal_id
val aniId = app.post(
"https://graphql.anilist.co/", data = mapOf(
"query" to "{Media(idMal:$malId,type:ANIME){id}}",
)
).parsedSafe<DataAni>()?.data?.media?.id
argamap(
{
if (season != null) invokeZoro(malId, episode, subtitleCallback, callback)
invokeZoro(aniId, episode, subtitleCallback, callback)
},
{
invokeAnimeKaizoku(title, malId, season, episode, callback)
@ -1112,14 +1122,14 @@ object SoraExtractor : SoraStream() {
}
private suspend fun invokeZoro(
malId: String? = null,
aniId: String? = null,
episode: Int? = null,
subtitleCallback: (SubtitleFile) -> Unit,
callback: (ExtractorLink) -> Unit
) {
val episodeId = app.get("$consumetMalAPI/info/$malId?provider=zoro")
val episodeId = app.get("$consumetAnilistAPI/info/$aniId?provider=zoro")
.parsedSafe<ConsumetDetails>()?.episodes?.find {
it.number == episode
it.number == (episode ?: 1)
}?.id?.substringBeforeLast("$") ?: return
listOf(
@ -1161,15 +1171,12 @@ object SoraExtractor : SoraStream() {
episode: Int? = null,
callback: (ExtractorLink) -> Unit
) {
val fixTitle = title.fixTitle()
val search = app.get("$animeKaizokuAPI/?s=${fixTitle?.replace("-", " ")}").document
val fixTitle = title.fixTitle()?.replace("-", " ")
val search = app.get("$animeKaizokuAPI/?s=${fixTitle}").document
val detailHref =
search.select("ul#posts-container li").map { it.selectFirst("a")?.attr("href") }
.find {
if (season == null) it?.contains(
fixTitle ?: return,
true
) == true else it?.contains(malId ?: return) == true
it?.contains(malId ?: return) == true
}?.let { fixUrl(it, animeKaizokuAPI) }
val detail = app.get(detailHref ?: return).document
@ -2126,3 +2133,23 @@ data class Safelink(
data class FDAds(
@JsonProperty("linkr") val linkr: String? = null,
)
data class DataMal(
@JsonProperty("mal_id") val mal_id: String? = null,
)
data class JikanResponse(
@JsonProperty("data") val data: ArrayList<DataMal>? = arrayListOf(),
)
data class IdAni(
@JsonProperty("id") val id: String? = null,
)
data class MediaAni(
@JsonProperty("Media") val media: IdAni? = null,
)
data class DataAni(
@JsonProperty("data") val data: MediaAni? = null,
)

View file

@ -58,8 +58,9 @@ 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
const val tmdb2mal = "https://tmdb2mal.slidemovies.org"
const val jikanAPI = "https://api.jikan.moe/v4"
const val gdbot = "https://gdbot.xyz"
const val consumetMalAPI = "https://api.consumet.org/meta/mal"
const val consumetAnilistAPI = "https://api.consumet.org/meta/anilist"
private val mainAPI =
base64DecodeAPI("cHA=LmE=ZWw=cmM=dmU=aC4=dGM=d2E=eHA=Ly8=czo=dHA=aHQ=")
@ -354,7 +355,7 @@ open class SoraStream : TmdbProvider() {
// )
// },
{
if (res.isAnime) invokeAnimes(res.id, res.title, res.season, res.episode, subtitleCallback, callback)
if (res.isAnime) invokeAnimes(res.id, res.title, res.year, res.season, res.episode, subtitleCallback, callback)
},
{
if (res.season != null && res.isAnime) invokeCrunchyroll(