Fixed WatchCartoonOnline homepage

This commit is contained in:
no-commit 2023-03-19 13:51:10 +01:00
parent b9d86b5be2
commit 1fa527454c
2 changed files with 21 additions and 9 deletions

View file

@ -1,5 +1,5 @@
// use an integer for version numbers
version = 2
version = 3
cloudstream {

View file

@ -22,7 +22,7 @@ class WatchCartoonOnlineProvider : MainAPI() {
TvType.TvSeries
)
override suspend fun getMainPage(page: Int, request: MainPageRequest): HomePageResponse? {
override suspend fun getMainPage(page: Int, request: MainPageRequest): HomePageResponse {
val doc = app.get(mainUrl).document
val rows = doc.select("div.recent-release").mapNotNull {
val rowName = it.text()
@ -121,8 +121,19 @@ class WatchCartoonOnlineProvider : MainAPI() {
override suspend fun load(url: String): LoadResponse {
val isSeries = url.contains("/anime/")
val episodeRegex = Regex("""-episode-\d+""")
val document = app.get(url).document
// Retries link loading when an episode page is opened, usually from home.
// The slug system is too unpredictable to skip this step.
if (url.contains(episodeRegex)) {
val link = document.select("div.ildate > a").attr("href")
// Must not contain the episode regex, otherwise infinite recursion.
if (!link.contains(episodeRegex)) {
return load(link)
}
}
return if (isSeries) {
val title = document.selectFirst("td.vsbaslik > h2")!!.text()
val poster =
@ -148,7 +159,7 @@ class WatchCartoonOnlineProvider : MainAPI() {
return@map Episode(
href,
if (last.startsWith("English")) null else last,
null,
1,
match2.groupValues[1].toIntOrNull(),
)
}
@ -202,6 +213,8 @@ class WatchCartoonOnlineProvider : MainAPI() {
callback: (ExtractorLink) -> Unit
): Boolean {
val document = app.get(data).document
val src = document.select("iframe#frameNewAnimeuploads0").attr("src").ifBlank { null } ?: mainWork {
val foundJS = document.select("div.iltext > script").html()
// Find the variable name, eg: var HAi = "";
@ -210,7 +223,6 @@ class WatchCartoonOnlineProvider : MainAPI() {
val varName = varRegex.find(foundJS)?.groupValues?.get(1)
?: throw RuntimeException("Cannot find var name!")
val src = document.select("iframe#frameNewAnimeuploads0").attr("src") ?: mainWork {
// Rhino needs to be on main
val rhino = Context.enter()
rhino.optimizationLevel = -1