fix(ar/witanime): Fix soraplay & mp4upload extractors + update baseUrl (#2297)
This commit is contained in:
@ -10,7 +10,7 @@ import dev.datlag.jsunpacker.JsUnpacker
|
||||
class Mp4uploadExtractor(private val client: OkHttpClient) {
|
||||
fun videosFromUrl(url: String, headers: Headers, prefix: String = "", suffix: String = ""): List<Video> {
|
||||
val newHeaders = headers.newBuilder()
|
||||
.add("referer", REFERER)
|
||||
.set("referer", REFERER)
|
||||
.build()
|
||||
|
||||
val doc = client.newCall(GET(url, newHeaders)).execute().use { it.asJsoup() }
|
||||
|
@ -7,7 +7,7 @@ ext {
|
||||
extName = 'WIT ANIME'
|
||||
pkgNameSuffix = 'ar.witanime'
|
||||
extClass = '.WitAnime'
|
||||
extVersionCode = 44
|
||||
extVersionCode = 45
|
||||
libVersion = '13'
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,6 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
@ -35,13 +34,13 @@ class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
|
||||
override val name = "WIT ANIME"
|
||||
|
||||
override val baseUrl = "https://witanime.fun"
|
||||
override val baseUrl = "https://witanime.rest"
|
||||
|
||||
override val lang = "ar"
|
||||
|
||||
override val supportsLatest = true
|
||||
|
||||
override val client: OkHttpClient = network.cloudflareClient
|
||||
override val client = network.cloudflareClient
|
||||
|
||||
override fun headersBuilder() = super.headersBuilder().add("Referer", baseUrl)
|
||||
|
||||
@ -145,7 +144,10 @@ class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
return when {
|
||||
url.contains("yonaplay") -> extractFromMulti(url)
|
||||
url.contains("soraplay") -> {
|
||||
soraPlayExtractor.videosFromUrl(url, headers)
|
||||
when {
|
||||
url.contains("/mirror") -> extractFromMulti(url)
|
||||
else -> soraPlayExtractor.videosFromUrl(url, headers)
|
||||
}
|
||||
}
|
||||
url.contains("dood") -> {
|
||||
doodExtractor.videoFromUrl(url, "Dood mirror")
|
||||
@ -176,9 +178,22 @@ class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
}
|
||||
|
||||
private fun extractFromMulti(url: String): List<Video> {
|
||||
val doc = client.newCall(GET(url, headers)).execute().asJsoup()
|
||||
return doc.select("div.OD li").flatMap {
|
||||
val videoUrl = it.attr("onclick").substringAfter("go_to_player('").substringBefore("')")
|
||||
val newHeaders = when {
|
||||
url.contains("soraplay") ->
|
||||
super.headersBuilder().set("referer", "https://yonaplay.org").build()
|
||||
else -> headers
|
||||
}
|
||||
val doc = client.newCall(GET(url, newHeaders)).execute()
|
||||
.use { it.asJsoup() }
|
||||
return doc.select(".OD li").flatMap { element ->
|
||||
val videoUrl = element.attr("onclick").substringAfter("go_to_player('")
|
||||
.substringBefore("')")
|
||||
.let {
|
||||
when {
|
||||
it.startsWith("https:") -> it
|
||||
else -> "https:$it"
|
||||
}
|
||||
}
|
||||
runCatching { extractVideos(videoUrl) }.getOrElse { emptyList() }
|
||||
}
|
||||
}
|
||||
|
@ -8,14 +8,15 @@ import okhttp3.OkHttpClient
|
||||
|
||||
class SoraPlayExtractor(private val client: OkHttpClient) {
|
||||
fun videosFromUrl(url: String, headers: Headers): List<Video> {
|
||||
val doc = client.newCall(GET(url)).execute().asJsoup()
|
||||
val newHeaders = headers.newBuilder().set("referer", "https://yonaplay.org/").build()
|
||||
val doc = client.newCall(GET(url, newHeaders)).execute().asJsoup()
|
||||
val script = doc.selectFirst("script:containsData(sources)")!!
|
||||
val data = script.data().substringAfter("sources: [").substringBefore("],")
|
||||
|
||||
return data.split("\"file\":\"").drop(1).map { source ->
|
||||
val src = source.substringBefore("\"")
|
||||
val quality = "Soraplay: " + source.substringAfter("\"label\":\"").substringBefore("\"")
|
||||
Video(src, quality, src, headers = headers)
|
||||
Video(src, quality, src, headers = newHeaders)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user