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") .add("Accept-Language", "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7")
// ============================== Popular =============================== // ============================== 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 =============================== // =============================== Latest ===============================
override fun latestUpdatesNextPageSelector(): String = "div.resppages > a > span.icon-chevron-right" override fun latestUpdatesNextPageSelector(): String = "div.resppages > a > span.icon-chevron-right"
@ -42,10 +44,10 @@ class AnimesHouse : DooPlay(
.execute() .execute()
.use { it.asJsoup().selectFirst("iframe")!!.attr("src") } .use { it.asJsoup().selectFirst("iframe")!!.attr("src") }
.let { .let {
if (it.startsWith("/redplay")) { when {
RedplayBypasser(client, headers).fromUrl(baseUrl + it) it.startsWith("/redplay") ->
} else { RedplayBypasser(client, headers).fromUrl(baseUrl + it)
it else -> it
} }
} }
} }
@ -56,7 +58,7 @@ class AnimesHouse : DooPlay(
runCatching { runCatching {
val url = getPlayerUrl(player) val url = getPlayerUrl(player)
getPlayerVideos(url) getPlayerVideos(url)
}.getOrDefault(emptyList<Video>()) }.getOrElse { emptyList<Video>() }
} }
} }

View File

@ -15,22 +15,23 @@ class RedplayBypasser(
) { ) {
fun fromUrl(url: String): String { 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") } .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 -> return response.use { page ->
val document = page.asJsoup(decodeAtob(page.body.string())) val document = page.asJsoup(decodeAtob(page.body.string()))
val iframe = document.selectFirst("iframe") val iframe = document.selectFirst("iframe")
if (iframe != null) { if (iframe != null) {
iframe.attr("src") iframe.attr("src")
} else { } else {
val newHeaders = headers.newBuilder() val formUrl = document.selectFirst("form")!!.attr("action")
.set("Referer", formUrl)
.build()
val formBody = FormBody.Builder().apply { val formBody = FormBody.Builder().apply {
document.select("input[name]").forEach { document.select("input[name]").forEach {
@ -38,10 +39,9 @@ class RedplayBypasser(
} }
}.build() }.build()
val nextForm = document.selectFirst("form")!!.attr("action") client.newCall(POST(formUrl, newHeaders, formBody))
val nextPage = client.newCall(POST(formUrl, newHeaders, formBody))
.execute() .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("AnimeOnline.Ninja", "https://www1.animeonline.ninja", "es", className = "AnimeOnlineNinja", isNsfw = false, overrideVersionCode = 26),
SingleLang("AnimePlayer", "https://animeplayer.com.br", "pt-BR", isNsfw = true), SingleLang("AnimePlayer", "https://animeplayer.com.br", "pt-BR", isNsfw = true),
SingleLang("AnimesFox BR", "https://animesfoxbr.com", "pt-BR", isNsfw = false, overrideVersionCode = 1), 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("Cinemathek", "https://cinemathek.net", "de", isNsfw = true, overrideVersionCode = 12),
SingleLang("CineVision", "https://cinevisionv3.online", "pt-BR", isNsfw = true, overrideVersionCode = 5), SingleLang("CineVision", "https://cinevisionv3.online", "pt-BR", isNsfw = true, overrideVersionCode = 5),
SingleLang("DonghuaX", "https://donghuax.com", "pt-BR", isNsfw = false), SingleLang("DonghuaX", "https://donghuax.com", "pt-BR", isNsfw = false),