fix(src/es): JkAnime fixes (#504)
* JkAnime fixes Closes #355 * Update StreamWishExtractor.kt
This commit is contained in:
parent
48f1bac534
commit
f9650081e1
3 changed files with 101 additions and 27 deletions
|
@ -1,15 +1,20 @@
|
|||
package eu.kanade.tachiyomi.lib.streamwishextractor
|
||||
|
||||
import dev.datlag.jsunpacker.JsUnpacker
|
||||
import eu.kanade.tachiyomi.animesource.model.Track
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationException
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.Headers
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class StreamWishExtractor(private val client: OkHttpClient, private val headers: Headers) {
|
||||
private val playlistUtils by lazy { PlaylistUtils(client, headers) }
|
||||
private val json = Json { isLenient = true; ignoreUnknownKeys = true }
|
||||
|
||||
fun videosFromUrl(url: String, prefix: String) = videosFromUrl(url) { "$prefix - $it" }
|
||||
|
||||
|
@ -32,7 +37,9 @@ class StreamWishExtractor(private val client: OkHttpClient, private val headers:
|
|||
?.takeIf(String::isNotBlank)
|
||||
?: return emptyList()
|
||||
|
||||
return playlistUtils.extractFromHls(masterUrl, url, videoNameGen = videoNameGen)
|
||||
val subtitleList = extractSubtitles(scriptBody)
|
||||
|
||||
return playlistUtils.extractFromHls(masterUrl, url, videoNameGen = videoNameGen, subtitleList = subtitleList)
|
||||
}
|
||||
|
||||
private fun getEmbedUrl(url: String): String {
|
||||
|
@ -43,4 +50,21 @@ class StreamWishExtractor(private val client: OkHttpClient, private val headers:
|
|||
url
|
||||
}
|
||||
}
|
||||
|
||||
private fun extractSubtitles(script: String): List<Track> {
|
||||
return try {
|
||||
val subtitleStr = script
|
||||
.substringAfter("tracks")
|
||||
.substringAfter("[")
|
||||
.substringBefore("]")
|
||||
json.decodeFromString<List<TrackDto>>("[$subtitleStr]")
|
||||
.filter { it.kind.equals("captions", true) }
|
||||
.map { Track(it.file, it.label ?: "") }
|
||||
} catch (e: SerializationException) {
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
private data class TrackDto(val file: String, val kind: String, val label: String? = null)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue