Update AniSAGA.kt

This commit is contained in:
Arkai1 2025-04-11 17:23:28 +05:30 committed by GitHub
parent 96cb8d34c9
commit 5b0f4d9422
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.animeextension.hi.animesaga package eu.kanade.tachiyomi.animeextension.hi.anisaga
import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.model.SubtitleFile
import eu.kanade.tachiyomi.lib.chillxextractor.ChillxExtractor import eu.kanade.tachiyomi.lib.chillxextractor.ChillxExtractor
import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
@ -8,6 +9,7 @@ import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.FormBody import okhttp3.FormBody
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import eu.kanade.tachiyomi.animeextension.hi.anisaga.extractors.PlyrXExtractor
class AniSAGA : DooPlay( class AniSAGA : DooPlay(
"hi", "hi",
@ -15,30 +17,31 @@ class AniSAGA : DooPlay(
"https://www.anisaga.org", "https://www.anisaga.org",
) { ) {
private val videoHost = "https://plyrxcdn.site/" private val videoHost = "https://plyrxcdn.site/"
private val chillxExtractor by lazy { ChillxExtractor(client, headers) }
private val plyrXExtractor by lazy { PlyrXExtractor(client) }
// ============================== Popular =============================== // ============================== Popular ===============================
override fun popularAnimeSelector() = "div.top-imdb-list > div.top-imdb-item" override fun popularAnimeSelector() = "div.top-imdb-list > div.top-imdb-item"
// ============================ Video Links ============================= // ============================ Video Links =============================
override fun videoListParse(response: Response): List<Video> { override fun videoListParse(response: Response): List<Video> {
val playerUrls = response.asJsoup() val document = response.asJsoup()
.select("ul#playeroptionsul li:not([id=player-option-trailer])")
.map(::getPlayerUrl)
return playerUrls.flatMap { url -> val players = document.select("ul#playeroptionsul li:not([id=player-option-trailer])")
runCatching { val videoList = mutableListOf<Video>()
getPlayerVideos(url)
}.getOrElse { emptyList() } players.forEach { player ->
val url = getPlayerUrl(player)
val videos = when {
videoHost in url -> plyrXExtractor.videosFromUrl(url, baseUrl, subtitleCallback)
else -> chillxExtractor.videoFromUrl(url, baseUrl)
}
videoList.addAll(videos)
} }
}
private val chillxExtractor by lazy { ChillxExtractor(client, headers) } return videoList
private fun getPlayerVideos(url: String): List<Video> {
return when {
videoHost in url -> chillxExtractor.videoFromUrl(url, "$baseUrl/")
else -> emptyList()
}
} }
private fun getPlayerUrl(player: Element): String { private fun getPlayerUrl(player: Element): String {
@ -49,14 +52,24 @@ class AniSAGA : DooPlay(
.add("type", player.attr("data-type")) .add("type", player.attr("data-type"))
.build() .build()
return client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, body)) val response = client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, body))
.execute() .execute()
.let { response -> .body.string()
response
.body.string() return response.substringAfter("\"embed_url\":\"")
.substringAfter("\"embed_url\":\"") .substringBefore("\",")
.substringBefore("\",") .replace("\\", "")
.replace("\\", "") }
}
// Needed for subtitles
private var subtitleCallback: (SubtitleFile) -> Unit = {}
override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
super.setupPreferenceScreen(screen)
// You can add custom settings here if needed
}
override fun setVideoLoadListener(subtitleCb: (SubtitleFile) -> Unit) {
subtitleCallback = subtitleCb
} }
} }