Update AniSAGA.kt

This commit is contained in:
Arkai1 2025-04-11 18:24:25 +05:30 committed by GitHub
parent ad93fe7001
commit 66d324e14f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,7 +1,8 @@
package eu.kanade.tachiyomi.animeextension.hi.animesaga
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animeextension.hi.animesaga.extractors.PlyrXExtractor
import eu.kanade.tachiyomi.animesource.model.SubtitleFile
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.lib.chillxextractor.ChillxExtractor
import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay
import eu.kanade.tachiyomi.network.POST
@ -9,50 +10,42 @@ import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.FormBody
import okhttp3.Response
import org.jsoup.nodes.Element
import eu.kanade.tachiyomi.animeextension.hi.animesaga.extractors.PlyrXExtractor
class AniSAGA : DooPlay(
"hi",
"AniSAGA",
"https://www.anisaga.org",
) {
private val videoHost = "https://plyrxcdn.site/"
private val chillxExtractor by lazy { ChillxExtractor(client, headers) }
private val plyrXExtractor by lazy { PlyrXExtractor(client) }
private val videoHost = "plyrxcdn.site"
private val chillxExtractor by lazy { ChillxExtractor(client, headers) }
private val plyrXExtractor by lazy { PlyrXExtractor(network, headers) }
// ============================== Popular ===============================
override fun popularAnimeSelector() = "div.top-imdb-list > div.top-imdb-item"
// ============================ Video Links =============================
private var subtitleCallback: (SubtitleFile) -> Unit = {}
override fun setVideoLoadListener(subtitleCb: (SubtitleFile) -> Unit) {
subtitleCallback = subtitleCb
}
override fun videoListParse(response: Response): List<Video> {
val document = response.asJsoup()
val doc = response.asJsoup()
val playerUrls = doc.select("ul#playeroptionsul li:not([id=player-option-trailer])")
.map(::getPlayerUrl)
val players = document.select("ul#playeroptionsul li:not([id=player-option-trailer])")
val videoList = mutableListOf<Video>()
players.forEach { player ->
val url = getPlayerUrl(player)
val videos = runCatching {
getPlayerVideos(url)
}.getOrElse { emptyList() }
videoList.addAll(videos)
playerUrls.forEach { url ->
val videos = getPlayerVideos(url) {
subtitleList.add(it)
}
videoList += videos
}
return videoList
}
private fun getPlayerVideos(url: String): List<Video> {
private val subtitleList = mutableListOf<SubtitleFile>()
override fun subtitleListParse(response: Response): List<SubtitleFile> = subtitleList
private fun getPlayerVideos(url: String, subtitleCallback: (SubtitleFile) -> Unit = {}): List<Video> {
return when {
videoHost in url -> plyrXExtractor.videosFromUrl(url, baseUrl, subtitleCallback)
else -> chillxExtractor.videoFromUrl(url, baseUrl)
else -> chillxExtractor.videoFromUrl(url, "$baseUrl/") // fallback
}
}
@ -64,11 +57,10 @@ class AniSAGA : DooPlay(
.add("type", player.attr("data-type"))
.build()
val response = client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, body))
return client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, body))
.execute()
.body.string()
return response.substringAfter("\"embed_url\":\"")
.body!!.string()
.substringAfter("\"embed_url\":\"")
.substringBefore("\",")
.replace("\\", "")
}