fix(pt/animesgratis): Fixed episode parser for films

This commit is contained in:
WebDitto 2024-06-30 16:57:14 -03:00
parent cdbfbdca30
commit 0f2003ad3c
2 changed files with 37 additions and 6 deletions

View file

@ -3,7 +3,7 @@ ext {
extClass = '.Bakashi'
themePkg = 'dooplay'
baseUrl = 'https://bakashi.tv'
overrideVersionCode = 10
overrideVersionCode = 11
}
apply from: "$rootDir/common.gradle"

View file

@ -17,6 +17,8 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
class Bakashi : DooPlay(
"pt-BR",
@ -26,6 +28,10 @@ class Bakashi : DooPlay(
override val id: Long = 2969482460524685571L
override val dateFormatter by lazy {
SimpleDateFormat("dd/MM/yy", Locale("pt", "BR"))
}
// ============================== Popular ===============================
override fun popularAnimeSelector() = "div.items.featured article div.poster"
override fun popularAnimeRequest(page: Int) = GET("$baseUrl/animes/", headers)
@ -35,11 +41,18 @@ class Bakashi : DooPlay(
override fun searchAnimeFromElement(element: Element) = popularAnimeFromElement(element)
// ============================== Episodes ==============================
override fun episodeListParse(response: Response) =
getRealAnimeDoc(response.asJsoup())
.select(episodeListSelector())
.map(::episodeFromElement)
.reversed()
override fun getSeasonEpisodes(season: Element): List<SEpisode> {
val seasonName = season.selectFirst("span.se-t")?.text()
return season.select(episodeListSelector()).mapNotNull { element ->
runCatching {
if (seasonName.isNullOrBlank()) {
episodeFromElement(element)
} else {
episodeFromElement(element, seasonName)
}
}.onFailure { it.printStackTrace() }.getOrNull()
}
}
override fun episodeListSelector() = "ul.episodios > li > div.episodiotitle > a"
@ -49,6 +62,9 @@ class Bakashi : DooPlay(
name = it
episode_number = it.substringAfter(" ").toFloatOrNull() ?: 0F
}
date_upload = element.parent()?.selectFirst(episodeDateSelector)
?.text()
?.toDate() ?: 0L
}
// ============================ Video Links =============================
@ -93,6 +109,7 @@ class Bakashi : DooPlay(
when {
it.contains("/aviso/") ->
it.toHttpUrl().queryParameter("url")
else -> it
}
}
@ -125,4 +142,18 @@ class Bakashi : DooPlay(
.asJsoup()
} ?: 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""") }
}
}