fix(pt/AnimesHouse): Fix video list and popular animes page (#1666)
This commit is contained in:
@ -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>() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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),
|
||||||
|
Reference in New Issue
Block a user