uakino: Redo the logic. Put dubs to sources

This commit is contained in:
CakesTwix 2023-02-16 10:30:53 +02:00
parent e61bc00168
commit 9f6a877b02
Signed by: CakesTwix
GPG key ID: 7B11051D5CE19825

View file

@ -1,10 +1,8 @@
package com.lagradost package com.lagradost
import android.util.Log
import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.*
import com.lagradost.cloudstream3.LoadResponse.Companion.addActors import com.lagradost.cloudstream3.LoadResponse.Companion.addActors
import com.lagradost.cloudstream3.LoadResponse.Companion.addTrailer import com.lagradost.cloudstream3.LoadResponse.Companion.addTrailer
import com.lagradost.cloudstream3.mvvm.safeApiCall
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.M3u8Helper import com.lagradost.cloudstream3.utils.M3u8Helper
import org.jsoup.Jsoup import org.jsoup.Jsoup
@ -105,7 +103,7 @@ class UakinoProvider : MainAPI() {
val name = eps.text().trim() // Серія 1 val name = eps.text().trim() // Серія 1
if (href.isNotEmpty()) { if (href.isNotEmpty()) {
Episode( Episode(
href, "$href,$name",
name, name,
) )
} else { } else {
@ -139,46 +137,34 @@ class UakinoProvider : MainAPI() {
// It works when I click to view the series // It works when I click to view the series
override suspend fun loadLinks( override suspend fun loadLinks(
data: String, // Link from load -> Episode -> data (https://uakino.club/engine/ajax/playlists.php?news_id=16379&xfield=playlist&time=1676477550880) data: String, // link, episode name
isCasting: Boolean, isCasting: Boolean,
subtitleCallback: (SubtitleFile) -> Unit, subtitleCallback: (SubtitleFile) -> Unit,
callback: (ExtractorLink) -> Unit callback: (ExtractorLink) -> Unit
): Boolean { ): Boolean {
val dataList = data.split(",")
val links = ArrayList<String>() app.get(dataList[0]) // Link
// TODO: Redo the logic. Put voices in sources .parsedSafe<Responses>()?.response.let {
if (data.startsWith("https://ashdi.vip")) { Jsoup.parse(it.toString()).select("div.playlists-videos li:contains(${dataList[1]})").mapNotNull { eps ->
links.add(data) val href = eps.attr("data-file") // ashdi
} else { val dub = eps.attr("data-voice") // FanWoxUA
val iframeUrl = app.get(data).document.selectFirst("iframe#pre")?.attr("src")
if (iframeUrl.isNullOrEmpty()) { // Get m3u from player script
val id = data.split("/").last().split("-").first() app.get("https:$href", referer = "$mainUrl/").document.select("script").map { script ->
app.get("$mainUrl/engine/ajax/playlists.php?news_id=$id&xfield=playlist&time=${Date().time}") if (script.data().contains("var player = new Playerjs({")) {
.parsedSafe<Responses>()?.response.let { val m3uLink = script.data().substringAfterLast("file:\"").substringBefore("\",")
Jsoup.parse(it.toString()).select("ul > li").mapNotNull { mirror ->
links.add(fixUrl(mirror.attr("data-file"))) // Add as source
M3u8Helper.generateM3u8(
source = dub,
streamUrl = m3uLink,
referer = "https://ashdi.vip/"
).forEach(callback)
} }
} }
} else {
links.add(iframeUrl)
}
}
links.apmap { link ->
safeApiCall {
app.get(link, referer = "$mainUrl/").document.select("script").map { script ->
if (script.data().contains("var player = new Playerjs({")) {
val m3uLink =
script.data().substringAfterLast("file:\"").substringBefore("\",")
M3u8Helper.generateM3u8(
source = this.name,
streamUrl = m3uLink,
referer = "https://ashdi.vip/"
).forEach(callback)
}
} }
} }
}
return true return true
} }