fix(en/allanime): fix vid-mp4 & player host (#1877)

This commit is contained in:
Secozzi
2023-07-09 01:43:27 +02:00
committed by GitHub
parent 599d101e8d
commit 0f83cb6ece
3 changed files with 24 additions and 9 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'AllAnime'
pkgNameSuffix = 'en.allanime'
extClass = '.AllAnime'
extVersionCode = 23
extVersionCode = 24
libVersion = '13'
}

View File

@ -305,7 +305,7 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
// list of alternative hosters
val mappings = listOf(
"streamsb" to listOf("streamsb"),
"vidstreaming" to listOf("vidstreaming", "https://gogo", "playgo1.cc"),
"vidstreaming" to listOf("vidstreaming", "https://gogo", "playgo1.cc", "playtaku"),
"doodstream" to listOf("dood"),
"okru" to listOf("ok.ru"),
"mp4upload" to listOf("mp4upload.com"),
@ -339,7 +339,7 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
serverList.add(Server(videoUrl, "internal ${video.sourceName}", video.priority))
}
altHosterSelection.contains("player") && video.type == "player" -> {
serverList.add(Server(videoUrl, "player", video.priority))
serverList.add(Server(videoUrl, "player@${video.sourceName}", video.priority))
}
matchingMapping != null -> {
serverList.add(Server(videoUrl, matchingMapping.first, video.priority))
@ -360,12 +360,23 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
Pair(it, server.priority)
} ?: emptyList()
}
sName == "player" -> {
sName.startsWith("player@") -> {
val endPoint = client.newCall(GET("${preferences.siteUrl}/getVersion")).execute()
.parseAs<AllAnimeExtractor.VersionResponse>()
.episodeIframeHead
val videoHeaders = headers.newBuilder()
.add("Accept", "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5")
.add("Host", server.sourceUrl.toHttpUrl().host)
.add("Referer", "$endPoint/")
.build()
listOf(
Video(
server.sourceUrl,
"Original (player ${server.sourceName})",
"Original (player ${server.sourceName.substringAfter("player@")})",
server.sourceUrl,
headers = videoHeaders,
) to server.priority,
)
}
@ -377,7 +388,7 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
Pair(it, server.priority)
} ?: emptyList()
}
sName == "gogo" -> {
sName == "vidstreaming" -> {
val extractor = VidstreamingExtractor(client, json)
runCatching {
extractor.videosFromUrl(server.sourceUrl.replace(Regex("^//"), "https://"))
@ -429,6 +440,11 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
// ============================= Utilities ==============================
private inline fun <reified T> Response.parseAs(transform: (String) -> String = { it }): T {
val responseBody = use { transform(it.body.string()) }
return json.decodeFromString(responseBody)
}
private fun prioritySort(pList: List<Pair<Video, Float>>): List<Video> {
val prefServer = preferences.prefServer
val quality = preferences.quality
@ -553,14 +569,14 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
private const val PREF_QUALITY_KEY = "preferred_quality"
private val PREF_QUALITY_ENTRIES = arrayOf(
"2160p",
"1440p",
"1080p",
"720p",
"480p",
"360p",
"240p",
"80p",
"1440p (okru only)",
"2160p (okru only)",
)
private val PREF_QUALITY_ENTRY_VALUES = PREF_QUALITY_ENTRIES.map {
it.substringBefore("p")

View File

@ -5,7 +5,6 @@ import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonArray