From ec1ed7957a8dec7457bcf4a6277d31c2f387e02f Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Mon, 22 Aug 2022 20:27:10 +0200 Subject: [PATCH] Try fix crunchy --- Kamyroll/build.gradle.kts | 3 +- .../main/kotlin/com/lagradost/HttpSession.kt | 158 ++++++------------ .../kotlin/com/lagradost/KrunchyProvider.kt | 13 +- 3 files changed, 55 insertions(+), 119 deletions(-) diff --git a/Kamyroll/build.gradle.kts b/Kamyroll/build.gradle.kts index 596aa38..37a5de6 100644 --- a/Kamyroll/build.gradle.kts +++ b/Kamyroll/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 1 +version = 2 cloudstream { @@ -19,5 +19,4 @@ cloudstream { status = 1 // will be 3 if unspecified tvTypes = listOf("AnimeMovie", "Anime", "OVA") iconUrl = "https://www.google.com/s2/favicons?domain=crunchyroll.com&sz=%size%" - } \ No newline at end of file diff --git a/Kamyroll/src/main/kotlin/com/lagradost/HttpSession.kt b/Kamyroll/src/main/kotlin/com/lagradost/HttpSession.kt index efcf300..bce399b 100644 --- a/Kamyroll/src/main/kotlin/com/lagradost/HttpSession.kt +++ b/Kamyroll/src/main/kotlin/com/lagradost/HttpSession.kt @@ -1,110 +1,50 @@ package com.lagradost -////Credits https://github.com/ArjixWasTaken/CloudStream-3/blob/master/app/src/main/java/com/ArjixWasTaken/cloudstream3/utils/HttpSession.kt -//import com.lagradost.KrunchyProvider -//import khttp.responses.Response -//import khttp.structures.authorization.Authorization -//import khttp.structures.cookie.Cookie -//import khttp.structures.cookie.CookieJar -//import khttp.structures.files.FileLike -//import okhttp3.CookieJar -//import java.util.ArrayList -// -///** -// * An HTTP session manager. -// * -// * This class simply keeps cookies across requests. -// * -// * @property sessionCookies A cookie jar. -// */ -//class HttpSession { -// companion object { -// const val DEFAULT_TIMEOUT = 30.0 -// -// fun mergeCookies(cookie1: CookieJar, cookie2: Map?): Map { -// if (!cookie2.isNullOrEmpty()) { -// cookie1.putAll(cookie2) -// } -// return a -// } -// } -// -// val sessionCookies = CookieJar() -// -// fun get( -// url: String, -// headers: Map = mapOf(), -// params: Map = mapOf(), -// data: Any? = null, -// json: Any? = null, -// auth: Authorization? = null, -// cookies: Map? = null, -// timeout: Double = DEFAULT_TIMEOUT, -// allowRedirects: Boolean? = null, -// stream: Boolean = false, -// files: List = listOf(), -// ): Response { -// val res = -// khttp.get( -// url, -// headers, -// params, -// data, -// json, -// auth, -// mergeCookies(sessionCookies, cookies), -// timeout, -// allowRedirects, -// stream, -// files -// ) -// sessionCookies.putAll(res.cookies) -// sessionCookies.putAll( -// CookieJar( -// *res.headers -// .filter { it.key.toLowerCase() == "set-cookie" } -// .map { Cookie(it.value) } -// .toTypedArray() -// ) -// ) -// return res -// } -// -// fun post( -// url: String, -// headers: Map = mapOf(), -// params: Map = mapOf(), -// data: Any? = null, -// json: Any? = null, -// auth: Authorization? = null, -// cookies: Map? = null, -// timeout: Double = DEFAULT_TIMEOUT, -// allowRedirects: Boolean? = null, -// stream: Boolean = false, -// files: List = listOf() -// ): Response { -// val res = -// khttp.post( -// url, -// headers, -// params, -// data, -// json, -// auth, -// mergeCookies(sessionCookies, cookies), -// timeout, -// allowRedirects, -// stream, -// files -// ) -// sessionCookies.putAll(res.cookies) -// sessionCookies.putAll( -// CookieJar( -// *res.headers -// .filter { it.key.toLowerCase() == "set-cookie" } -// .map { Cookie(it.value) } -// .toTypedArray() -// ) -// ) -// return res -// } -//} \ No newline at end of file +//Credits https://github.com/ArjixWasTaken/CloudStream-3/blob/master/app/src/main/java/com/ArjixWasTaken/cloudstream3/utils/HttpSession.kt +import com.lagradost.cloudstream3.app +import com.lagradost.nicehttp.NiceResponse + +/** + * An HTTP session manager. + * + * This class simply keeps cookies across requests. + * + * @property sessionCookies A cookie jar. + * + * TODO: be replaced with built in Session once that works as it should. + */ +class HttpSession { + private val sessionCookies: MutableMap = mutableMapOf() + + suspend fun get( + url: String, + headers: Map = mapOf(), + cookies: Map = mapOf(), + ): NiceResponse { + sessionCookies.putAll(cookies) + val res = + app.get( + url, + headers, + cookies = sessionCookies, + ) + sessionCookies.putAll(res.headers.filter { it.first.lowercase() == "set-cookie" }) + return res + } + + suspend fun post( + url: String, + headers: Map = mapOf(), + cookies: Map = mapOf(), + ): NiceResponse { + sessionCookies.putAll(cookies) + val res = + app.post( + url, + headers, + cookies = sessionCookies, + ) + + sessionCookies.putAll(res.headers.filter { it.first.lowercase() == "set-cookie" }) + return res + } +} \ No newline at end of file diff --git a/Kamyroll/src/main/kotlin/com/lagradost/KrunchyProvider.kt b/Kamyroll/src/main/kotlin/com/lagradost/KrunchyProvider.kt index 123b5a2..2cf771a 100644 --- a/Kamyroll/src/main/kotlin/com/lagradost/KrunchyProvider.kt +++ b/Kamyroll/src/main/kotlin/com/lagradost/KrunchyProvider.kt @@ -1,14 +1,13 @@ package com.lagradost import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.DeserializationFeature -import com.fasterxml.jackson.databind.json.JsonMapper -import com.fasterxml.jackson.module.kotlin.KotlinModule import com.lagradost.cloudstream3.* -import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.AppUtils.parseJson +import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.M3u8Helper +import com.lagradost.cloudstream3.utils.Qualities +import com.lagradost.cloudstream3.utils.getQualityFromName import com.lagradost.nicehttp.NiceResponse -import com.lagradost.nicehttp.Session import org.jsoup.Jsoup import java.net.URI import java.util.* @@ -26,7 +25,7 @@ class KrunchyGeoBypasser { "User-Agent" to "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36".toAscii() ) var sessionId: String? = null - val session = Session(app.baseClient) + val session = HttpSession() } data class KrunchySession( @@ -68,8 +67,6 @@ class KrunchyProvider : MainAPI() { companion object { val crUnblock = KrunchyGeoBypasser() val episodeNumRegex = Regex("""Episode (\d+)""") - val mapper: JsonMapper = JsonMapper.builder().addModule(KotlinModule()) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build() } override var mainUrl = "http://www.crunchyroll.com"