fix(pt/animesgratis): Fixed episode parser for films #18
2 changed files with 37 additions and 6 deletions
|
@ -3,7 +3,7 @@ ext {
|
||||||
extClass = '.Bakashi'
|
extClass = '.Bakashi'
|
||||||
themePkg = 'dooplay'
|
themePkg = 'dooplay'
|
||||||
baseUrl = 'https://bakashi.tv'
|
baseUrl = 'https://bakashi.tv'
|
||||||
overrideVersionCode = 10
|
overrideVersionCode = 11
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -17,6 +17,8 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
class Bakashi : DooPlay(
|
class Bakashi : DooPlay(
|
||||||
"pt-BR",
|
"pt-BR",
|
||||||
|
@ -26,6 +28,10 @@ class Bakashi : DooPlay(
|
||||||
|
|
||||||
override val id: Long = 2969482460524685571L
|
override val id: Long = 2969482460524685571L
|
||||||
|
|
||||||
|
override val dateFormatter by lazy {
|
||||||
|
SimpleDateFormat("dd/MM/yy", Locale("pt", "BR"))
|
||||||
|
}
|
||||||
|
|
||||||
// ============================== Popular ===============================
|
// ============================== Popular ===============================
|
||||||
override fun popularAnimeSelector() = "div.items.featured article div.poster"
|
override fun popularAnimeSelector() = "div.items.featured article div.poster"
|
||||||
override fun popularAnimeRequest(page: Int) = GET("$baseUrl/animes/", headers)
|
override fun popularAnimeRequest(page: Int) = GET("$baseUrl/animes/", headers)
|
||||||
|
@ -35,11 +41,18 @@ class Bakashi : DooPlay(
|
||||||
override fun searchAnimeFromElement(element: Element) = popularAnimeFromElement(element)
|
override fun searchAnimeFromElement(element: Element) = popularAnimeFromElement(element)
|
||||||
|
|
||||||
// ============================== Episodes ==============================
|
// ============================== Episodes ==============================
|
||||||
override fun episodeListParse(response: Response) =
|
override fun getSeasonEpisodes(season: Element): List<SEpisode> {
|
||||||
getRealAnimeDoc(response.asJsoup())
|
val seasonName = season.selectFirst("span.se-t")?.text()
|
||||||
.select(episodeListSelector())
|
return season.select(episodeListSelector()).mapNotNull { element ->
|
||||||
.map(::episodeFromElement)
|
runCatching {
|
||||||
.reversed()
|
if (seasonName.isNullOrBlank()) {
|
||||||
|
episodeFromElement(element)
|
||||||
|
} else {
|
||||||
|
episodeFromElement(element, seasonName)
|
||||||
|
}
|
||||||
|
}.onFailure { it.printStackTrace() }.getOrNull()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun episodeListSelector() = "ul.episodios > li > div.episodiotitle > a"
|
override fun episodeListSelector() = "ul.episodios > li > div.episodiotitle > a"
|
||||||
|
|
||||||
|
@ -49,6 +62,9 @@ class Bakashi : DooPlay(
|
||||||
name = it
|
name = it
|
||||||
episode_number = it.substringAfter(" ").toFloatOrNull() ?: 0F
|
episode_number = it.substringAfter(" ").toFloatOrNull() ?: 0F
|
||||||
}
|
}
|
||||||
|
date_upload = element.parent()?.selectFirst(episodeDateSelector)
|
||||||
|
?.text()
|
||||||
|
?.toDate() ?: 0L
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================ Video Links =============================
|
// ============================ Video Links =============================
|
||||||
|
@ -93,6 +109,7 @@ class Bakashi : DooPlay(
|
||||||
when {
|
when {
|
||||||
it.contains("/aviso/") ->
|
it.contains("/aviso/") ->
|
||||||
it.toHttpUrl().queryParameter("url")
|
it.toHttpUrl().queryParameter("url")
|
||||||
|
|
||||||
else -> it
|
else -> it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,4 +142,18 @@ class Bakashi : DooPlay(
|
||||||
.asJsoup()
|
.asJsoup()
|
||||||
} ?: document
|
} ?: document
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun List<Video>.sort(): List<Video> {
|
||||||
|
val quality = preferences.getString(videoSortPrefKey, videoSortPrefDefault)!!
|
||||||
|
return sortedWith(
|
||||||
|
compareBy(
|
||||||
|
{ it.quality.contains(quality) },
|
||||||
|
{ REGEX_QUALITY.find(it.quality)?.groupValues?.get(1)?.toIntOrNull() ?: 0 },
|
||||||
|
),
|
||||||
|
).reversed()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val REGEX_QUALITY by lazy { Regex("""(\d+)p""") }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue