Update video extraction (#1237)

This commit is contained in:
Secozzi
2023-02-05 01:23:20 +01:00
committed by GitHub
parent 8ce63e7cbe
commit fd4ead6a8f
2 changed files with 33 additions and 6 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'Kuramanime'
pkgNameSuffix = 'id.kuramanime'
extClass = '.Kuramanime'
extVersionCode = 4
extVersionCode = 5
libVersion = '13'
}

View File

@ -81,7 +81,7 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val html = document.select(episodeListSelector()).attr("data-content")
val jsoupE = Jsoup.parse(html)
return jsoupE.select("a").filter { ele -> !ele.attr("href").contains("batch") }.map { episodeFromElement(it) }
return jsoupE.select("a").filter { ele -> !ele.attr("href").contains("batch") }.map { episodeFromElement(it) }.reversed()
}
private fun parseShortInfo(element: Element): SAnime {
@ -116,7 +116,28 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun searchAnimeSelector(): String = "div.product__item"
override fun videoListSelector() = "#player > source"
override fun videoListSelector() = "video#player > source"
override fun videoListParse(response: Response): List<Video> {
val videoList = mutableListOf<Video>()
val document = response.asJsoup()
document.select("select#changeServer > option").forEach {
videoList.addAll(
videosFromServer(response.request.url.toString(), it.attr("value"), it.text())
)
}
return videoList.sort()
}
private fun videosFromServer(episodeUrl: String, server: String, name: String): List<Video> {
val document = client.newCall(
GET("$episodeUrl?activate_stream=1&stream_server=$server", headers = headers)
).execute().asJsoup()
return document.select(videoListSelector()).map { videoFromElement(it, name, episodeUrl) }
}
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString("preferred_quality", null)
if (quality != null) {
@ -135,8 +156,14 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoFromElement(element: Element): Video {
val url = element.attr("src")
override fun videoFromElement(element: Element) = throw Exception("not used")
private fun videoFromElement(element: Element, name: String, episodeUrl: String): Video {
var url = element.attr("src")
if (!url.startsWith("http")) {
url = episodeUrl + url
}
val quality = with(element.attr("size")) {
when {
contains("1080") -> "1080p"
@ -145,7 +172,7 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
contains("360") -> "360p"
else -> "Default"
}
}
} + " - $name"
return Video(url, quality, url)
}