forked from AlmightyHak/extensions-source
This commit is contained in:
parent
f19b930678
commit
dd60c16232
4 changed files with 78 additions and 44 deletions
|
@ -1,7 +1,7 @@
|
||||||
ext {
|
ext {
|
||||||
extName = 'Anitube'
|
extName = 'Anitube'
|
||||||
extClass = '.Anitube'
|
extClass = '.Anitube'
|
||||||
extVersionCode = 17
|
extVersionCode = 18
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.util.asJsoup
|
||||||
import okhttp3.FormBody
|
import okhttp3.FormBody
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
|
||||||
class AnitubeExtractor(
|
class AnitubeExtractor(
|
||||||
|
@ -17,6 +18,8 @@ class AnitubeExtractor(
|
||||||
private val preferences: SharedPreferences,
|
private val preferences: SharedPreferences,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
private val tag by lazy { javaClass.simpleName }
|
||||||
|
|
||||||
private fun getAdsUrl(
|
private fun getAdsUrl(
|
||||||
serverUrl: String,
|
serverUrl: String,
|
||||||
thumbUrl: String,
|
thumbUrl: String,
|
||||||
|
@ -25,45 +28,53 @@ class AnitubeExtractor(
|
||||||
): String {
|
): String {
|
||||||
val videoName = serverUrl.split('/').last()
|
val videoName = serverUrl.split('/').last()
|
||||||
|
|
||||||
val docLink = client.newCall(GET(link, headers = linkHeaders)).execute().asJsoup()
|
Log.d(tag, "Accessing the link $link")
|
||||||
|
val response = client.newCall(GET(link, headers = linkHeaders)).execute()
|
||||||
|
val docLink = response.asJsoup()
|
||||||
|
|
||||||
val refresh = docLink.selectFirst("meta[http-equiv=refresh]")?.attr("content")
|
val refresh = docLink.selectFirst("meta[http-equiv=refresh]")?.attr("content")
|
||||||
|
|
||||||
if (!refresh.isNullOrBlank()) {
|
if (!refresh.isNullOrBlank()) {
|
||||||
val newLink = refresh.substringAfter("=")
|
val newLink = refresh.substringAfter("=")
|
||||||
val newHeaders = linkHeaders.newBuilder().set("Referer", link).build()
|
val newHeaders = linkHeaders.newBuilder().set("Referer", link).build()
|
||||||
Log.d("AnitubeExtractor", "Following link redirection to $newLink")
|
Log.d(tag, "Following link redirection to $newLink")
|
||||||
|
|
||||||
return getAdsUrl(serverUrl, thumbUrl, newLink, newHeaders)
|
return getAdsUrl(serverUrl, thumbUrl, newLink, newHeaders)
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d("AnitubeExtractor", "Fetching ADS URL")
|
val referer: String = docLink.location() ?: link
|
||||||
|
|
||||||
val newHeaders = linkHeaders.newBuilder().set("Referer", link).build()
|
Log.d(tag, "Final URL: $referer")
|
||||||
|
Log.d(tag, "Fetching ADS URL")
|
||||||
|
|
||||||
|
val newHeaders = linkHeaders.newBuilder().set("Referer", referer).build()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
val adsUrl =
|
val adsUrl =
|
||||||
client.newCall(
|
client.newCall(
|
||||||
GET(
|
GET(
|
||||||
"$SITE_URL/playerricas.php?name=apphd/$videoName&img=$thumbUrl&url=$serverUrl",
|
"$SITE_URL/playerricas.php?name=apphd/$videoName&img=$thumbUrl&pais=pais=BR&time=$now&url=$serverUrl",
|
||||||
headers = newHeaders,
|
headers = newHeaders,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.execute()
|
.execute()
|
||||||
.body.string()
|
.body.string()
|
||||||
.substringAfter("ADS_URL")
|
.let {
|
||||||
.substringAfter('"')
|
Regex("""ADS_URL\s*=\s*['"]([^'"]+)['"]""")
|
||||||
.substringBefore('"')
|
.find(it)?.groups?.get(1)?.value
|
||||||
|
?: ""
|
||||||
|
}
|
||||||
|
|
||||||
if (adsUrl.startsWith("http")) {
|
if (adsUrl.startsWith("http")) {
|
||||||
Log.d("AnitubeExtractor", "ADS URL: $adsUrl")
|
Log.d(tag, "ADS URL: $adsUrl")
|
||||||
return adsUrl
|
return adsUrl
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try default url
|
// Try default url
|
||||||
Log.e("AnitubeExtractor", "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://www.popads.net/js/adblock.js"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,19 +82,24 @@ class AnitubeExtractor(
|
||||||
var authCode = preferences.getString(PREF_AUTHCODE_KEY, "")!!
|
var authCode = preferences.getString(PREF_AUTHCODE_KEY, "")!!
|
||||||
|
|
||||||
if (authCode.isNotBlank()) {
|
if (authCode.isNotBlank()) {
|
||||||
Log.d("AnitubeExtractor", "AuthCode found in preferences")
|
Log.d(tag, "AuthCode found in preferences")
|
||||||
|
|
||||||
val isSuccessful = client.newCall(GET("${serverUrl}$authCode", headers = headers))
|
val request = Request.Builder()
|
||||||
.execute().isSuccessful
|
.head()
|
||||||
|
.url("${serverUrl}$authCode")
|
||||||
|
.headers(headers)
|
||||||
|
.build()
|
||||||
|
|
||||||
if (isSuccessful) {
|
val response = client.newCall(request).execute()
|
||||||
Log.d("AnitubeExtractor", "AuthCode is OK")
|
|
||||||
|
if (response.isSuccessful || response.code == 500) {
|
||||||
|
Log.d(tag, "AuthCode is OK")
|
||||||
return authCode
|
return authCode
|
||||||
}
|
}
|
||||||
Log.d("AnitubeExtractor", "AuthCode is invalid")
|
Log.d(tag, "AuthCode is invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d("AnitubeExtractor", "Fetching new authCode")
|
Log.d(tag, "Fetching new authCode")
|
||||||
|
|
||||||
val adsUrl = getAdsUrl(serverUrl, thumbUrl, link, headers)
|
val adsUrl = getAdsUrl(serverUrl, thumbUrl, link, headers)
|
||||||
|
|
||||||
|
@ -116,7 +132,7 @@ class AnitubeExtractor(
|
||||||
|
|
||||||
if (publicidade.isBlank()) {
|
if (publicidade.isBlank()) {
|
||||||
Log.e(
|
Log.e(
|
||||||
"AnitubeExtractor",
|
tag,
|
||||||
"Failed to fetch \"publicidade\" code, the current response: $publicidade",
|
"Failed to fetch \"publicidade\" code, the current response: $publicidade",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -137,11 +153,11 @@ class AnitubeExtractor(
|
||||||
.substringBefore('"')
|
.substringBefore('"')
|
||||||
|
|
||||||
if (authCode.startsWith("?")) {
|
if (authCode.startsWith("?")) {
|
||||||
Log.d("AnitubeExtractor", "Auth code fetched successfully")
|
Log.d(tag, "Auth code fetched successfully")
|
||||||
preferences.edit().putString(PREF_AUTHCODE_KEY, authCode).commit()
|
preferences.edit().putString(PREF_AUTHCODE_KEY, authCode).commit()
|
||||||
} else {
|
} else {
|
||||||
Log.e(
|
Log.e(
|
||||||
"AnitubeExtractor",
|
tag,
|
||||||
"Failed to fetch auth code, the current response: $authCode",
|
"Failed to fetch auth code, the current response: $authCode",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -167,7 +183,8 @@ class AnitubeExtractor(
|
||||||
}
|
}
|
||||||
} + listOf("appfullhd")
|
} + listOf("appfullhd")
|
||||||
|
|
||||||
val firstLink = doc.selectFirst("div.video_container > a, div.playerContainer > a")!!.attr("href")
|
val firstLink =
|
||||||
|
doc.selectFirst("div.video_container > a, div.playerContainer > a")!!.attr("href")
|
||||||
|
|
||||||
val authCode = getAuthCode(serverUrl, thumbUrl, firstLink)
|
val authCode = getAuthCode(serverUrl, thumbUrl, firstLink)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
ext {
|
ext {
|
||||||
extName = 'Hinata Soul'
|
extName = 'Hinata Soul'
|
||||||
extClass = '.HinataSoul'
|
extClass = '.HinataSoul'
|
||||||
extVersionCode = 7
|
extVersionCode = 8
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.util.asJsoup
|
||||||
import okhttp3.FormBody
|
import okhttp3.FormBody
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
|
||||||
class HinataSoulExtractor(
|
class HinataSoulExtractor(
|
||||||
|
@ -17,6 +18,8 @@ class HinataSoulExtractor(
|
||||||
private val preferences: SharedPreferences,
|
private val preferences: SharedPreferences,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
private val tag by lazy { javaClass.simpleName }
|
||||||
|
|
||||||
private fun getAdsUrl(
|
private fun getAdsUrl(
|
||||||
serverUrl: String,
|
serverUrl: String,
|
||||||
thumbUrl: String,
|
thumbUrl: String,
|
||||||
|
@ -25,45 +28,53 @@ class HinataSoulExtractor(
|
||||||
): String {
|
): String {
|
||||||
val videoName = serverUrl.split('/').last()
|
val videoName = serverUrl.split('/').last()
|
||||||
|
|
||||||
val docLink = client.newCall(GET(link, headers = linkHeaders)).execute().asJsoup()
|
Log.d(tag, "Accessing the link $link")
|
||||||
|
val response = client.newCall(GET(link, headers = linkHeaders)).execute()
|
||||||
|
val docLink = response.asJsoup()
|
||||||
|
|
||||||
val refresh = docLink.selectFirst("meta[http-equiv=refresh]")?.attr("content")
|
val refresh = docLink.selectFirst("meta[http-equiv=refresh]")?.attr("content")
|
||||||
|
|
||||||
if (!refresh.isNullOrBlank()) {
|
if (!refresh.isNullOrBlank()) {
|
||||||
val newLink = refresh.substringAfter("=")
|
val newLink = refresh.substringAfter("=")
|
||||||
val newHeaders = linkHeaders.newBuilder().set("Referer", link).build()
|
val newHeaders = linkHeaders.newBuilder().set("Referer", link).build()
|
||||||
Log.d("HinataSoulExtractor", "Following link redirection to $newLink")
|
Log.d(tag, "Following link redirection to $newLink")
|
||||||
|
|
||||||
return getAdsUrl(serverUrl, thumbUrl, newLink, newHeaders)
|
return getAdsUrl(serverUrl, thumbUrl, newLink, newHeaders)
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d("HinataSoulExtractor", "Fetching ADS URL")
|
val referer: String = docLink.location() ?: link
|
||||||
|
|
||||||
val newHeaders = linkHeaders.newBuilder().set("Referer", link).build()
|
Log.d(tag, "Final URL: $referer")
|
||||||
|
Log.d(tag, "Fetching ADS URL")
|
||||||
|
|
||||||
|
val newHeaders = linkHeaders.newBuilder().set("Referer", referer).build()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
val adsUrl =
|
val adsUrl =
|
||||||
client.newCall(
|
client.newCall(
|
||||||
GET(
|
GET(
|
||||||
"$SITE_URL/playerricas.php?name=apphd/$videoName&img=$thumbUrl&url=$serverUrl",
|
"$SITE_URL/playerricas.php?name=apphd/$videoName&img=$thumbUrl&pais=pais=BR&time=$now&url=$serverUrl",
|
||||||
headers = newHeaders,
|
headers = newHeaders,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.execute()
|
.execute()
|
||||||
.body.string()
|
.body.string()
|
||||||
.substringAfter("ADS_URL")
|
.let {
|
||||||
.substringAfter('"')
|
Regex("""ADS_URL\s*=\s*['"]([^'"]+)['"]""")
|
||||||
.substringBefore('"')
|
.find(it)?.groups?.get(1)?.value
|
||||||
|
?: ""
|
||||||
|
}
|
||||||
|
|
||||||
if (adsUrl.startsWith("http")) {
|
if (adsUrl.startsWith("http")) {
|
||||||
Log.d("HinataSoulExtractor", "ADS URL: $adsUrl")
|
Log.d(tag, "ADS URL: $adsUrl")
|
||||||
return adsUrl
|
return adsUrl
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try default url
|
// Try default url
|
||||||
Log.e("HinataSoulExtractor", "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://www.popads.net/js/adblock.js"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,19 +82,24 @@ class HinataSoulExtractor(
|
||||||
var authCode = preferences.getString(PREF_AUTHCODE_KEY, "")!!
|
var authCode = preferences.getString(PREF_AUTHCODE_KEY, "")!!
|
||||||
|
|
||||||
if (authCode.isNotBlank()) {
|
if (authCode.isNotBlank()) {
|
||||||
Log.d("HinataSoulExtractor", "AuthCode found in preferences")
|
Log.d(tag, "AuthCode found in preferences")
|
||||||
|
|
||||||
val isSuccessful = client.newCall(GET("${serverUrl}$authCode", headers = headers))
|
val request = Request.Builder()
|
||||||
.execute().isSuccessful
|
.head()
|
||||||
|
.url("${serverUrl}$authCode")
|
||||||
|
.headers(headers)
|
||||||
|
.build()
|
||||||
|
|
||||||
if (isSuccessful) {
|
val response = client.newCall(request).execute()
|
||||||
Log.d("HinataSoulExtractor", "AuthCode is OK")
|
|
||||||
|
if (response.isSuccessful || response.code == 500) {
|
||||||
|
Log.d(tag, "AuthCode is OK")
|
||||||
return authCode
|
return authCode
|
||||||
}
|
}
|
||||||
Log.d("HinataSoulExtractor", "AuthCode is invalid")
|
Log.d(tag, "AuthCode is invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d("HinataSoulExtractor", "Fetching new authCode")
|
Log.d(tag, "Fetching new authCode")
|
||||||
|
|
||||||
val adsUrl = getAdsUrl(serverUrl, thumbUrl, link, headers)
|
val adsUrl = getAdsUrl(serverUrl, thumbUrl, link, headers)
|
||||||
|
|
||||||
|
@ -116,7 +132,7 @@ class HinataSoulExtractor(
|
||||||
|
|
||||||
if (publicidade.isBlank()) {
|
if (publicidade.isBlank()) {
|
||||||
Log.e(
|
Log.e(
|
||||||
"HinataSoulExtractor",
|
tag,
|
||||||
"Failed to fetch \"publicidade\" code, the current response: $publicidade",
|
"Failed to fetch \"publicidade\" code, the current response: $publicidade",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -137,11 +153,11 @@ class HinataSoulExtractor(
|
||||||
.substringBefore('"')
|
.substringBefore('"')
|
||||||
|
|
||||||
if (authCode.startsWith("?")) {
|
if (authCode.startsWith("?")) {
|
||||||
Log.d("HinataSoulExtractor", "Auth code fetched successfully")
|
Log.d(tag, "Auth code fetched successfully")
|
||||||
preferences.edit().putString(PREF_AUTHCODE_KEY, authCode).commit()
|
preferences.edit().putString(PREF_AUTHCODE_KEY, authCode).commit()
|
||||||
} else {
|
} else {
|
||||||
Log.e(
|
Log.e(
|
||||||
"HinataSoulExtractor",
|
tag,
|
||||||
"Failed to fetch auth code, the current response: $authCode",
|
"Failed to fetch auth code, the current response: $authCode",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -167,7 +183,8 @@ class HinataSoulExtractor(
|
||||||
}
|
}
|
||||||
} + listOf("appfullhd")
|
} + listOf("appfullhd")
|
||||||
|
|
||||||
val firstLink = doc.selectFirst("div.video_container > a, div.playerContainer > a")!!.attr("href")
|
val firstLink =
|
||||||
|
doc.selectFirst("div.video_container > a, div.playerContainer > a")!!.attr("href")
|
||||||
|
|
||||||
val authCode = getAuthCode(serverUrl, thumbUrl, firstLink)
|
val authCode = getAuthCode(serverUrl, thumbUrl, firstLink)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue