fix(pt/AnimesHouse): Fix video list and popular animes page (#1666)

This commit is contained in:
Claudemirovsky
2023-06-01 07:56:31 +00:00
committed by GitHub
parent 1c41dda68c
commit cb3599dec2
3 changed files with 19 additions and 17 deletions

View File

@ -25,7 +25,9 @@ class AnimesHouse : DooPlay(
.add("Accept-Language", "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7")
// ============================== Popular ===============================
override fun popularAnimeSelector(): String = "div#featured-titles div.poster"
// This source does not have a "popular" animes page, so we're going to
// use latest updates page instead.
override fun fetchPopularAnime(page: Int) = fetchLatestUpdates(page)
// =============================== Latest ===============================
override fun latestUpdatesNextPageSelector(): String = "div.resppages > a > span.icon-chevron-right"
@ -42,10 +44,10 @@ class AnimesHouse : DooPlay(
.execute()
.use { it.asJsoup().selectFirst("iframe")!!.attr("src") }
.let {
if (it.startsWith("/redplay")) {
RedplayBypasser(client, headers).fromUrl(baseUrl + it)
} else {
it
when {
it.startsWith("/redplay") ->
RedplayBypasser(client, headers).fromUrl(baseUrl + it)
else -> it
}
}
}
@ -56,7 +58,7 @@ class AnimesHouse : DooPlay(
runCatching {
val url = getPlayerUrl(player)
getPlayerVideos(url)
}.getOrDefault(emptyList<Video>())
}.getOrElse { emptyList<Video>() }
}
}

View File

@ -15,22 +15,23 @@ class RedplayBypasser(
) {
fun fromUrl(url: String): String {
val next = client.newCall(GET(url, headers)).execute()
val linkUrl = client.newCall(GET(url, headers)).execute()
.use { it.asJsoup().selectFirst("a")!!.attr("href") }
val response = client.newCall(GET(next, headers)).execute()
return getIframeUrl(response, next)
val newHeaders = headers.newBuilder().set("Referer", linkUrl).build()
val response = client.newCall(GET(linkUrl, newHeaders)).execute()
return getIframeUrl(response, newHeaders)
}
private fun getIframeUrl(response: Response, formUrl: String): String {
private fun getIframeUrl(response: Response, newHeaders: Headers): String {
return response.use { page ->
val document = page.asJsoup(decodeAtob(page.body.string()))
val iframe = document.selectFirst("iframe")
if (iframe != null) {
iframe.attr("src")
} else {
val newHeaders = headers.newBuilder()
.set("Referer", formUrl)
.build()
val formUrl = document.selectFirst("form")!!.attr("action")
val formBody = FormBody.Builder().apply {
document.select("input[name]").forEach {
@ -38,10 +39,9 @@ class RedplayBypasser(
}
}.build()
val nextForm = document.selectFirst("form")!!.attr("action")
val nextPage = client.newCall(POST(formUrl, newHeaders, formBody))
client.newCall(POST(formUrl, newHeaders, formBody))
.execute()
getIframeUrl(nextPage, nextForm)
.let { getIframeUrl(it, newHeaders) }
}
}
}

View File

@ -15,7 +15,7 @@ class DooPlayGenerator : ThemeSourceGenerator {
SingleLang("AnimeOnline.Ninja", "https://www1.animeonline.ninja", "es", className = "AnimeOnlineNinja", isNsfw = false, overrideVersionCode = 26),
SingleLang("AnimePlayer", "https://animeplayer.com.br", "pt-BR", isNsfw = true),
SingleLang("AnimesFox BR", "https://animesfoxbr.com", "pt-BR", isNsfw = false, overrideVersionCode = 1),
SingleLang("Animes House", "https://animeshouse.net", "pt-BR", isNsfw = false, overrideVersionCode = 4),
SingleLang("Animes House", "https://animeshouse.net", "pt-BR", isNsfw = false, overrideVersionCode = 5),
SingleLang("Cinemathek", "https://cinemathek.net", "de", isNsfw = true, overrideVersionCode = 12),
SingleLang("CineVision", "https://cinevisionv3.online", "pt-BR", isNsfw = true, overrideVersionCode = 5),
SingleLang("DonghuaX", "https://donghuax.com", "pt-BR", isNsfw = false),