applied the requested changes

This commit is contained in:
Arjix 2021-08-18 02:00:13 +03:00 committed by GitHub
parent 2ae5f4963f
commit d490f4073b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,6 +5,8 @@ import khttp.structures.cookie.CookieJar
import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.module.kotlin.readValue import com.fasterxml.jackson.module.kotlin.readValue
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
import com.lagradost.cloudstream3.utils.getQualityFromName
import org.jsoup.Jsoup import org.jsoup.Jsoup
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
@ -30,10 +32,10 @@ class AnimePaheProvider : MainAPI() {
} }
val YTSM = "ysmm = '([^']+)".toRegex() val YTSM = "ysmm = '([^']+)".toRegex()
val KWIK_PARAMS_RE = """\(\"(\w+)\",\d+,\"(\w+)\",(\d+),(\d+),\d+\)""".toRegex() val KWIK_PARAMS_RE = Regex("""\(\"(\w+)\",\d+,\"(\w+)\",(\d+),(\d+),\d+\)""")
val KWIK_D_URL = "action=\"([^\"]+)\"".toRegex() val KWIK_D_URL = Regex("action=\"([^\"]+)\"")
val KWIK_D_TOKEN = "value=\"([^\"]+)\"".toRegex() val KWIK_D_TOKEN = Regex("value=\"([^\"]+)\"")
val YOUTUBE_VIDEO_LINK = """(^(?:https?:)?(?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube(?:\-nocookie)?\.(?:[A-Za-z]{2,4}|[A-Za-z]{2,3}\.[A-Za-z]{2})\/)(?:watch|embed\/|vi?\/)*(?:\?[\w=&]*vi?=)?[^#&\?\/]{11}.*${'$'})""".toRegex() val YOUTUBE_VIDEO_LINK = Regex("""(^(?:https?:)?(?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube(?:\-nocookie)?\.(?:[A-Za-z]{2,4}|[A-Za-z]{2,3}\.[A-Za-z]{2})\/)(?:watch|embed\/|vi?\/)*(?:\?[\w=&]*vi?=)?[^#&\?\/]{11}.*${'$'})""")
} }
override val mainUrl: String override val mainUrl: String
@ -224,8 +226,8 @@ class AnimePaheProvider : MainAPI() {
} }
} }
override fun load(url: String): LoadResponse { override fun load(url: String): LoadResponse? {
try { return normalSafeApiCall {
val html = khttp.get(url).text val html = khttp.get(url).text
val doc = Jsoup.parse(html) val doc = Jsoup.parse(html)
@ -240,6 +242,7 @@ class AnimePaheProvider : MainAPI() {
} else { } else {
null null
} }
val episodes = generateListOfEpisodes(url) ?: ArrayList<AnimeEpisode>() val episodes = generateListOfEpisodes(url) ?: ArrayList<AnimeEpisode>()
val year = """<strong>Aired:<\/strong>[^,]*, (\d+)""".toRegex().find(html)!!.destructured?.component1()?.toIntOrNull() val year = """<strong>Aired:<\/strong>[^,]*, (\d+)""".toRegex().find(html)!!.destructured?.component1()?.toIntOrNull()
val status = when ("""<strong>Status:<\/strong>[^a]*a href=[\"']\/anime\/(.*?)[\"']""".toRegex().find(html)!!.destructured?.component1().toString()) { val status = when ("""<strong>Status:<\/strong>[^a]*a href=[\"']\/anime\/(.*?)[\"']""".toRegex().find(html)!!.destructured?.component1().toString()) {
@ -262,7 +265,7 @@ class AnimePaheProvider : MainAPI() {
} }
} }
return AnimeLoadResponse( AnimeLoadResponse(
title, title,
japTitle, japTitle,
title.toString(), title.toString(),
@ -284,10 +287,6 @@ class AnimePaheProvider : MainAPI() {
null, null,
trailer trailer
) )
} catch (e: Exception) {
println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
e.printStackTrace()
throw e
} }
} }
@ -330,7 +329,7 @@ class AnimePaheProvider : MainAPI() {
acc += (when(isNumber("$i")) { acc += (when(isNumber("$i")) {
true -> "$i".toLong() true -> "$i".toLong()
false -> "0".toLong() false -> "0".toLong()
}) * pow(s1, n) }) * Math.pow(s1.toDouble(), n.toDouble()).toInt()
} }
var k = "" var k = ""
@ -432,11 +431,16 @@ class AnimePaheProvider : MainAPI() {
var responseCode = 302 var responseCode = 302
var adflyContent: khttp.responses.Response? = null var adflyContent: khttp.responses.Response? = null
var tries = 0
while (responseCode != 200) { while (responseCode != 200 && tries < 20) {
adflyContent = khttp.get(khttp.get(adflyUri, cookies=cookies, allowRedirects = false).headers.getValue("location"), cookies=cookies, allowRedirects = false) adflyContent = khttp.get(khttp.get(adflyUri, cookies=cookies, allowRedirects = false).headers.getValue("location"), cookies=cookies, allowRedirects = false)
cookies.putAll(adflyContent.cookies.toMap()) cookies.putAll(adflyContent.cookies.toMap())
responseCode = adflyContent.statusCode responseCode = adflyContent.statusCode
++tries
}
if (tries > 19) {
throw Exception("Failed to bypass adfly.")
} }
return decodeAdfly(YTSM.find(adflyContent?.text.toString())!!.destructured.component1()) return decodeAdfly(YTSM.find(adflyContent?.text.toString())!!.destructured.component1())
} }
@ -452,8 +456,9 @@ class AnimePaheProvider : MainAPI() {
var content: khttp.responses.Response? = null var content: khttp.responses.Response? = null
var code = 419 var code = 419
var tries = 0
while (code != 302) { while (code != 302 && tries < 20) {
content = khttp.post( content = khttp.post(
uri, uri,
allowRedirects = false, allowRedirects = false,
@ -462,6 +467,10 @@ class AnimePaheProvider : MainAPI() {
cookies=cookieStrToMap(fContent.headers.getValue("set-cookie").replace("path=/,", "")) cookies=cookieStrToMap(fContent.headers.getValue("set-cookie").replace("path=/,", ""))
) )
code = content.statusCode code = content.statusCode
++tries
}
if (tries > 19) {
throw Exception("Failed to extract the stream uri from kwik.")
} }
return content?.headers?.getValue("location").toString() return content?.headers?.getValue("location").toString()
} }
@ -502,7 +511,7 @@ class AnimePaheProvider : MainAPI() {
"KWIK - ${quality.key} [${quality.value.audio ?: "jpn"}]", "KWIK - ${quality.key} [${quality.value.audio ?: "jpn"}]",
getStreamUrlFromKwik(quality.value.kwikAdfly), getStreamUrlFromKwik(quality.value.kwikAdfly),
"", "",
quality.key.toInt(), getQualityFromName(quality.key),
false false
) )
) )