diff --git a/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt b/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt index 4f70d0797..56e8e3e6e 100644 --- a/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt +++ b/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt @@ -4,119 +4,147 @@ import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.Cookie +import okhttp3.CookieJar import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.FormBody +import okhttp3.HttpUrl import okhttp3.OkHttpClient +import okhttp3.internal.commonEmptyRequestBody class GoogleDriveExtractor(private val client: OkHttpClient, private val headers: Headers) { companion object { - private const val GOOGLE_DRIVE_HOST = "drive.google.com" - private const val ACCEPT = "text/html,application/xhtml+xml," + - "application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" + private const val ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" } - private val noRedirectClient by lazy { - client.newBuilder().followRedirects(false).build() - } + private val cookieList = client.cookieJar.loadForRequest("https://drive.google.com".toHttpUrl()) - // Default / headers for most requests - private fun headersBuilder(block: Headers.Builder.() -> Unit) = headers.newBuilder() - .set("Accept", ACCEPT) - .set("Connection", "keep-alive") - .set("Host", GOOGLE_DRIVE_HOST) - .set("Origin", "https://$GOOGLE_DRIVE_HOST") - .set("Referer", "https://$GOOGLE_DRIVE_HOST/") - .apply { block() } + private val noRedirectClient = OkHttpClient.Builder() + .followRedirects(false) .build() - // Needs to be the form of `https://drive.google.com/uc?id=GOOGLEDRIVEITEMID` fun videosFromUrl(itemUrl: String, videoName: String = "Video"): List