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

Merged
WebDitto merged 1 commit from pt/animesgratis into main 2024-07-01 04:07:05 -05:00
2 changed files with 37 additions and 6 deletions

View file

@ -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"

View file

@ -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""") }
}
} }