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' extName = 'AllAnime'
pkgNameSuffix = 'en.allanime' pkgNameSuffix = 'en.allanime'
extClass = '.AllAnime' extClass = '.AllAnime'
extVersionCode = 23 extVersionCode = 24
libVersion = '13' libVersion = '13'
} }

View File

@ -305,7 +305,7 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
// list of alternative hosters // list of alternative hosters
val mappings = listOf( val mappings = listOf(
"streamsb" to listOf("streamsb"), "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"), "doodstream" to listOf("dood"),
"okru" to listOf("ok.ru"), "okru" to listOf("ok.ru"),
"mp4upload" to listOf("mp4upload.com"), "mp4upload" to listOf("mp4upload.com"),
@ -339,7 +339,7 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
serverList.add(Server(videoUrl, "internal ${video.sourceName}", video.priority)) serverList.add(Server(videoUrl, "internal ${video.sourceName}", video.priority))
} }
altHosterSelection.contains("player") && video.type == "player" -> { altHosterSelection.contains("player") && video.type == "player" -> {
serverList.add(Server(videoUrl, "player", video.priority)) serverList.add(Server(videoUrl, "player@${video.sourceName}", video.priority))
} }
matchingMapping != null -> { matchingMapping != null -> {
serverList.add(Server(videoUrl, matchingMapping.first, video.priority)) serverList.add(Server(videoUrl, matchingMapping.first, video.priority))
@ -360,12 +360,23 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
Pair(it, server.priority) Pair(it, server.priority)
} ?: emptyList() } ?: 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( listOf(
Video( Video(
server.sourceUrl, server.sourceUrl,
"Original (player ${server.sourceName})", "Original (player ${server.sourceName.substringAfter("player@")})",
server.sourceUrl, server.sourceUrl,
headers = videoHeaders,
) to server.priority, ) to server.priority,
) )
} }
@ -377,7 +388,7 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
Pair(it, server.priority) Pair(it, server.priority)
} ?: emptyList() } ?: emptyList()
} }
sName == "gogo" -> { sName == "vidstreaming" -> {
val extractor = VidstreamingExtractor(client, json) val extractor = VidstreamingExtractor(client, json)
runCatching { runCatching {
extractor.videosFromUrl(server.sourceUrl.replace(Regex("^//"), "https://")) extractor.videosFromUrl(server.sourceUrl.replace(Regex("^//"), "https://"))
@ -429,6 +440,11 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
// ============================= Utilities ============================== // ============================= 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> { private fun prioritySort(pList: List<Pair<Video, Float>>): List<Video> {
val prefServer = preferences.prefServer val prefServer = preferences.prefServer
val quality = preferences.quality val quality = preferences.quality
@ -553,14 +569,14 @@ class AllAnime : ConfigurableAnimeSource, AnimeHttpSource() {
private const val PREF_QUALITY_KEY = "preferred_quality" private const val PREF_QUALITY_KEY = "preferred_quality"
private val PREF_QUALITY_ENTRIES = arrayOf( private val PREF_QUALITY_ENTRIES = arrayOf(
"2160p",
"1440p",
"1080p", "1080p",
"720p", "720p",
"480p", "480p",
"360p", "360p",
"240p", "240p",
"80p", "80p",
"1440p (okru only)",
"2160p (okru only)",
) )
private val PREF_QUALITY_ENTRY_VALUES = PREF_QUALITY_ENTRIES.map { private val PREF_QUALITY_ENTRY_VALUES = PREF_QUALITY_ENTRIES.map {
it.substringBefore("p") 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.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonArray