fix(pt/anitube): Fixed pt/Anitube source (fix #469,#494) (#495)

This commit is contained in:
WebDitto 2025-01-07 22:32:13 -03:00 committed by GitHub
parent 5a872a9116
commit 695854722a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 9 deletions

View file

@ -1,7 +1,7 @@
ext { ext {
extName = 'Anitube' extName = 'Anitube'
extClass = '.Anitube' extClass = '.Anitube'
extVersionCode = 20 extVersionCode = 21
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View file

@ -6,7 +6,7 @@ import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import eu.kanade.tachiyomi.util.parallelMapNotNullBlocking import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking
import okhttp3.FormBody import okhttp3.FormBody
import okhttp3.Headers import okhttp3.Headers
import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl
@ -77,6 +77,17 @@ class AnitubeExtractor(
return getAdsUrl(serverUrl, thumbUrl, newLink, newHeaders) return getAdsUrl(serverUrl, thumbUrl, newLink, newHeaders)
} }
if (docLink.data().contains("window.location.href = redirectUrl")) {
val newLink = docLink.data()
.substringAfter("redirectUrl = `")
.substringBefore("`")
.replace("\${token}", finalLink.toHttpUrl().queryParameter("t") ?: "")
val newHeaders = linkHeaders.newBuilder().set("Referer", finalLink).build()
Log.d(tag, "Following javascript redirection to $newLink")
return getAdsUrl(serverUrl, thumbUrl, newLink, newHeaders)
}
val referer: String = docLink.location() ?: link val referer: String = docLink.location() ?: link
Log.d(tag, "Final URL: $referer") Log.d(tag, "Final URL: $referer")
@ -112,7 +123,7 @@ class AnitubeExtractor(
// Try default url // Try default url
Log.e(tag, "Failed to get the ADS URL, trying the default") Log.e(tag, "Failed to get the ADS URL, trying the default")
return "https://www.popads.net/js/adblock.js" return "https://s4.cdnpc.net/vite-bundle/main.css?version=v93"
} }
private fun getAuthCode(serverUrl: String, thumbUrl: String, link: String): String { private fun getAuthCode(serverUrl: String, thumbUrl: String, link: String): String {
@ -154,7 +165,7 @@ class AnitubeExtractor(
.build() .build()
val publicidade = val publicidade =
client.newCall(POST("$ADS_URL/", headers = newHeaders, body = body)) client.newCall(POST(ADS_URL, headers = newHeaders, body = body))
.execute() .execute()
.body.string() .body.string()
.substringAfter("\"publicidade\"") .substringAfter("\"publicidade\"")
@ -173,7 +184,7 @@ class AnitubeExtractor(
authCode = authCode =
client.newCall( client.newCall(
GET( GET(
"$ADS_URL/?token=$publicidade", "$ADS_URL?token=$publicidade",
headers = newHeaders, headers = newHeaders,
), ),
) )
@ -226,19 +237,19 @@ class AnitubeExtractor(
var quality = "$quality - Anitube" var quality = "$quality - Anitube"
} }
} }
.parallelMapNotNullBlocking { .parallelCatchingFlatMapBlocking {
if (!checkVideoExists(it.url).exists) { if (!checkVideoExists(it.url).exists) {
Log.d(tag, "Video not exists: ${it.url.substringBefore("?")}") Log.d(tag, "Video not exists: ${it.url.substringBefore("?")}")
return@parallelMapNotNullBlocking null return@parallelCatchingFlatMapBlocking emptyList()
} }
Video(it.url, it.quality, it.url, headers = headers) listOf(Video(it.url, it.quality, it.url, headers = headers))
} }
.reversed() .reversed()
} }
companion object { companion object {
private const val PREF_AUTHCODE_KEY = "authcode" private const val PREF_AUTHCODE_KEY = "authcode"
private const val ADS_URL = "https://ads.anitube.vip" private const val ADS_URL = "https://ads.anitube.vip/adblock.php"
private const val SITE_URL = "https://www.anitube.vip/playerricas.php" private const val SITE_URL = "https://www.anitube.vip/playerricas.php"
} }
} }