Update AniSAGA.kt
This commit is contained in:
parent
96cb8d34c9
commit
5b0f4d9422
1 changed files with 37 additions and 24 deletions
|
@ -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.SubtitleFile
|
||||
import eu.kanade.tachiyomi.lib.chillxextractor.ChillxExtractor
|
||||
import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
|
@ -8,6 +9,7 @@ import eu.kanade.tachiyomi.util.asJsoup
|
|||
import okhttp3.FormBody
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Element
|
||||
import eu.kanade.tachiyomi.animeextension.hi.anisaga.extractors.PlyrXExtractor
|
||||
|
||||
class AniSAGA : DooPlay(
|
||||
"hi",
|
||||
|
@ -15,30 +17,31 @@ class AniSAGA : DooPlay(
|
|||
"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) }
|
||||
|
||||
// ============================== Popular ===============================
|
||||
override fun popularAnimeSelector() = "div.top-imdb-list > div.top-imdb-item"
|
||||
|
||||
// ============================ Video Links =============================
|
||||
override fun videoListParse(response: Response): List<Video> {
|
||||
val playerUrls = response.asJsoup()
|
||||
.select("ul#playeroptionsul li:not([id=player-option-trailer])")
|
||||
.map(::getPlayerUrl)
|
||||
val document = response.asJsoup()
|
||||
|
||||
return playerUrls.flatMap { url ->
|
||||
runCatching {
|
||||
getPlayerVideos(url)
|
||||
}.getOrElse { emptyList() }
|
||||
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 = 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) }
|
||||
|
||||
private fun getPlayerVideos(url: String): List<Video> {
|
||||
return when {
|
||||
videoHost in url -> chillxExtractor.videoFromUrl(url, "$baseUrl/")
|
||||
else -> emptyList()
|
||||
}
|
||||
return videoList
|
||||
}
|
||||
|
||||
private fun getPlayerUrl(player: Element): String {
|
||||
|
@ -49,14 +52,24 @@ class AniSAGA : DooPlay(
|
|||
.add("type", player.attr("data-type"))
|
||||
.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()
|
||||
.let { response ->
|
||||
response
|
||||
.body.string()
|
||||
.substringAfter("\"embed_url\":\"")
|
||||
.substringBefore("\",")
|
||||
.replace("\\", "")
|
||||
}
|
||||
.body.string()
|
||||
|
||||
return response.substringAfter("\"embed_url\":\"")
|
||||
.substringBefore("\",")
|
||||
.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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue