Update video extraction (#1237)
This commit is contained in:
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'Kuramanime'
|
extName = 'Kuramanime'
|
||||||
pkgNameSuffix = 'id.kuramanime'
|
pkgNameSuffix = 'id.kuramanime'
|
||||||
extClass = '.Kuramanime'
|
extClass = '.Kuramanime'
|
||||||
extVersionCode = 4
|
extVersionCode = 5
|
||||||
libVersion = '13'
|
libVersion = '13'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
val html = document.select(episodeListSelector()).attr("data-content")
|
val html = document.select(episodeListSelector()).attr("data-content")
|
||||||
val jsoupE = Jsoup.parse(html)
|
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 {
|
private fun parseShortInfo(element: Element): SAnime {
|
||||||
@ -116,7 +116,28 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
|
|
||||||
override fun searchAnimeSelector(): String = "div.product__item"
|
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> {
|
override fun List<Video>.sort(): List<Video> {
|
||||||
val quality = preferences.getString("preferred_quality", null)
|
val quality = preferences.getString("preferred_quality", null)
|
||||||
if (quality != null) {
|
if (quality != null) {
|
||||||
@ -135,8 +156,14 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun videoFromElement(element: Element): Video {
|
override fun videoFromElement(element: Element) = throw Exception("not used")
|
||||||
val url = element.attr("src")
|
|
||||||
|
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")) {
|
val quality = with(element.attr("size")) {
|
||||||
when {
|
when {
|
||||||
contains("1080") -> "1080p"
|
contains("1080") -> "1080p"
|
||||||
@ -145,7 +172,7 @@ class Kuramanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
contains("360") -> "360p"
|
contains("360") -> "360p"
|
||||||
else -> "Default"
|
else -> "Default"
|
||||||
}
|
}
|
||||||
}
|
} + " - $name"
|
||||||
return Video(url, quality, url)
|
return Video(url, quality, url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user